一、背景信息
·一个 TDSQL-H LibraDB 实例支持创建一个或多个数据同步链路(即 CDC 任务)。
·TDSQL-H LibraDB 支持的源端 OLTP 数据库包括自建数据库、云数据库和第三方云厂商数据库,数据库类型当前仅支持 MySQL。
支持的源数据库网络接入类型说明如下:
| 接入类型 | 说明 |
| 公网 | 源数据库可通过公网 IP 访问。 |
| 云主机自建 | 源数据库部署在 腾讯云服务器 CVM 上。 |
| 专线接入 | 源数据库可通过 专线接入 方式与腾讯云私有网络打通。 |
| VPN 接入 | 源数据库可通过 VPN 连接 方式与腾讯云私有网络打通。 |
| 云数据库 | 源数据库属于腾讯云数据库实例。 |
| 云联网 | 源数据库可以通过 云联网 与腾讯云私有网络打通。 |
对于第三方云厂商数据库,一般可以选择公网方式,也可以选择 VPN 接入,专线或者云联网的方式,需要根据实际的网络情况选择。
·数据同步支持整个实例同步和指定对象同步。
支持的数据同步类型及使用场景说明如下:
| 初始结构 | 初始全量数据 | 增量数据 | 功能 | 场景 |
| ✓ | – | – | 只将源数据库表结构同步到 LibraSQL 分析引擎。 | 做结构验证。 |
| ✓ | ✓ | – | 将源数据库表结构和全量数据同步到 LibraSQL 分析引擎。 | 开发测试环境做测试验证。 |
| ✓ | ✓ | ✓ | 将源数据库表结构、全量数据同步到 LibraSQL 分析引擎后继续保持数据同步。将源数据库在同步过程中的数据,实时同步到目标。 | 同步的信息最多,适用于所有场景。 |
| ✓ | – | ✓ | 只做结构同步和增量数据同步。 | 日志场景,流式分析等只关注增量数据的场景。 |
| – | – | ✓ | 只将增量数据同步到目标端。 | 用户需要定制化的目标表结构,且只需要流式的增量数据。 |
二、使用限制
·源表必须包含主键或者不可为 NULL 的唯一键。
·源实例不可只读。
·若选择增量同步。
·要求 MySQL 开启 GTID。
·要求开启 Binlog,且要求为 ROW 和 FULL 格式。
·支持高频 DDL 同步。
·同步过程中请勿进行如下操作,否则会导致同步任务失败。
·请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
·请勿在源库上执行分布式事务。
·请勿在源库写入 Binlog 格式为 STATEMENT 的数据。
·增量导入追上前请勿在源库上执行清除 Binlog 的操作。
·在同步增量阶段,请勿删除系统库表 __tencentdb__。
三、DDL 支持
| 对象 | DDL | 备注 |
| Database | create、drop | drop 操作转义为重命名操作:将库名修改为 “deleted_unix 时间戳_原库名” |
| Table | create、rename、drop、truncate、alter | drop 操作转义为重命名操作:将表名修改为 “deleted_unix 时间戳_原表名” |
| | | truncate 操作转义为:将表名修改为 “deleted_unix 时间戳_原表名”并新建本地表 |
| | | rename 操作不支持移动表:RENAME TABLE current_db.tbl_name TO other_db.tbl_name; |
| Column | add、drop、rename、change、modify、alter | – |
注意:说明:
四、环境要求
| 类型 | 环境要求 |
| 源数据库要求 | 源库和目标库网络能够连通。实例参数要求:源库 server_id 参数需要手动设置,且值不能设置为0。源库表的 row_format 不能设置为 FIXDE。源库和目标库 lower_case_table_names 变量必须设置一致。源库变量 connect_timeout 设置数值必须大于10。Binlog 参数要求:源端 log_bin 变量必须设置为 ON。源端 binlog_format 变量必须设置为 ROW。源端 binlog_row_image 变量必须设置为 FULL。MySQL 5.6 及以上版本 gtid_mode 变量不为 ON 时会报警告,建议打开 gtid_mode。不允许设置 do_db, ignore_db。源实例为从库时,log_slave_updates 变量必须设置为 ON。外键依赖:外键依赖只能设置为 NO ACTION,RESTRICT 两种类型。部分库表同步时,有外键依赖的表必须齐全。 |
五、注意事项
·CDC 在执行全量数据同步时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果你数据库配置过低,建议你在业务低峰期进行。
·数据同步时,CDC 会使用执行同步任务的账号在源库中写入系统库 __tencentdb__,用于记录同步任务过程中的数据对比信息。
·为保证后续数据对比问题可定位,同步任务结束后不会删除源库中的 __tencentdb__。
·__tencentdb__ 系统库占用空间非常小,约为源库存储空间的千分之一到万分之一(例如源库为50GB,则 __tencentdb__ 系统库约为5KB – 50KB) ,并且采用单线程,等待连接机制,所以对源库的性能几乎无影响,也不会抢占资源。
·为了让服务对你的源端实例影响降到最小。CDC 限制了源实例账号的权限。建议你在源数据库为 CDC 任务单独增加账号,并赋予以下权限。
·整个实例同步,需要的源端账号权限如下:
CREATE USER 'CDC账号'@'%' IDENTIFIED BY 'CDC密码'; GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHOW VIEW,PROCESS ON *.* TO 'CDC账号'@'%'; GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO 'CDC账号'@'%'; GRANT SELECT ON *.* TO 'CDC账号';
·指定对象同步,需要的源端账号权限如下:
CREATE USER 'CDC账号'@'%' IDENTIFIED BY 'CDC密码'; GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHOW VIEW,PROCESS ON *.* TO 'CDC账号'@'%'; GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO 'CDC账号'@'%'; GRANT SELECT ON `mysql`.* TO 'CDC账号'@'%';GRANT SELECT ON 待同步的库.* TO 'CDC账号';
如需了解更多 MySQL 相关权限,请参见 Privileges Provided by MySQL。
六、前提条件
·已创建源端 OLTP 数据库实例。
·已 创建 TDSQL-H LibraDB 实例。
七、操作步骤
1. 登录 TDSQL-H LibraDB 控制台。
2. 在实例列表,单击实例 ID 或在操作列单击详情。
3. 通过以下两种方式进入新建 CDC 页面。
·方式一:在实例管理页面,单击 CDC 页签。
·方式二:在架构图区域,单击添加 OLTP。
4. 设置数据源:根据以下参数说明设置数据源。
设置数据源时选择的服务提供商、接入类型不同,配置的参数项不同,请根据实际配置。
| 区域 | 参数 | 说明 |
| 任务设置 | 任务名称 | 自定义 CDC 任务名称。 |
| | 标签 | 标签用于从不同维度对资源分类管理。如果需要添加标签,请单击添加。 |
| 源库设置 | 源库类型 | 源数据库类型。目前 TDSQL-H LibraDB 仅支持同步数据库类型为 MySQL 的 OLTP 数据库。 |
| | 服务提供商 | 源数据库所属服务提供商。包括普通、AWS、阿里云。其中,普通表示非 AWS、非阿里云的源数据库。 |
| | 数据库版本 | 源数据库版本,仅服务提供商选择 AWS 或阿里云时需要选择。 |
| | 接入类型 | 包括公网、云主机自建、专线接入、VPN 接入、云数据库、云联网。具体接入类型说明请参见这篇中的背景信息。 |
| | 是否跨账号 | 源数据库账号是否与当前登录账号一致,如果一致请选择本账号,否则请选择跨账号。 |
| | 所属地域 | 源数据库实例所属地域。 |
| | 主机地址 | 源数据库实例访问 IP 地址或域名。 |
| | 端口 | 源数据库实例对应的端口号。 |
| | 账号 | 源数据库实例的账号。根据整个实例或指定对象同步,该账号需要具备权限不同,具体请参见这篇中的注意事项。 |
| | 密码 | 源数据库实例账号对应的密码。 |
| | 私有网络云联网 | 云联网接入时只支持私有网络云联网,请选择 VPC 类型的云联网。 |
5. 设置完成后,在页面下方单击测试连通性,测试通过后在页面下方单击下一步。
如果测试连通性失败,请根据提示修改源库设置信息后,继续单击测试连通性,直至测试通过后在页面下方单击下一步。
6. 设置数据同步对象:选择数据同步类型和同步对象。
·整个实例:选择整个实例后,根据已选同步类型,同步整个实例的对应数据。
·指定对象:支持库级别、表级别同步。指定对象时还支持多表归并和修改库表名映射。
多表归并说明及操作请参见 多表归并(数据合并),修改库表名映射说明及操作请参见 修改库表名映射。
7. 设置完成后,单击下一步。
8. 高级设置:可设置排序键、 设置分区键 和 自定义字段类型映射。
9. 设置完成后,单击下一步。
10. 在校验任务页面,完成校验并各项校验通过后,单击启动任务或稍后启动。
注意:说明:
注意:CDC 任务正式启动数据同步前,会检查源实例和目标实例。查询检查结果中会显示各项检查结果是否通过。
如果查询结果中有检查项校验结果为失败或告警,请在对应检查项后单击查看详情,查看错误原因并修复问题,修复后请在页面左下方单击重新校验,直至校验通过。
页面返回至 CDC 列表页面,显示当前 CDC 任务的状态、进度等相关信息。
八、后续操作
·CDC 任务创建成功后,如果未立即启动,支持立即启动任务、查看任务详情、修改任务配置参数、终止任务和创建类似任务等操作。
·CDC 任务启动后,支持完成准备工作、查看任务详情、数据对比、终止任务和创建类似任务等操作。