You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建仅包含指定表的AWS RDS MySQL 5.7只读副本

问题解答:AWS RDS MySQL 5.7 只读副本仅复制指定表的可行性

核心结论

原生AWS RDS MySQL只读副本的replication filters(如replicate-do-db、replicate-do-table)无法实现初始仅复制指定库表,这些规则仅作用于快照恢复完成后的增量binlog同步阶段。你遇到的全量复制所有库表的情况是RDS的固有机制导致的。

原因说明

RDS创建只读副本的流程是:

  1. 先对源库创建全量快照(包含所有库表)
  2. 用该快照初始化副本实例
  3. 启动基于binlog的增量同步,此时才会应用参数组中的过滤规则,只同步指定的库表操作

因此,无论你提前在参数组中配置什么过滤规则,副本的初始数据都是源库的全量快照,后续增量只会同步符合规则的操作,但初始的全量数据已经占据了存储空间,无法通过过滤规则缩减初始副本的大小。

针对你测试场景的补充

你提到同区域副本无法设置独立参数组,只能先绑定参数组到源库再创建副本——即便如此,初始快照的全量特性不会改变,所以测试用例1和2都会复制所有4个数据库,这是正常现象。

无DMS的替代方案(原生MySQL/RDS方式)

如果不想用DMS,要实现初始仅包含指定表的副本,可以尝试以下手动流程:

  1. 导出指定表并初始化副本
    • 使用mysqldump从源库导出目标表(例如:mysqldump -h 源库端点 -u 用户名 -p test test_1 test_2 > target_tables.sql),注意加上--single-transaction保证InnoDB数据一致性
    • 创建一个全新的空RDS MySQL 5.7实例,配置与源库匹配的参数组(包含replicate-do-table等过滤规则)
    • 将导出的SQL文件导入新实例,完成初始数据构建
  2. 开启手动增量复制
    • 在源库执行SHOW MASTER STATUS获取当前binlog文件名和位置
    • 在新实例上执行CHANGE MASTER TO命令指向源库,指定上述binlog位置,启动复制
    • 后续增量同步会自动应用过滤规则,只同步指定表的操作

这个流程能让副本初始仅包含需要的表,避免全量快照的存储浪费,但需要手动维护复制链路,不如原生只读副本自动化程度高。

其他注意事项

  • 如果尝试在副本创建后删除不需要的库表,RDS的存储空间不会自动释放(存储按实际使用量计费,但删除数据后的空闲空间不会被回收,除非创建新快照并恢复到新实例)
  • 跨区域副本虽然允许设置独立参数组,但初始创建依然依赖源库全量快照,所以同样无法解决初始存储占用问题

内容的提问来源于stack exchange,提问作者HoratioNullbuilt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:42:46