文档首页> 数据复制服务 DRS> 实时同步> 入云> 将PostgreSQL同步到PostgreSQL
更新时间:2024-03-15 GMT+08:00
分享

将PostgreSQL同步到PostgreSQL

支持的源和目标数据库

表1 支持的数据库

源数据库

目标数据库

  • 本地自建数据库(PostgreSQL 9.4、9.5、9.6、10、11、12、13、14、15版本)
  • ECS自建数据库(PostgreSQL 9.4、9.5、9.6、10、11、12、13、14、15版本)
  • 其他云上数据库(PostgreSQL 9.4、9.5、9.6、10、11、12、13、14、15版本)
  • RDS for PostgreSQL(9.5、9.6、10、11、12、13、14、15版本)

RDS for PostgreSQL(9.5、9.6、10、11、12、13、14、15版本)

说明:

仅支持目标库大版本等于或高于源库大版本。

支持的同步对象范围

在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查

表2 支持的同步对象

类型名称

使用须知

同步对象范围

  • 不支持实例级同步:每次至多同步一个库(database),同步多个库需要使用多个DRS任务。
  • 支持的字段类型

    数字类型、货币类型、字符类型、二进制数据类型、日期/时间类型、布尔类型、枚举类型、几何类型、网络地址类型、位串类型、文本搜索类型、UUID类型、XML类型、JSON类型、数组、复合类型、范围类型。

  • 全量同步的范围
    • 库级同步支持模式、表、索引、约束、视图、物化视图、序列、存储过程、规则、触发器、外键、排序规则、插件、编码转换信息、聚合函数、操作符、统计扩展、转换信息、文本搜索配置、函数、数据类型、类型转换、用户事件触发器、文本搜索解析器、文本搜索模板的同步。

      表级同步时,仅支持表、视图、物化视图、序列、用户、普通索引的同步。

      文件导入时,支持表的同步。

    • 不支持系统模式(“pg_”开头的任何模式、“information_schema”、“sys”、“utl_raw”、“dbms_lob”、“dbms_output”和“dbms_random”)、系统表、系统用户、表空间、外部数据包装器、外部服务器、用户映射、发布、订阅等其他对象。
    说明:

    支持同步的对象有如下限制:

    • 对象名称:库名不可以包含+"%'\<>,模式名和表名不可以包含".'<>,列名不可以包含"和'。
    • 表:不同步临时表。表级同步时,表的约束、索引及规则会一起同步,表的触发器不会同步。
    • 模式:不同步public模式的权限。表级同步时,会同步目标库已存在模式的权限。
    • 函数:不同步C语言函数,不同步带有leakproof属性或带有support属性的函数。
    • 插件:不同步插件的元数据。
    • 数据类型:不同步基本数据类型。
    • 类型转换:不同步二进制强制型的类型转换。
    • 事件触发器:受限于目标库版本,仅目标库为RDS for PostgreSQL 11.11及以上版本时支持。
    • 文本搜索解析器:受限于目标库版本,仅目标库为RDS for PostgreSQL 11.11及以上版本时支持。
    • 文本搜索模板:受限于目标库版本,仅目标库为RDS for PostgreSQL 11.11及以上版本时支持。
    • 用户:不同步目标库已存在的用户,不同步用户的superuser属性、replication属性、bypassrls属性,不同步superuser用户的成员关系。对象owner/grantor为superuser用户时,不同步它的owner/grantor。目标库为华为云RDS for PostgreSQL时,要同步用户的密码不能包含用户名。表级同步时,不同步源库用户的默认访问权限。superuser用户同步至目标库后为普通用户,默认授予root权限(仅当目标库版本为RDS for PostgreSQL 11.11及以上时支持)。
  • 增量同步的范围
    • 支持部分DML(Data Manipulation Language):包括INSERT、UPDATE、DELETE。
    • 支持部分DDL(Data Define Language):包括TRUNCATE(仅PostgreSQL 11及以上版本支持)、CREATE SCHEMA、CREATE TABLE、DROP TABLE、ALTER TABLE(包含ADD COLUMN、DROP COLUMN、ALTER COLUMN、RENAME COLUMN、ADD CONSTRAINT、DROP CONSTRAINT、RENAME)、CREATE SEQUENCE、DROP SEQUENCE、ALTER SEQUENCE、CREATE INDEX、ALTER INDEX、DROP INDEX、CREATE VIEW、ALTER VIEW、COMMENT ON COLUMN、COMMENT ON TABLE、COMMENT ON SCHEMA、COMMENT ON SEQUENCE、COMMENT ON INDEX、COMMENT ON VIEW。

      表级同步时,DDL仅支持TRUNCATE(仅PostgreSQL 11及以上版本支持)、DROP TABLE 、ALTER TABLE、COMMENT ON COLUMN、COMMENT ON TABLE,其中ALTER TABLE支持:ADD COLUMN、DROP COLUMN、ALTER COLUMN、RENAME COLUMN、ADD CONSTRAINT、DROP CONSTRAINT、RENAME。

    • 不支持:无日志表(UNLOGGED TABLE)的DML,临时表的DML。
      说明:

      同步DDL的实现原理:在源库通过事件触发器捕获DDL语句,并且记录在特定的表中,因此需要提前在源库创建事件触发器、函数等。详细操作可参考通过创建事件触发器和函数实现PostgreSQL增量DDL同步

数据库账号权限要求

在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。

  • 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。
  • 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
表3 数据库账号权限

类型名称

全量同步

全量+增量同步

源数据库连接账号

数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码)。

数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的SELECT权限(用于同步用户的密码),无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。

说明:
  • 无主键表的UPDATE、DELETE和TRUNCATE权限,仅用于对无主键表短暂加锁,以确保迁移后,目标库中无主键表数据与源库保持一致。
  • REPLICATION连接权限的添加方法:
    1. 在源数据库的“pg_hba.conf”配置文件的所有配置前增加一行配置“host replication <src_user_name> <drs_instance_ip>/32 md5”;
    2. 在源库使用SUPERUSER用户执行语句“select pg_reload_conf();”生效,或重启数据库实例生效。

目标数据库连接账号

  • 库级同步
    • 如果目标库不是postgres,需要具有CREATEDB权限。
    • 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。
  • 表级同步
    • 如果需要同步库,需要具有CREATEDB权限。
    • 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。
    • 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。
  • 同步用户:需要具有CREATEROLE权限。
  • 同步用户权限:同步用户的default privilege需要为系统默认值,否则可能导致目标库与源库的对象权限不一致。
说明:
  • 同步事件触发器、文本搜索解析器、文本搜索模版时,不仅要求目标库版本为RDS for PostgreSQL 11.11及以上,还要求目标库连接用户为root用户或root用户的成员。
  • 目标库版本为PostgreSQL 15时,库级同步及表级同步目标库没有建库的场景下,全量或增量同步的过程中,可能会由于没有模式public的USAGE及CREATE权限而导致同步失败。

使用建议

  • DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。
  • 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。
  • 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。
  • 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。
    • 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。
    • 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。
    • 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。
    • DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。
    • 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。
    • 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响
  • 数据对比

    建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。

使用须知

DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单增量和单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。

表4 使用须知

类型名称

使用和操作约定

任务启动前使用须知

  • 源数据库参数要求
    • 源数据库的分区表触发器不可以设置为disable。
    • 全量同步支持源库备机状态,但需要设置hot_standby_feedback为on;增量同步不支持源库备机状态。
    • 若要做增量同步:
      源数据库的“pg_hba.conf” 文件中包含如下的配置:
      host replication all 0.0.0.0/0 md5

      源数据库参数wal_level必须配置为logical;

      源数据库需提前安装test_decoding插件;

      源数据库中无主键表的replica identity属性必须为full;

      源数据库的max_replication_slots参数值必须大于当前已使用的复制槽数量;

      源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。

      源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。

  • 源数据库对象要求:
    • 源库中不可以存在同名的触发器。
    • 同步对象依赖和关联的对象也须一起同步,否则可能导致同步失败。
  • 目标数据库参数要求:
    • 目标数据库的block_size参数值必须大于或等于源库中的对应参数值。
    • 目标数据库和源数据库的lc_monetary参数值一致。
    • 若要做增量同步,且同步对象包含外键、触发器或事件触发器,则目标数据库的session_replication_role参数必须设置为replica,同步结束后,此参数需改为原来的值。
  • 目标数据库对象要求
    • 目标库不可以包含,与待同步对象类型相同且名称相同的对象,包括库、模式、表等。系统库、系统模式、系统表等除外。
    • 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。

      目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。

      目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。

  • 其他使用须知
    • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。
    • 模式名或表名映射时,为防止索引和约束名冲突,同步后表上的原索引名称将变为此格式:i_+哈希值+原索引名(可能被截断)+_key。其中哈希值由“原模式名_原表名_原索引名”计算得到。同理,表上的原约束名将变为:c_+哈希值+原约束名(可能被截断)+_key。
    • 对于全量+增量和增量任务,启动前请确保源库中未启动长事务,启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。
    • 对于全量+增量和增量任务,如果预校验存在“内部错误”且在任务未启动时结束,请参考PostgreSQL为源强制结束任务章节检查并删除流复制槽,防止源库中流复制槽残留。
    • 对于全量+增量和增量任务,任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。
    • 若选择同步DDL,须注意源库执行DDL时,确保在目标库上是兼容的。
      说明:

      同步DDL的实现原理是:在源库通过事件触发器捕获DDL语句,并且记录在特定的表中,然后将DDL语句同步至目标库。因此启动任务前,需要提前在源库创建事件触发器、函数等。详细操作可参考通过创建事件触发器和函数实现PostgreSQL增量DDL同步

全量同步过程使用须知

  • 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
  • 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。
  • 请勿在目标库做写入操作,否则可能导致数据不一致。

增量同步过程使用须知

  • 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
  • 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。
  • 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。
  • 请勿在目标库做写入操作,否则可能导致数据不一致。
  • 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。
  • 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。

同步对比使用须知

  • 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。
  • 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。
  • 不支持在全量同步过程中做对比。
  • 不支持数据对比过程中做限速。

结束任务使用须知

  • 正常结束任务:
    • 将自动重置目标库序列值(自增序列值为源库序列值+安全余度,自减序列值为源库序列值-安全余度,安全余度默认为10000),若选择了同步用户,任务结束时将自动同步用户的成员关系。
    • 全量实时同步任务结束时会对序列值进行比对,序列值采用逻辑一致性的判断原则,即自增序列当且仅当目标库对应序列值大于等于源库对应序列值,自减序列当且仅当目标库对应序列值小于等于源库对应序列值时,序列值判定为一致。
    • 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。
    • 全量+增量实时同步任务正常结束时,如果目标库session_replication_role值为replica,需手动将目标库session_replication_role参数值修改为原来的值。
  • 强制结束任务:
    • 需要手动刷新目标库中的序列值,可参考PostgreSQL为源强制结束任务章节的指导进行操作。
    • 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。
    • 强制结束全量+增量实时同步任务,如果目标库session_replication_role值为replica,需手动将目标库session_replication_role参数值修改为原来的值。
    • 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。

常见故障排查

  • 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。

操作步骤

本小节以PostgreSQL->PostgreSQL的入云同步为示例,介绍如何使用数据复制服务配置VPC网络场景下的实时同步任务。

  1. 在“实时同步管理”页面,单击“创建同步任务”。
  2. 在“同步实例”页面,填选区域、项目、任务名称、描述、同步实例信息,单击“开始创建”

    • 任务信息
      图1 同步任务信息
      表5 任务和描述

      参数

      描述

      区域

      当前所在区域,可进行切换。

      项目

      当前区域对应的项目,可进行切换。

      任务名称

      任务名称在4到50位之间,必须以字母开头,可以包含字母、数字、中划线或下划线,不能包含其他的特殊字符。

      描述

      描述不能超过256位,且不能包含! = < > & ' " \ 特殊字符。

    • 同步实例信息
      图2 同步实例信息

      表6 同步实例信息

      参数

      描述

      数据流动方向

      选择“入云”

      源数据库引擎

      选择“PostgreSQL”

      目标数据库引擎

      选择“PostgreSQL”

      网络类型

      此处以“VPC网络”为示例,可选“公网网络”“VPC网络”“VPN、专线网络”

      • VPC网络:适合云上同账号同Region数据库之间的同步。
      • 公网网络:适合通过公网网络把其他云下或其他平台的数据库同步到目标数据库,该类型要求数据库绑定弹性公网IP(EIP)。
      • VPN、专线网络:适合通过专线网络,实现其他云下自建数据库与云上数据库同步、云上同Region跨账号、或云上跨Region的数据库之间的同步。

      目标数据库实例

      目标数据库为RDS for PostgreSQL数据库实例。

      同步实例所在子网

      请选择同步实例所在的子网。也可以单击“查看子网”,跳转至“网络控制台”查看实例所在子网帮助选择。

      默认值为当前所选数据库实例所在子网,请选择有可用IP地址的子网。为确保同步实例创建成功,仅显示已经开启DHCP的子网。

      同步模式

      DRS任务支持的同步模式,此处以“全量+增量”为示例。DRS全量、增量底层实现原理可参考产品架构和功能原理

      • 全量+增量:

        该模式为数据持续性实时同步,通过全量过程完成目标端数据库的初始化后,增量同步阶段通过解析日志等技术,将源端和目标端数据保持数据持续一致。

      • 全量

        该模式为数据库一次性同步,适用于可中断业务的数据库同步场景,全量同步将非系统数据库的全部数据库对象和数据一次性同步至目标端数据库。

      • 增量:

        增量同步通过解析日志等技术,将源端产生的增量数据同步至目标端。

    • 任务类型
      图3 任务类型
      表7 任务类型信息

      参数

      描述

      规格类型

      选择DRS实例的规格类型,不同规格类型对应不同性能的性能上限,详细可参考实时同步链路规格说明

      说明:

      目前,DRS同步仅支持任务类型为单AZ的同步任务升级实例规格,不支持降低规格,具体操作及约束限制可参考同步规格变更

      可用区

      DRS任务创建的可用区,选择跟源或目标库相同的可用区性能更优。

    • 企业项目和标签
      图4 企业项目和标签
      表8 企业项目和标签

      参数

      描述

      企业项目

      企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。请在下拉框中选择所在的企业项目,其中,default为默认项目。

      更多关于企业项目的信息,请参见《企业管理用户指南》

      如果需要自定义企业项目,请在控制台右上角单击“企业”,进入“企业项目管理”页面创建,具体请参见《企业管理用户指南》中“创建企业项目”的内容。

      标签

      • 可选配置,对同步任务的标识。使用标签可方便管理您的任务。每个任务最多支持20个标签配额。
      • 如您的组织已经设定DRS的相关标签策略,则需按照标签策略规则为任务添加标签。标签如果不符合标签策略的规则,则可能会导致任务创建失败,请联系组织管理员了解标签策略详情。
      • 任务创建成功后,您可以单击任务名称,在“标签”页签下查看对应标签。关于标签的详细操作,请参见标签管理

    对于创建失败的任务,DRS默认保留3天,超过3天将会自动结束任务。

  3. 在“源库及目标库”页面,同步实例创建成功后,填写源库信息和目标库信息,单击“源库和目标库”处的“测试连接”,分别测试并确定与源库和目标库连通后,勾选协议,单击“下一步”

    测试连接时需要确保DRS任务与源库、目标库的连通性。

    • 网络连通性:确保源库和目标库允许DRS访问,通常至少需要放通DRS的IP。公网网络的DRS任务放通DRS的公网IP,VPC网络、VPN、专线网络的DRS任务放通DRS的内网IP,可参考网络准备章节进行网络打通。
    • 账号连通性:确保源库和目标库允许DRS通过连接账号和密码访问。

    此处源库类型分为ECS自建库和RDS实例,需要根据源数据库的实际来源选择相应的分类。两种场景下的参数配置不一样,需要根据具体场景进行配置。

    • 场景一:ECS自建库源库信息配置
      图5 ECS自建库场景源库信息
      表9 ECS自建库场景源库信息

      参数

      描述

      数据库库类型

      选择“ECS自建库”

      VPC

      源数据库实例所在的虚拟专用网络,可以对不同业务进行网络隔离。您需要创建或选择所需的虚拟私有云。如何创建虚拟私有云,请参见《虚拟私有云用户指南》中的“创建虚拟私有云基本信息及默认子网”。

      子网

      通过子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全。子网在可用分区内才会有效,创建源数据库实例的子网需要开启DHCP功能,在创建过程中也不能关闭已选子网的DHCP功能。

      IP地址或域名

      源数据库的IP地址或域名。

      端口

      源数据库服务端口,可输入范围为1~65535间的整数。

      指定数据库名称

      选择是否指定数据库,开启后需手动输入数据库名称。

      数据库用户名

      源数据库的用户名。

      数据库密码

      源数据库的用户名所对应的密码。

      SSL安全连接

      通过该功能,用户可以选择是否开启对同步链路的加密。

      源数据库的IP地址或域名、数据库用户名和密码,会被系统加密暂存,直至删除该迁移任务后自动清除。

    • 场景二:RDS实例源库信息配置
      图6 RDS实例场景源库信息
      表10 RDS实例场景源库信息

      参数

      描述

      数据库类型

      选择“RDS实例”

      数据库实例名称

      选择待同步的关系型PostgreSQL数据库实例作为源数据库实例。

      数据库用户名

      源数据库实例的用户名。

      数据库密码

      源数据库的用户名所对应的密码。

    图7 目标库信息
    表11 目标库信息

    参数

    描述

    数据库实例名称

    默认为创建迁移任务时选择的关系型PostgreSQL数据库实例,不可进行修改。

    数据库用户名

    目标数据库的用户名。

    数据库密码

    目标数据库的用户名所对应的密码。

    源和目标数据库用户名和密码将在同步过程中被加密暂存到数据库和同步实例主机上,待该任务删除后会永久清除。

  4. “设置同步”页面,选择同步对象和同步用户,单击“下一步”

    图8 同步对象

    表12 同步对象

    参数

    描述

    流速模式

    流速模式支持限速和不限速,默认为不限速。

    • 限速

      自定义的最大同步速度,全量同步过程中的同步速度将不会超过该速度。

      当流速模式选择了“限速”时,你需要通过流速设置来定时控制同步速度。流速设置通常包括限速时间段和流速大小的设置。默认的限速时间段为“全天限流”,您也可以根据业务需求选择“时段限流”。自定义的时段限流支持最多设置3个定时任务,每个定时任务之间不能存在交叉的时间段,未设定在限速时间段的时间默认为不限速。

      流速的大小需要根据业务场景来设置,不能超过9999MB/s。

      图9 设置流速模式
    • 不限速
      对同步速度不进行限制,通常会最大化使用源数据库的出口带宽。该流速模式同时会对源数据库造成读消耗,消耗取决于源数据库的出口带宽。比如源数据库的出口带宽为100MB/s,假设高速模式使用了80%带宽,则同步对源数据库将造成80MB/s的读操作IO消耗。
      说明:
      • 限速模式只对全量阶段生效,增量阶段不生效。
      • 您也可以在创建任务后修改流速模式。具体方法请参见修改流速模式

    增量阶段冲突策略

    该冲突策略特指增量同步中的冲突处理策略,全量阶段的冲突默认忽略。冲突策略目前支持如下形式:

    • 忽略

      当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),将跳过冲突数据,继续进行后续同步。选择忽略可能导致源库与目标库数据不一致。

    • 报错

      当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),同步任务将失败并立即中止。

    • 覆盖

      当同步数据与目标数据库已有数据冲突时(主键/唯一键存在重复等),将覆盖原来的冲突数据。

    当同步数据与目标库已有数据冲突时,选择“忽略”无法保证最终一致性,如需保证数据一致性,可选择“覆盖”策略。

    对象同步范围

    对象同步范围支持选择普通索引、增量DDL同步和全量阶段填充物化视图,您可以根据业务需求选择是否进行同步。

    全量阶段填充物化视图:仅对源库已经填充的物化视图生效,该填充操作会影响全量同步性能,建议在全量同步完成后,手动在目标库填充。

    快照模式

    如果您选择的是全量+增量同步模式的任务,数据复制服务支持设置快照模式。

    全量阶段使用快照模式导出能够有效提升全量+增量场景下的数据同步效率,但PostgreSQL的快照机制会使导出期间数据库的历史数据不能被回收,可能有空间膨胀的现象。建议在全量或增量数据量大且源库磁盘空间充足的情况下使用该方式。

    全量导出并发数

    全量导出对象的线程数量和导出数据的线程数量。

    全量导入并发数

    全量导入对象的线程数量和导入数据的线程数量。

    同步对象

    左侧框是源数据库对象,右侧框是已经选择的对象,同步对象支持表级同步、库级同步和导入对象文件,您可以根据业务场景选择对应的数据进行同步。

    • 选择库级同步:全量同步时,同步对象为所选的库、库中对象的存量数据;增量同步时,同步除了无日志表、临时表外的所有表的DML及部分DDL。
    • 选择表级同步:全量同步时,同步对象为所选的表、序列、视图或物化视图的存量数据;增量同步时,同步所选表的DML及部分DDL。
    • 在同步对象右侧已选对象框中,可以使用对象名映射功能进行源数据库和目标数据库中的同步对象映射,具体操作可参考对象名映射

      模式名或表名映射时,为防止索引和约束名冲突,同步后表上的原索引名称将变为此格式:i_+哈希值+原索引名(可能被截断)+_key。其中哈希值由“原模式名_原表名_原索引名”计算得到。同理,同步后表上的原约束名将变为:c_+哈希值+原约束名(可能被截断)+_key。

    • 选择导入对象文件,具体步骤和说明可参考导入同步对象
    说明:
    • 选择对象的时候支持对展开的库进行搜索,以便您快速选择需要的数据库对象。
    • 如果有切换源数据库的操作或源库同步对象变化的情况,请在选择同步对象前单击右上角的,以确保待选择的对象为最新源数据库对象。
    • 当对象名称包含空格时,名称前后的空格不显示,中间如有多个空格只显示一个空格。
    • 选择的同步对象名称中不能包含空格。

    同步用户

    数据库的同步过程中,同步用户需要进行单独处理。详细说明可参考表13

    图10 同步用户
    表13 同步用户及权限

    参数

    描述

    账号名称

    源库对应的账号名称。

    是否支持同步

    账号是否支持同步。

    一般分为两类:可同步的账号和不支持同步的账号。对于不支持同步的账号,在备注列的查看详情中会提示具体的原因。

    父用户

    账号所属父用户。

    不支持同步的父用户

    账号不支持同步的父用户。

    账号属性

    源库账号拥有的属性。

    不支持同步的账号属性

    目标库同步用户权限不足等原因导致的账号属性无法同步。

    备注

    不支持同步的父用户、不支持同步的账号属性的原因说明,所有备注项需确认后才可以进入下一步。

    同步对象权限

    是否同步账号对象对应的权限。

  5. “预检查”页面,进行同步任务预校验,校验是否可进行。

    • 查看检查结果,如有不通过的检查项,需要修复不通过项后,单击“重新校验”按钮重新进行任务预校验。

      预检查不通过项处理建议请参见《数据复制服务用户指南》中的“预检查不通过项修复方法”。

    • 预检查完成后,且所有检查项结果均通过时,单击“下一步”
      图11 预检查

      所有检查项结果均通过时,若存在请确认项,需要阅读并确认详情后才可以继续执行下一步操作。

  6. “任务确认”页面,设置同步任务的启动时间、任务异常通知设置、SMN主题、时延阈值、任务异常自动结束时间,并确认同步任务信息无误后,勾选协议,单击“启动任务”,提交同步任务。

    图12 任务启动设置
    表14 任务启动设置

    参数

    描述

    启动时间

    同步任务的启动时间可以根据业务需求,设置为“立即启动”或“稍后启动”。

    说明:

    预计同步任务启动后,会对源数据库和目标数据库的性能产生影响,建议选择业务低峰期,合理设置同步任务的启动时间。

    任务异常通知设置

    该项为可选参数,开启之后,选择对应的SMN主题。当同步任务状态异常时,系统将发送通知。

    SMN主题

    “任务异常通知设置”项开启后可见,需提前在SMN上申请主题并添加订阅。

    SMN主题申请和订阅可参考《消息通知服务用户指南》

    时延阈值

    在增量同步阶段,源数据库和目标数据库之间的同步有时会存在一个时间差,称为时延,单位为秒。

    时延阈值设置是指时延超过一定的值后(时延阈值范围为0到3600s),DRS可以发送告警通知。告警通知将在时延稳定超过设定的阈值6min后发送,避免出现由于时延波动反复发送告警通知的情况。

    说明:
    • 当时延阈值设置为0时,不会发送通知给收件人。
    • 首次进入增量同步阶段,会有较多数据等待同步,存在较大的时延,属于正常情况,不在此功能的监控范围之内。
    • 设置时延阈值之前,需要设置任务异常通知。

    任务异常自动结束时间(天)

    设置任务异常自动结束天数,输入值必须在14到100之间,默认值14。

    说明:
    • 仅按需计费任务支持设置任务异常自动结束时间,包年/包月任务不支持。
    • 异常状态下的任务仍然会计费,而长时间异常的任务无法续传和恢复。设置任务异常自动结束天数后,异常且超时的任务将会自动结束,以免产生不必要的费用。

  7. 同步任务提交后,您可在“实时同步管理”页面,查看并管理自己的任务

    • 您可查看任务提交后的状态,状态请参见任务状态说明
    • 在任务列表的右上角,单击刷新列表,可查看到最新的任务状态。
    • 对于未启动、状态为配置中的任务,DRS默认保留3天,超过3天DRS会自动删除后台资源,当前任务状态不变。当用户再次配置时,DRS会重新申请资源,此时DRS任务IP会发生改变。

分享:

    相关文档

    相关产品