配置 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
如果您使用的是Amazon Web Services RDS 上托管的 PostgreSQL,则必须设立rds.logical_replication
参数设置为 1
。 有关详细信息,请参阅 在 上启用逻辑复制Amazon Web Services 。设置参数后,必须重新启动数据库实例。
提示
您可以使用以下查询来检查Amazon Web Services 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依赖开源 DebeziumConnector来捕获行级更改。 有关更多详细信息,请参阅 Debezium PostgreSQL。