数据传输服务DTS

PostgreSQL迁移/同步到PostgreSQL

2023-10-24 06:42:05

数据库参数检查

1、lc_monetary参数配置一致性检查

失败原因处理建议
源库与目标库的lc_monetary参数配置不一致。
  • 将目标库lc_monetary参数设置与源库保持一致。

2、检查hot_standby_feedback参数配置

失败原因处理建议
源库是备库,源库中的参数hot_standby_feedback为off。
  1. 在全量同步启动前,将源库中的hot_standby_feedback参数设置为ON;

  2. 待全量同步结束后,将该参数改回原来的值。

3、校验源库参数wal_level是否为logical

失败原因处理建议
勾选增量迁移时,源库wal_level参数值非logical。

将源库的wal_level参数修改为logical。自建数据库修改方式可参考:

  • 使用超级用户在源库执行alter system set wal_level = logical;,然后重启数据库生效。

  • 或修改postgresql.conf配置文件,设置参数wal_level = logical,然后重启数据库生效。

4、源库参数max_replication_slots校验

失败原因处理建议
勾选增量迁移时,源库max_replication_slots参数值小于或等于当前已使用的复制槽数量。
  • 修改源库max_replication_slots参数值,使其大于当前已使用的复制槽数量,重启数据库

  • 查询当前已使用复制槽数量参考方式:

    Select count(1) from pg_replication_slots;

5、源库参数max_wal_senders校验

失败原因处理建议
勾选增量迁移时,源库max_wal_senders参数值小于或等于当前已使用的复制槽数量。
  • 修改源库max_wal_senders参数值,使其大于当前已使用的复制槽数量,重启数据库

  • 查询当前已使用复制槽数量参考方式:

    Select count(1) from pg_replication_slots;

6、待迁移表是否存在主键检查

失败原因处理建议
勾选增量迁移时,待迁移表中存在无主键的表。
  • 取消无主键的表的迁移

  • 为无主键的表加上主键。

7、源库主备状态检查

失败原因处理建议
勾选增量迁移时,源库非主机。
  • 选择集群中的主库作为数据源再进行同步任务。

数据库用户权限检查

1、源库用户权限检查

失败原因处理建议
源库账号没有对模式的USAGE权限。
  • 连接到 PostgreSQL 源数据库,使用超级用户或具有适当权限的用户执行以下命令,将待迁移schema的USAGE 权限授予给目标用户

    GRANT USAGE ON SCHEMA <schema_name> TO <username>;

源库账号没有对待迁移表的SELECT权限。
  • 连接到 PostgreSQL 源数据库,使用超级用户或具有适当权限的用户执行以下命令,将待迁移表的select 权限授予给目标用户

    GRANT SELECT ON TABLE <table_name> TO <username>;

源库账号没有对待迁移序列的SELECT权限。
  • 连接到 PostgreSQL 源数据库,使用超级用户或具有适当权限的用户执行以下命令,将待迁移序列的select 权限授予给目标用户

    GRANT SELECT ON SEQUENCE <sequence_name> TO <username>;

源库账号没有对系统表pg_catalog.pg_authid的SELECT权限。
  • 连接到 PostgreSQL 源数据库,使用超级用户或具有适当权限的用户执行以下命令,将系统表pg_catalog.pg_authid的 select 权限授予给目标用户

    GRANT SELECT ON pg_catalog.pg_authid TO <username>;

2、目标库用户权限检查

失败原因处理建议
目标库账号不具有当前database下创建schema的权限。
  • 连接到 PostgreSQL 目标数据库,使用超级用户或具有适当权限的用户执行以下命令

    GRANT CREATE, TEMPORARY, CONNECT ON DATABASE <database_name> TO <username>;

数据库版本检查

1、PostgreSQL版本检查

失败原因处理建议
  • 源库的版本不符合要求,大版本号不能低于9.4;

  • 目标库的版本不符合要求,大版本号不能低于9.5;

  • 当前源库的大版本号大于目标库的大版本号。

  • 目前DTS服务支持的源端PostgreSQL版本为9.4/9.5/9.6/10/11/12,支持的目标端PostgreSQL版本为9.5/9.6/10/11/12,请确保源库和目标库的PostgreSQL版本在要求范围内,且目标库版本不小于源库版本。

网络情况检查

1、源库连通性检查

失败原因处理建议
源数据库账号或密码不正确。输入正确的数据库账号和密码后重新执行预检查。
源数据库所在网络或服务器设置了防火墙。查看数据库所在的网络防火墙是否限制了DTS的IP地址段,如果有,关闭防火墙或者将DTS的IP地址加入防火墙白名单中。
源库迁移账号登录权限不足。登录源库,为迁移账号添加相应的远程访问权限。
网络互通问题。联系数据库所在机器管理人员和DTS部署机器管理人员排查问题。

2、目标库连通性检查

失败原因处理建议
目标数据库账号或密码不正确。输入正确的数据库账号和密码后重新执行预检查。
目标数据库所在网络或服务器设置了防火墙。查看数据库所在的网络防火墙是否限制了DTS的IP地址段,如果有,关闭防火墙或者将DTS的IP地址加入防火墙白名单中。
目标库迁移账号登录权限不足。登录目标库,为迁移账号添加相应的远程访问权限。
网络互通问题。联系数据库所在机器管理人员和DTS部署机器管理人员排查问题。

数据库对象检查

1、源数据库的模式名表名是否合法

失败原因处理建议
待迁移对象中存在非法的字符。
  • 更改含非法字符的待迁移对象名称;

  • 取消含非法字符的待迁移对象。

2、同名对象存在性检查

失败原因处理建议
目标库存在与待迁移对象同名的对象。
  1. 取消同名对象的迁移

  2.  将同名对象进行名称映射;

  3. 删除目标库存在的同名对象。

3、约束完整性检查

失败原因处理建议
待迁移子表依赖的父表没有被选择为迁移对象。
  1. 在迁移对象中加入相应父表

  2. 在迁移对象中移除相应子表;

  3. 删除相关外键依赖。

4、扩展插件兼容性检查

失败原因处理建议
  • 源库存在的扩展插件在目标库不存在;

  • 源库插件版本高于目标库对应的插件版本。

  • 在目标库创建对应的插件。

5、逻辑解码插件安装校验

失败原因处理建议

勾选增量迁移时,源库未安装逻辑解码插件

decoderbufs。

  • 在源库安装逻辑解码插件decoderbufs。

6、待迁移表是否存在主键检查

失败原因处理建议
勾选增量迁移时,待迁移表中存在无主键的表。
  • 取消无主键的表的迁移;

  • 为无主键的表加上主键。

7、无日志表存在性检查

失败原因处理建议
勾选增量迁移时,当前选择的待同步对象中的表存在无日志表。
  • 请确认这些表是否需要进行增量同步,如果需要,请去掉这些表的UNLOGGED属性,参考命令:

    ALTER TABLE <TABLE NAME> SET LOGGED;

8、DDL同步元数据检查

失败原因处理建议
  • DDL同步所需的元数据表未被勾选;

  • DDL同步所需的元数据表不存在;

  • DDL同步所需的函数不存在;

  • DDL同步所需的事件触发器不存在。

  • 如果需要进行DDL同步,则请按照指引在源库创建DDL同步所需的元数据对象dts_ddl_info, dts_capture_ddl以及dts_ddl_event,并将表对象dts_ddl_info勾选为同步对象,然后重新进行预检查。


DbIPiLg4.ACT