如何实现两台AWS RDS MySQL实例的夜间自动同步?
实现同一区域AWS RDS MySQL实例每日夜间自动同步的方案
当然可以实现,以下是几种实用的方案,根据你的需求选择:
方案一:Lambda + EventBridge 定时执行数据同步脚本
这是最灵活的方案,适合自定义同步逻辑:
- 创建IAM角色,赋予Lambda以下权限:
- 访问RDS实例的连接权限(
rds-db:connect) - 若需临时存储备份文件,添加S3的读写权限(可选)
- 访问RDS实例的连接权限(
- 编写Lambda函数(推荐Python/Node.js):
- 从Secrets Manager读取两台RDS的用户名、密码和端点信息
- 使用
mysqldump命令或MySQL客户端库(如pymysql)从实例A导出全量数据 - 将导出的数据导入实例B(可根据需求提前清空B的目标库表,或编写增量同步逻辑)
- 针对InnoDB引擎,导出时添加
--single-transaction参数避免锁表,减少对实例A业务的影响
- 通过EventBridge设置定时规则,指定每日夜间(如凌晨2点)触发Lambda函数执行同步
方案二:利用RDS自动快照+实例替换(适合全量覆盖场景)
如果实例B可以接受被全量替换,这种方案更简便:
- 给实例A开启自动快照,设置快照时间为每日夜间提前于同步时间的节点
- 创建Lambda函数,调用AWS SDK(如
boto3)获取实例A最新的自动快照,将该快照恢复为新的RDS实例并替换原实例B - 用EventBridge定时触发该Lambda函数,实现自动全量同步
方案三:MySQL主从复制(按需启停,适合准实时/定时增量同步)
若需要保留B实例原有结构,仅同步每日增量,可采用临时主从模式:
- 将实例A设为主库,实例B设为从库,配置MySQL主从复制(开启二进制日志、创建复制用户、执行
CHANGE MASTER TO命令) - 在每日夜间触发同步任务:启动从库复制进程,待数据同步完成后停止复制,避免后续实时同步
- 这种方式需注意主从版本兼容性,以及日常配置维护成本
注意事项
- 确保实例A和B的MySQL版本一致,避免兼容性问题
- 尽量选择业务低峰期执行同步,减少对实例A的性能影响
- 同步过程中添加日志记录和CloudWatch告警,确保异常时能及时发现
内容的提问来源于stack exchange,提问作者manwithplan
相关产品推荐
相关产品推荐

