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

如何通过AWS DMS跨AWS账户同步Postgres RDS指定Schema(低停机)

如何用AWS DMS实现Postgres RDS跨账户仅指定Schema的低停机迁移

完全可以用AWS DMS实现这个需求,而且能做到极低停机(仅在最终切换时需要短暂暂停写入),以下是具体操作步骤和关键细节:

1. 源端与目标端预配置

源Postgres RDS准备

  • 开启逻辑复制:修改源RDS的参数组,设置rds.logical_replication=1,保存后重启实例(开启该参数后,RDS会自动将wal_level调整为logical,这是CDC同步的必要条件)。
  • 创建DMS专用用户:在源库执行SQL,赋予必要权限:
    CREATE USER dms_replication WITH LOGIN PASSWORD 'your_secure_password';
    GRANT REPLICATION LOGIN TO dms_replication;
    GRANT USAGE ON SCHEMA your_target_schema TO dms_replication;
    GRANT SELECT ON ALL TABLES IN SCHEMA your_target_schema TO dms_replication;
    ALTER DEFAULT PRIVILEGES IN SCHEMA your_target_schema GRANT SELECT ON TABLES TO dms_replication;
    
  • 调整安全组:允许目标账户的DMS复制实例访问源RDS的5432端口(可通过添加目标复制实例的IP段,或配置跨账户VPC peering后开放对应VPC的访问)。

目标Postgres RDS准备

  • 预创建目标Schema:确保目标库中存在与源端同名的Schema(可通过CREATE SCHEMA your_target_schema;手动创建,也可让DMS自动迁移结构,推荐先手动同步结构以避免差异)。
  • 创建DMS目标用户:在目标库执行SQL,赋予权限:
    CREATE USER dms_target WITH LOGIN PASSWORD 'your_secure_password';
    GRANT CREATE ON SCHEMA your_target_schema TO dms_target;
    GRANT INSERT, UPDATE, DELETE, SELECT ON ALL TABLES IN SCHEMA your_target_schema TO dms_target;
    ALTER DEFAULT PRIVILEGES IN SCHEMA your_target_schema GRANT INSERT, UPDATE, DELETE, SELECT ON TABLES TO dms_target;
    

2. 跨账户网络配置

如果源和目标RDS在不同AWS账户,建议通过VPC对等连接实现安全的网络连通:

  • 在源账户发起VPC peering请求,目标账户接受后,配置双方VPC的路由表,添加对方VPC的CIDR路由。
  • 确保源RDS和目标RDS的安全组都开放5432端口给对方VPC的CIDR范围。

3. AWS DMS任务配置

创建复制实例

在目标账户的AWS DMS控制台创建复制实例,选择合适的规格(12GB数据量选t3.medium级别即可),确保实例所在VPC能连通源端RDS。

创建端点

  • 源端点:选择PostgreSQL引擎,填写源RDS的端点地址、端口、数据库名、之前创建的dms_replication用户和密码。
  • 目标端点:同样选择PostgreSQL引擎,填写目标RDS的连接信息和dms_target用户凭证。

配置表映射(核心:指定仅同步目标Schema)

在创建DMS迁移任务时,重点配置表映射,通过规则过滤仅同步指定的Schema:

  • 选择“使用JSON编辑器”,输入如下规则(替换your_target_schema为实际Schema名称):
    {
      "rules": [
        {
          "rule-type": "selection",
          "rule-id": "1",
          "rule-name": "include_target_schema",
          "object-locator": {
            "schema-name": "your_target_schema",
            "table-name": "%"
          },
          "rule-action": "include"
        }
      ]
    }
    
    这个规则会包含指定Schema下的所有表,自动排除其他Schema的对象。

任务运行模式

选择Full load plus ongoing replication模式:

  • 先执行全量数据迁移,将源端指定Schema的现有数据同步到目标端。
  • 全量完成后自动切换到CDC(变更数据捕获)模式,实时同步源端的增量变更(插入、更新、删除)。

4. 最终切换与验证

  • 全量迁移完成后,通过DMS控制台的任务监控确认数据同步正常,也可手动对比源和目标库的表行数、关键数据验证一致性。
  • 短暂暂停业务写入:等待DMS同步完最后一批增量变更(可通过查看任务的“CDC应用延迟”确认延迟为0)。
  • 切换业务连接到目标RDS,验证业务功能正常。
  • 确认无误后,停止DMS迁移任务,清理不必要的资源(如复制实例、端点)。

注意事项

  • 源端的触发器、存储过程、函数等对象,DMS不会自动迁移,需要手动同步到目标端。
  • 确保源和目标PostgreSQL版本兼容(DMS支持PostgreSQL 9.6及以上版本)。
  • 如果源Schema存在外键约束,建议在全量迁移前暂时禁用,迁移完成后再启用,避免全量同步时出现约束冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:45:29