有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
当需要将已有 OLTP 数据库实例数据同步至 TDSQL-H LibraDB 数据库实例时,可通过添加 CDC 任务建立 OLTP 到 LibraSQL 分析引擎的数据同步链路,已有 OLTP 即可拥有 HTAP 能力。

背景信息

一个 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
-

说明
当分析引擎是 LibraSQL 10.3.203 及更早期版本时,由于 Database Engine 不支持 atomic engine,下述 DDL 不支持:rename、drop、truncate、alter rename table、drop database。
对于删除类操作,为保障数据安全,我们会转义为改名操作。
库表 DDL 同步说明:
“同步对象”选择“整个实例”,在 CDC 任务启动后:OLTP 新增的对象及其修改均能同步到分析引擎。
“同步对象”选择“指定对象”,且指定对象为整库时,在 CDC 任务启动后:OLTP 指定库中新增的表及其修改会同步到分析引擎,但不会同步其他库的变化。

环境要求

类型
环境要求
源数据库要求
源库和目标库网络能够连通。
实例参数要求:
源库 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 数据库实例。

操作步骤

2. 在实例列表,单击实例 ID 或在操作列单击详情
3. 通过以下两种方式进入新建 CDC 页面。
方式一:在实例管理页面,单击 CDC 页签。
方式二:在架构图区域,单击添加 OLTP
4. 设置数据源:根据以下参数说明设置数据源。

设置数据源时选择的服务提供商、接入类型不同,配置的参数项不同,请根据实际配置。
区域
参数
说明
任务设置
任务名称
自定义 CDC 任务名称。
标签
标签用于从不同维度对资源分类管理。如果需要添加标签,请单击添加
源库设置
源库类型
源数据库类型。目前 TDSQL-H LibraDB 仅支持同步数据库类型为 MySQL 的 OLTP 数据库。
服务提供商
源数据库所属服务提供商。包括普通、AWS、阿里云。其中,普通表示非 AWS、非阿里云的源数据库。
数据库版本
源数据库版本,仅服务提供商选择 AWS 或阿里云时需要选择。
接入类型
包括公网、云主机自建、专线接入、VPN接入、云数据库、云联网。具体接入类型说明请参见本文中的背景信息。
是否跨账号
源数据库账号是否与当前登录账号一致,如果一致请选择本账号,否则请选择跨账号。
所属地域
源数据库实例所属地域。
主机地址
源数据库实例访问 IP 地址或域名。
端口
源数据库实例对应的端口号。
账号
源数据库实例的账号。根据整个实例或指定对象同步,该账号需要具备权限不同,具体请参见本文中的注意事项。
密码
源数据库实例账号对应的密码。
私有网络云联网
云联网接入时只支持私有网络云联网,请选择 VPC 类型的云联网。
5. 设置完成后,在页面下方单击测试连通性,测试通过后在页面下方单击下一步。 如果测试连通性失败,请根据提示修改源库设置信息后,继续单击测试连通性,直至测试通过后在页面下方单击下一步
6. 设置数据同步对象:选择数据同步类型和同步对象。
整个实例:选择整个实例后,根据已选同步类型,同步整个实例的对应数据。
指定对象:支持库级别、表级别同步。指定对象时还支持多表归并和修改库表名映射。 多表归并说明及操作请参见 多表归并(数据合并),修改库表名映射说明及操作请参见 修改库表名映射
7. 设置完成后,单击下一步
9. 设置完成后,单击下一步
10. 在校验任务页面,完成校验并各项校验通过后,单击启动任务稍后启动
说明
CDC 任务正式启动数据同步前,会检查源实例和目标实例。查询检查结果中会显示各项检查结果是否通过。 如果查询结果中有检查项校验结果为失败或告警,请在对应检查项后单击查看详情,查看错误原因并修复问题,修复后请在页面左下方单击重新校验,直至校验通过。
失败:不能启动 CDC 任务。
告警:可启动 CDC 任务,根据错误原因评估是否对业务有影响,如果有请修复问题后重新校验。
页面返回至 CDC 列表页面,显示当前 CDC 任务的状态、进度等相关信息。

后续操作

CDC 任务创建成功后,如果未立即启动,支持立即启动任务、查看任务详情、修改任务配置参数、终止任务和创建类似任务等操作。
CDC 任务启动后,支持完成准备工作、查看任务详情、数据对比、终止任务和创建类似任务等操作。