你可以使用亚马逊的RDS复制特定的数据库或表吗?

22

我们正在使用Amazon RDS,主数据库正在向从数据库进行复制。

我们想创建一个新的从数据库,它只会从主数据库复制特定的数据库或表。

默认情况下,RDS只是将整个主数据库复制到从数据库中。但我们只想复制特定的表。我知道在MySQL中通常是可以做到这一点的,但我不确定RDS是否支持,并且我无法在任何地方找到答案。

在MySQL中存在这些设置,但我在RDS的自定义参数设置中没有看到它们,除非我漏掉了什么。

--replicate-ignore-db=db_name
--replicate-ignore-table=db_name.tbl_name
4个回答

14

使用RDS无法实现此功能。

您可以通过将不需要复制的表转换为Engine=Blackhole来“模拟”它,但是您必须编辑参数组并将“只读”设置为0,而不是默认值“{TrueIfReplica}”。

另外,您需要在EC2上运行自己的从服务器,以RDS服务器作为主服务器(如果您在RDS上运行MySQL 5.6,则可以实现此操作,但不适用于5.5或以下版本),但是设置过程极其复杂。


1
这已经改变了。这不再是正确的答案。Amazon关系型数据库服务(Amazon RDS)现在支持MySQL和MariaDB实例的复制过滤器。复制过滤器指定在读副本中复制哪些数据库和表。客户为每个副本创建包含或排除的数据库和表列表。 - Fariman Kashani

4
AWS RDS现在已经更新了其支持。关于数据库复制和实例复制,以下是rds参数的区别:

3

Amazon RDS for MySQL和MariaDB支持复制筛选

发布日期:2021年2月12日

Amazon关系型数据库服务(Amazon RDS)现在支持MySQL和MariaDB实例的复制筛选。复制筛选指定在读取副本中复制哪些数据库和表。客户端为每个副本创建包含或排除的数据库和表的列表。

要了解有关复制筛选及如何将其应用于您的实例的详细信息,请参阅MySQLMariaDB的Amazon RDS用户指南。

要配置复制筛选,请在读取副本上设置以下复制筛选参数:

  • replicate-do-db
  • replicate-ignore-db
  • replicate-do-table
  • replicate-ignore-table
  • replicate-wild-do-table
  • replicate-wild-ignore-table

这些参数按照它们列出的顺序进行评估。有关这些参数如何工作的更多信息,请参阅MySQL文档。


0

我的答案现在已经过时了。我建议阅读其他确认其可行性的答案。

正如Kat所说,不,他们没有提供这个功能。

我也不指望有这个功能,因为我们可以使用它来打破他们的即服务封装,这需要复制某些表以使主要功能正常工作。

一个我正在考虑的解决方法是,在主从复制链中创建一个基于EC2的MySQL实例(使用外部复制功能),应用这些过滤器,并预设所有表的黑洞引擎,以保持事情简单。

一个额外的好处是,RDS从服务器需要解析的二进制日志数据更少,因为它已经被预先过滤了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接