我正在尝试创建一个 DMS 任务以将数据从 RDS Postgres 实例迁移到 S3 存储桶。满载工作一切正常,但连续复制失败。它给出了这个错误:
“逻辑解码需要 wal_level >= 逻辑”
当我从 pg_settings 检查系统设置时,它显示设置“wal_level”的值为“replica”。因此,我尝试更改设置 wal_level,但我无法在 RDS 的参数组中找到此设置。我的RDS实例使用的是9.6版本的参数。
当我尝试“ALTER SYSTEM SET wal_level TO '逻辑'”时,它失败说“必须是超级用户才能执行 ALTER SYSTEM 命令”,即使用户处于 rds_superuser 角色下。
请推荐。
参数组中的参数名称为“rds.logic_replication”,需要修改为1。默认值为0。
此属性将“wal_level”值更改为“逻辑”。
您可以使用 AWS 管理的 PostgreSQL 数据库实例作为 AWS DMS 的源。您可以使用 AWS 托管的 PostgreSQL 源执行满载任务和变更数据捕获 (CDC) 任务。
为了做到这一点,你必须:
将数据库集群参数组中的
参数设置为rds.logical_replication
。此静态参数需要重新启动 数据库实例生效。1
作为应用此参数的一部分,AWS DMS 设置 wal_level, max_wal_senders、max_replication_slots 和 max_connections 参数。这些参数更改可以增加预写日志(WAL) 生成,因此仅在使用逻辑时设置 rds.logic_replication 复制槽。