配置 PostgreSQL 的迁移先决条件
要从 PostgreSQL 源数据库运行同步作业,可能需要对数据库进行一些配置更改。 如果 Relational Migrator 确定数据库需要更改配置,它会自动生成包含所需更改的 SQL 脚本。 建议让数据库管理员 (DBA) 查看此脚本中的命令并在数据库服务器上执行这些命令。 这些说明为两种类型的同步作业配置 PostgreSQL:
快照同步作业会迁移所有数据,然后停止。
连续同步作业运行快照,然后进入 CDC 阶段以连续复制数据更改。
开始之前
如果 PostgreSQL 配置为集群,Relational Migrator 必须连接到主服务器。
步骤
对于针对 PostgreSQL 的快照作业,服务帐户需要模式 USAGE
和表SELECT
权限。
GRANT USAGE ON SCHEMA <schema_name> TO <database_user_name>; GRANT SELECT ON TABLE <schema_name>.<table_name> TO <database_user_name>;
启用逻辑复制
默认情况下可能未启用逻辑复制。要启用逻辑复制,请更改 wal_level postgresql.conf 配置文件 中的配置 。更改配置文件后, 必须重新启动数据库实例 。
wal_level = logical
如果您使用的是 AWS RDS 上托管的 PostgreSQL,则必须将rds.logical_replication
参数设置为1
。有关详细信息,请参阅 在 AWS 上启用逻辑复制 。设置参数后, 必须重新启动数据库实例 。
提示
您可以使用以下查询来检查您的 AWS RDS 实例是否启用了逻辑复制:
SELECT name,setting FROM pg_settings WHERE name IN ('wal_level','rds.logical_replication');
创建 SQL 复制角色
创建具有
REPLICATION
和LOGIN
数据库权限的角色:CREATE ROLE <role> REPLICATION LOGIN; 向该角色授予表
SELECT
和模式USAGE
权限。迁移中的每个表都需要一个GRANT SELECT
语句:GRANT USAGE ON SCHEMA <schema> TO <role>; GRANT SELECT ON <schema>.<table> TO <role>; -- ADDITIONAL GRANT SELECT STATEMENTS... 将角色授予服务帐户
将
<original_owner>
替换为参与表的所有者。GRANT <role> TO <original_owner>; GRANT <role> TO <database_user_name>;
创建发布
创建 发布 迁移中的每个表都必须在FOR
语句中指定,用逗号分隔:
CREATE PUBLICATION "MIGRATOR_<name>_PUBLICATION" FOR TABLE "<schema>"."<table1>","<schema>"."<table2>";
了解详情
Relational Migrator 依赖开源 Debezium 连接器来捕获行级更改。有关更多详细信息,请参阅 Debezium PostgreSQL。