RDS跨实例单向同步问询:子集复制、非同步表修改可行性及步骤
解答:RDS指定表单向同步及后续操作问题
没问题,这个需求完全可以实现!而且同步完成后你完全能正常修改RDS B里的table4和table5,不会和同步任务冲突。下面我给你详细拆解可行性和操作步骤:
可行性确认
- 完全支持从RDS A到RDS B的指定表单向同步——只同步table1、table2、table3这三张表,RDS B里的table4、table5不会被同步任务干扰。同步完成后,你对这两张额外表的增删改查操作都能正常进行,不会影响同步链路的稳定性。
具体操作步骤
我分两种常用场景给你说明,你可以根据自己的需求选择:
场景1:需要实时增量同步(推荐用AWS DMS)
如果要让RDS A的表变更实时同步到RDS B,AWS Database Migration Service(DMS)是最省心的工具,步骤如下:
- 创建DMS复制实例:登录AWS控制台找到DMS服务,创建一个复制实例,规格根据你的数据量和同步频率选就行,关键要确保这个实例能同时访问RDS A和RDS B——比如放在同一个VPC里,或者给RDS的安全组开权限允许DMS实例访问。
- 配置源和目标端点:
- 源端点选RDS A,填好数据库的用户名、密码、库名,点测试连接确认能连上。
- 目标端点选RDS B,同样填好连接信息并测试连通性。
- 创建复制任务:
- 任务类型选「全量迁移+持续增量同步」(要是只需要一次性全量复制,选「仅全量迁移」就行)。
- 重点在表映射环节:选「选择特定表」,指定RDS A里的table1、table2、table3,映射到RDS B的同名表。这里要注意:RDS B里的这三张表结构得和RDS A完全一致,不然同步会失败——如果结构有差异,要么先调整B的表结构,要么在DMS里配置结构转换规则。
- 其他配置默认就行,启动任务等着就行。
- 验证效果:等全量迁移完成后,在RDS A里改一条table1的数据,看看RDS B里是不是同步更新了;同时去改table4、table5,确认操作完全正常。
场景2:只需要一次性全量复制(用mysqldump/pg_dump)
如果只是把RDS A的三张表数据一次性复制到RDS B,用数据库自带的导出导入工具就够了(以MySQL为例,PostgreSQL用pg_dump同理):
- 从RDS A导出指定表:
打开终端执行下面的命令,替换成你的实际信息:
输入RDS A的密码后,就会生成包含这三张表结构和数据的SQL文件。mysqldump -h 你的RDS_A端点地址 -u 用户名 -p 数据库名 table1 table2 table3 > rds_a_tables.sql - 导入到RDS B:
同样在终端执行:
输入RDS B的密码,等着导入完成就行。mysql -h 你的RDS_B端点地址 -u 用户名 -p 数据库名 < rds_a_tables.sql - 验证数据:登录RDS B检查table1-3的数据和A是否一致,同时试试修改table4、table5,确认没问题。
几个要注意的点
- 一定要确保RDS B里的table1、table2、table3结构和RDS A完全匹配,不然同步/导入会报错。
- 用DMS做增量同步的话,RDS A得开启二进制日志(MySQL)或者WAL(PostgreSQL),不然没法捕获增量变更。
- 同步过程中,尽量别在RDS B里修改table1-3的数据,不然可能会和A的同步数据冲突——DMS会以RDS A的数据为准覆盖冲突内容。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

