yuan-er

导航

 

支持的源和目标数据库

表1 支持的数据库

源数据库

目标数据库

DB2 for LUW 9.7、10.1、10.5、11.1、11.5版本

GaussDB集中式版(版本数据库内核版本为505.2及以下版本,内核版本与数据库引擎版本的关系请参考云数据库GaussDB的数据库引擎版本说明。)

使用须知

在创建同步任务前,请务必阅读以下使用须知。

说明:
  • 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。
  • 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
表2 使用须知

类型名称

使用和操作限制

数据库权限设置

  • 源数据库端:
    • 全量同步需要用户具有CONNECT、DATAACCESS权限。
    • 全量+增量同步需要用户具有DBADM权限。
    • 选择全量+增量同步时,需要确保开启源数据库的归档日志,确保需要同步的表的Datacapture属性为Y。
  • 目标数据库端必须同时拥有以下权限:
    • 库级权限:需要使用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工具参考》

同步对象约束

  • 全量同步时支持表、普通索引、主键与唯一约束、数据的同步。增量同步时支持表的实时同步。
  • 不支持自定义类型。
  • TIMESTAMP类型支持的最大精度是6。
  • 全量同步结构不支持位图索引、倒排索引、函数索引、XML索引。
  • 增量同步支持的LOB类型大小限10M以内。
  • 增量同步不支持长度大于3998的VARCHAR、VARGRAPHIC类型。
  • 不支持默认值含有表达式的函数的表的同步。
  • 不支持同步源库中的临时表。
  • 不支持同步源库中执行的DDL语句。
  • 全量+增量任务不支持带XML字段的无主键表。
  • 浮点数类型作为主键时,增量同步可能会导致数据不一致。

源数据库要求

  • 库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS 不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。
  • 目前仅支持同步如下字符集:GBK、UTF8。

目标数据库要求

  • 目标库必须是GaussDB集中式版实例。
  • 确保目标库已创建以小写字母命名的数据库。
  • 同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。
  • 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。

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

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

操作须知

  • 不建议在数据库中使用非精确数值类型做主键,该特性影响 DRS 增量场景下对 UPDATE、DELETE语句的同步。
  • 不支持ARM虚拟机环境。
  • 如果无主键表中包含LOB、LONG等大字段,增量同步阶段存在大字段数据不一致的可能性。
  • 如果源库和目标库字符集不一致,如源库是GBK,目标库是UTF8,由于GBK字符集单个中文字符占用2个字节,而UTF8字符集单个中文字符占用3个字节,可能会导致CHAR或VARCHAR类型数据同步到目标库后超出字段定义长度,所以客户需要根据实际情况对目标库CHAR和VARCHAR类型字段长度进行扩充(如扩大为源库的1.5倍)。
  • 全量+增量任务启动前,请确保源数据库没有未提交事务。建议先暂停源数据库业务写入,再启动任务。
  • 任务启动后,对于分区表的detach操作可能导致数据不一致。
  • 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
  • 同步过程中,源库不允许有未提交的DDL事务。
  • 全量同步分为表结构同步(含索引)、数据同步两个阶段,任务中只要有一个表的结构在目标库中创建成功即进入数据同步阶段。若同步完成产生失败表,再启动时将只同步数据,不同步表结构信息,用户必须手动在目标库中建表。
  • 全量同步分区表的结构时会将该对象转为非分区的普通表。
  • 全量同步表结构时只支持字符串或数字类型的普通默认值约束,不支持函数、序列等类型的默认值约束,如有需要,用户必须手动在目标库创建对应表的默认值约束。
  • 全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。
  • 对于全量同步中的目标数据库表对象,不能进行写入操作,否则会导致数据不一致。
  • 增量同步时,BLOB末尾的0x00、CLOB末尾的空格会被截断。
  • 增量同步阶段,支持任务再编辑追加同步对象。

更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html

 

posted on 2025-05-22 09:42  数据库笔记  阅读(0)  评论(0)    收藏  举报