华为云用户手册

  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 任务启动、任务全量同步阶段,不建议做删除类型的DDL操作,可能会引起任务失败。 不支持源数据库进行恢复操作。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 DRS全量同步表结构时,列名不能是CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID、OID、GS_TUPLE_UID、TABLEBUCKETID,这些GaussDB禁止的字段,否则会导致建表失败。 增量同步阶段: 不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 如果设置session变量character_set_client为binary,可能导致乱码。 不支持源库DDL的复制。 不支持同步DDL操作。 不支持DELETE和UPDATE目标数据库主键类型为tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、clob、nclob、bytea、binary的表。 结束任务: 任务正常结束: 请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注同步日志上报的状态,达到数据库完整同步效果。 任务强制结束: 强制结束将直接释放DRS资源。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 在MySQL中,同一个database(schema)下面的不同表可以存在相同的索引名或约束名。而目标数据库GaussDB中,同一个schema中索引和约束名是唯一的,且长度存在上限。为防止索引和约束名冲突,在全量同步中,DRS同步到目标表上的索引名称将变为此格式:哈希值+原索引名(可能被截断)+_key。其中哈希值由"原库名_原表名_原索引名"计算得到。同理,表上的原约束名将变为:哈希值+原约束名(可能被截断)+_key。 暂不支持级联单向同步,例如从实例A同步到实例B,再从实例B同步到实例C。 网络中断在30秒内恢复的,不影响实时同步,如果超过30秒,则会导致同步任务失败。 源库表同步至目标库后分布方式为哈希分布,暂不支持复制分布。 源库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 源库和目标库均相同的任务不允许出现重复同步的情况,如:A任务和B任务同时将源库的同一张表的实时同步到目标库的同一张表中,可能导致数据不一致和同步失败。 GaussDB只能设置库级字符集,如果遇到MySQL中设置了表级、字段级字符集的场景,可能会因为字符长度问题导致创建表结构异常。 DRS全量同步表结构时,源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),扩大倍数和源库中列的字符集有关。如源库字符集为UTF8的按照字节长扩大3倍,为UTF8MB4的按照字节长扩大4倍。 不建议在数据库中使用非精确数值类型做主键,该特性影响DRS增量场景下对UPDATE、DELETE语句的同步,导致任务失败。 如果无主键表中包含大字段(tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、clob、nclob、bytea、binary),增量同步阶段存在大字段数据不一致的可能性。 由于浮点型数据是采用近似值存储,而不是作为精确值存储,此外操作系统平台和底层实现也对浮点型数据有影响,因此FLOAT,DOUBLE类型的数据是不精确的,所以在MySQL和GaussDB同步浮点型数据,存在一定差异的可能性,可参考MySQL的官方文档。 不支持两阶段事务。 由于MySQL与GaussDB针对零时间("0000-00-00 00:00:00")内置的处理方式不同,当进行内容对比时,如果源、目标数据库存在零时间,对比结果会显示数据不一致。 源数据库同步的表如果有AUTO_INCREMENT属性,结束任务时,DRS会自动刷新同步表的序列整型列所对应的GaussDB自增列(sequence)起始值,刷新值为该列的最大值+10000。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,避免同步对业务造成性能影响。如果同步不可避免业务高峰期,推荐使用同步限速功能,即“流速模式”选择“限速”。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 同步无主键表时,会存在3s以内的单表级锁定。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量同步、全量+增量同步、增量同步 源数据库连接账号 源数据库DDM账户至少需要具备一个权限,例如:SELECT。 DDM物理分片数据库账号需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 目标数据库连接账号 需要具备如下权限:SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE。 RDS for MySQL实例的root账户默认已具备上述权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表3。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表3 支持的同步对象 类型名称 使用须知 同步对象范围 全量同步支持数据、表结构和索引的同步。 源数据库不允许存在拆分键为timestamp类型的表。 源表的分库分表键要加到目标表的主键和唯一键中(也就是目标表的主键和唯一键中的列应该包含源表的分片列),避免数据冲突出现数据不一致问题。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库模式必须设置为FULL模式。 源数据库必须开启SQL Server Agent代理服务。 源数据库若开启客户端配置中的“强制协议加密(Force Protocol Encrypton)”,必须同时开启“信任服务器证书(trust server certificate)”,如下图1所示: 图1 查看客户端属性 源数据库对象要求: 源库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。 源库中不允许存在名称为cdc的用户名或schema。 源库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 源库待同步对象的表中列名不能包含如下字符:[]?。 目标数据库对象要求: 目标数据库实例必须有足够的磁盘空间。 除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的数据库。 其他使用须知: 不支持源数据库主备切换,源数据库主备切换会导致同步任务失败。 不支持源数据库Microsoft SQL Server为TLS 1.0、TLS 1.1协议的同步,如果需要同步,建议源库升级到TLS 1.2及以上版本。 不建议在数据库中使用日期类型做主键,因存在精度损失,该特性影响DRS增量场景下对 UPDATE、DELETE语句的同步。 SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。 目标数据库为Oracle兼容模式时,会将写入的空字符串作为NULL处理,源数据库存在空字符串且具有非空约束时,会导致写入失败。 DRS全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。 对象名同步到目标库后会转换成小写,因此选择的源库表中不能存在表名称字母相同但大小写不同的表,否则会导致同步失败。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 不支持DDL操作,源数据库进行的DDL操作不会同步到目标数据库。 不支持大数据类型image、text、ntext的删除操作。 不支持delete和update目标端主键类型为blob、text、clob、nclob、bytea的表。 单增量任务再编辑增加同步对象时,在子任务变更结束前,不建议对新增同步的表进行DML操作,否则可能导致部分数据无法同步到目标数据库。 同步对比须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 使用须知 同步对象范围 支持的字段类型: TINYINT、SMALLINT、INT、BIGINT、DECIMAL、NUMERIC、FLOAT、REAL、SMALLMONEY、MONEY、BIT、DATE、SMALLDATETIME、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、XML、CHAR、VARCHAR、NCHAR、NVARCHAR、BINARY、VARBINARY、IMAGE、HIERARCHYID、NTEXT、TEXT、UNIQUEIDENTIFIER。 不支持的字段类型:SQL_VARIANT、GEOMETRY、GEOGRAPHY。 全量同步的范围: 支持选中表的表结构、数据和索引。 同步对象的库名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 同步对象选择的表个数不能超过1000。对于超过1000个表的情况,建议分批次同步(待上一个同步任务结束后,再重新创建任务)。 不支持同步源数据库中开启TDE(Transparent Data Encryption)加密的数据库。若不需要同步TDE加密的库,请在对象选择中去掉;若需要同步TDE加密的库,请先将TDE关闭。 不支持列加密。 不支持同步自增属性列。 增量同步的范围: 支持DML(Data Manipulation Language):包括INSERT、UPDATE、DELETE。 不支持DDL(Data Definition Language)。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表3 数据库账号权限 类型名称 全量同步 增量、全量+增量同步 源数据库连接账号 需要具备sysadmin权限,或者待同步数据库的db_datareader或db_owner权限。 需要具备sysadmin权限,或者view server state权限以及待同步数据库的db_datareader或db_owner权限。 目标数据库连接账号 库级权限:需要使用root或其他有sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。 SCHEMA级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。 表级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下所有表的SELECT,UPDATE,INSERT和DELETE权限。 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建Microsoft SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本) ECS自建Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本) 其他云上Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本) RDS for SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本) GaussDB主备版
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 由于MySQL固有特点限制,CPU资源紧张时,存储引擎为Tokudb的表,读取速度可能下降至10%。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表3 数据库账号权限 类型名称 全量同步 全量+增量同步 源数据库连接账号 数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限。 数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。 说明: 无主键表的UPDATE、DELETE和TRUNCATE权限,仅用于对无主键表短暂加锁,以确保迁移后,目标库中无主键表数据与源库保持一致。 目标数据库连接账号 库级同步: 如果目标库不是postgres,需要具有CREATEDB权限。 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。 表级同步: 如果需要同步库,需要具有CREATEDB权限。 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。 说明: 目标库版本为PostgreSQL 15时,库级同步及表级同步目标库没有建库的场景下,全量或增量同步的过程中,可能会由于没有模式public的USAGE及CREATE权限而导致同步失败。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 RDS for PostgreSQL(9.5、9.6、10、11、12、13、14、15版本) 本地自建数据库(PostgreSQL 9.5、9.6、10、11、12、13、14、15版本) ECS自建数据库(PostgreSQL 9.5、9.6、10、11、12、13、14、15版本) 说明: 仅支持目标库大版本等于或高于源库大版本。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单增量和单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前使用须知 源数据库参数要求: 源数据库的分区表触发器不可以设置为disable。 全量同步支持源库备机状态,但需要设置hot_standby_feedback为on;增量同步不支持源库备机状态。 若要做增量同步: 源数据库参数wal_level必须配置为logical; 源数据库中无主键表的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多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 其他使用须知: 模式名或表名映射时,为防止索引和约束名冲突,同步后表上的原索引名称将变为此格式: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 ***日志找到。 常见故障排查 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。
  • 数据库用户权限要求 在使用DRS进行同步时,连接源库和目标库的数据库用户需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的用户权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库用户权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表3 数据库用户权限 类型名称 全量同步 增量同步 全量+增量同步 源数据库连接用户 具备sysadmin角色或者以下最小权限: 需要DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT或UPDATE权限(无主键表锁表需要UPDATE权限)、SEQUENCE的SELECT权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 具备sysadmin角色或者以下最小权限: 需要REPLICATION权限或继承了内置角色gs_role_replication的权限、DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 需要保证安全组和防火墙策略放开对应连接端口,详细说明可参考GaussDB为源链路增量同步连接及端口说明。 具备sysadmin角色或者以下最小权限: 需要REPLICATION权限或继承了内置角色gs_role_replication的权限、DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT或UPDATE权限(无主键表锁表需要UPDATE权限)、SEQUENCE的SELECT权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 需要保证安全组和防火墙策略放开对应连接端口,详细说明可参考GaussDB为源链路增量同步连接及端口说明。 目标数据库连接用户 具备sysadmin角色或者以下最小权限: 需要DATABASE的CONNECT和CREATE权限、SCHEMA的USAGE和CREATE权限、表的INSERT、UPDATE、DELETE、SELECT、ALTER、INDEX、COMMENT权限。 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 使用须知 同步对象范围 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。 仅支持MyISAM和InnoDB表的同步。 不支持事件、触发器的同步。 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。 视图、存储过程、函数依赖的表不支持做表名映射。 任务做表名映射时,不支持该表的外键约束同步。 任务做库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤; 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表3 数据库账号权限 类型名称 全量+增量同步 源数据库连接账号 SELECT、SHOW VIEW、EVENT、LOCK TABLES、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT(或BINLOG MONIOTOR,MariaDB 10.5及以上版本更改为此权限)。 目标数据库连接账号 SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES、INDEX,RDS for MariaDB实例的root账户默认已具备上述权限。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表3。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表3 支持的同步对象 类型名称 使用须知 同步对象范围 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。 仅支持MyISAM和InnoDB表的同步。 不支持事件(EVENT)和触发器(TRIGGER)的同步。 全量和增量同步不支持隐藏列(INVISIBLE),隐藏列是MySQL 8.0.23开始支持的特性,例如: CREATE TABLE `test11` ( `id` int NOT NULL, `c1` int DEFAULT NULL /*!80023 INVISIBLE */, PRIMARY KEY (`id`));
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) ECS自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) 其他云上MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) 说明: 仅支持目标库版本等于或高于源库版本。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量同步 全量+增量同步、增量同步 源数据库连接账号 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT。 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 目标数据库连接账号 需要具备如下最小权限: SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES。 RDS for MySQL实例的root账户默认已具备上述权限。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 建议创建单独用于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。 源数据库对象要求: 同步对象依赖和关联的对象也须一起同步,否则可能导致同步失败。 说明: 常见的关联关系:主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。 目标数据库参数要求: 目标数据库参数max_prepared_transactions须大于源数据库。 目标数据库参数max_worker_processes须大于源数据库。 目标数据库参数max_locks_per_transaction须大于源数据库。 目标数据库参数max_connections须大于源数据库。 目标数据库和源数据库的lc_monetary参数值必须一致。 目标数据库对象要求: 目标数据库的字符集必须与源数据库一致。 目标数据库的时区设置必须与源数据库一致。 同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 其他使用须知: 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 暂不支持级联单向同步,例如从实例A同步到实例B,再从实例B同步到实例C。 分区表只同步主表,转为普通表同步到目标库,分区表的数据将集中写入主表。 模式名或表名映射时,为防止索引和约束名冲突,同步后表上的原索引名称将变为此格式:i_+哈希值+原索引名(可能被截断)+_key。其中哈希值由“原模式名_原表名_原索引名”计算得到。同理,表上的原约束名将变为:c_+哈希值+原约束名(可能被截断)+_key。 对于全量+增量和增量任务,启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。 对于全量+增量和增量任务,任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。 DRS全量同步表结构时,源库中的character、character varying类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),默认扩大4倍,最大长度为10485760。 DRS全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。 对象名同步到目标库后不进行大小写转换。 源数据库的唯一索引是表达式索引时,全量同步阶段目标数据库GaussDB分布式可能会因为无法创建该索引而导致任务失败。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 同步对比使用须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 结束任务须知 正常结束任务: 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。 强制结束任务: 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建数据库(PostgreSQL 9.4、9.5、9.6、10、11、12、13、14版本) ECS自建数据库(PostgreSQL 9.4、9.5、9.6、10、11、12、13、14版本) 其他云上数据库(PostgreSQL 9.4、9.5、9.6、10、11、12、13、14版本) RDS for PostgreSQL(9.5、9.6、10、11、12、13、14版本) GaussDB分布式版
  • 数据库用户权限要求 在使用DRS进行同步时,连接源库和目标库的数据库用户需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的用户权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库用户权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库用户,避免因为数据库用户密码修改,导致的任务连接失败。 连接源或目标数据库的用户密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库用户被锁定影响使用。 由于分布式数据库为源链路需要检查每个DN的连通性,建议使用非root数据库用户进行同步,避免因为密码填写错误在连接DN过程中导致用户被锁定。 表3 数据库用户权限 类型名称 全量同步 增量同步 全量+增量同步 源数据库连接用户 具备sysadmin角色或者以下最小权限: 需要DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT或UPDATE权限(无主键表锁表需要UPDATE权限)、SEQUENCE的SELECT权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 具备sysadmin角色或者以下最小权限: 需要REPLICATION权限或继承了内置角色gs_role_replication的权限、DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT权限,如果需要使用内容对比,需要拥有用户的MONADMIN权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 需要保证安全组和防火墙策略放开对应连接端口,详细说明可参考GaussDB为源链路增量同步连接及端口说明。 具备sysadmin角色或者以下最小权限: 需要REPLICATION权限或继承了内置角色gs_role_replication的权限、DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT或UPDATE权限(无主键表锁表需要UPDATE权限)、SEQUENCE的SELECT权限,如果需要使用内容对比,需要拥有用户的MONADMIN权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 需要保证安全组和防火墙策略放开对应连接端口,详细说明可参考GaussDB为源链路增量同步连接及端口说明。 目标数据库连接用户 具备sysadmin角色或者以下最小权限: 需要DATABASE的CONNECT和CREATE权限、SCHEMA的USAGE和CREATE权限、表的INSERT、UPDATE、DELETE、SELECT、ALTER、INDEX、COMMENT权限。 如果需要使用内容对比,需要拥有用户的MONADMIN权限。 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》。
  • 数据库用户权限要求 在使用DRS进行同步时,连接源库和目标库的数据库用户需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的用户权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库用户权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库用户,避免因为数据库用户密码修改,导致的任务连接失败。 连接源或目标数据库的用户密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库用户被锁定影响使用。 由于分布式数据库为源链路需要检查每个DN的连通性,建议使用非root数据库用户进行同步,避免因为密码填写错误在连接DN过程中导致用户被锁定。 表3 数据库用户权限 类型名称 全量同步 增量同步 全量+增量同步 源数据库连接用户 具备sysadmin角色或者以下最小权限: 需要DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT或UPDATE权限(无主键表锁表需要UPDATE权限)、SEQUENCE的SELECT权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 具备sysadmin角色或者以下最小权限: 需要REPLICATION权限或继承了内置角色gs_role_replication的权限、DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT权限,如果需要使用内容对比,需要拥有用户的MONADMIN权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 需要保证安全组和防火墙策略放开对应连接端口,详细说明可参考GaussDB为源链路增量同步连接及端口说明。 具备sysadmin角色或者以下最小权限: 需要REPLICATION权限或继承了内置角色gs_role_replication的权限、DATABASE的CONNECT权限、SCHEMA的USAGE权限、表的SELECT或UPDATE权限(无主键表锁表需要UPDATE权限)、SEQUENCE的SELECT权限,如果需要使用内容对比,需要拥有用户的MONADMIN权限。 需要具备远程连接权限,添加方法可参考GaussDB远程连接配置方法。 需要保证安全组和防火墙策略放开对应连接端口,详细说明可参考GaussDB为源链路增量同步连接及端口说明。 目标数据库连接用户 具备sysadmin角色或者以下最小权限: 需要DATABASE的CONNECT和CREATE权限、SCHEMA的USAGE和CREATE权限、表的INSERT、UPDATE、DELETE、SELECT、ALTER、INDEX、COMMENT权限。 如果需要使用内容对比,需要拥有用户的MONADMIN权限。 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表3 数据库账号权限 类型名称 全量+增量同步 源数据库连接账号 SELECT、SHOW VIEW、EVENT、LOCK TABLES、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT(或BINLOG MONIOTOR,MariaDB 10.5及以上版本更改为此权限)。 目标数据库连接账号 SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES、INDEX。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
共100000条