如何将全量数据从一个MySQL RDS复制到同账号同区域另一已有MySQL RDS库
同账号同区域MySQL RDS跨库全量复制(保留目标库原有数据)操作方案
前置条件
- 两个RDS实例均处于可用状态,你持有源库的只读权限、目标库的读写权限
- 两个RDS的网络互通:同VPC下需确保安全组入站规则放通对方的3306端口访问,跨VPC需先配置VPC对等连接
方案1:mysqldump导入导出(适用数据量<100G场景)
这是最轻量化的方案,无需额外开通AWS服务,操作步骤:
- 登录可同时访问两个RDS的EC2实例,或直接使用AWS CloudShell执行操作
- 执行导出命令,拉取源库全量业务数据(自动跳过mysql、information_schema等系统库,避免影响目标库原有配置)
mysqldump -h 源RDS端点地址 \ -u 源库账号 -p'源库密码' \ --databases 待复制的业务库名 \ --no-create-db --single-transaction \ --quick --lock-tables=false > source_full_dump.sql
关键参数说明:
--no-create-db:避免导入时强制创建同名库,适配目标库自定义库名的需求--single-transaction:保证导出数据的事务一致性,全程不会锁源库表
- 执行导入命令,将数据写入目标RDS
mysql -h 目标RDS端点地址 \ -u 目标库账号 -p'目标库密码' \ 目标库名 < source_full_dump.sql
- 导入完成后,手动校验两边的表数量、总行数、关键业务字段值,确认数据一致性。
方案2:AWS DMS数据库迁移服务(适用数据量>100G/需增量同步场景)
如果数据量较大,或者后续需要保持源和目标的增量同步,可使用AWS原生的DMS服务:
- 同一区域下创建DMS复制实例,配置和两个RDS同VPC或者互通的网络环境
- 分别创建源、目标RDS对应的DMS端点,测试连接正常
- 新建迁移任务,迁移类型选择仅迁移现有数据,如有增量同步需求可选择
迁移现有数据并持续复制变更 - 任务配置的转换规则中,选择保留目标端原有表和数据,如果存在同名表可按需选择
追加数据/冲突时覆盖/跳过冲突数据规则 - 启动迁移任务,等待任务完成后校验数据一致性即可。
注意事项:如果两个库存在同名表、主键/唯一键冲突的情况,需提前确认冲突处理规则,避免误覆盖目标库的原有业务数据。
内容的提问来源于stack exchange,提问作者DevopsinAfrica
相关产品推荐
相关产品推荐

