当需要将已有 OLTP 数据库实例数据同步至 TDSQL-H LibraDB 数据库实例时,可通过添加 CDC 任务建立 OLTP 到 LibraSQL 分析引擎的数据同步链路,已有 OLTP 即可拥有 HTAP 能力。
背景信息
一个 TDSQL-H LibraDB 实例支持创建一个或多个数据同步链路(即 CDC 任务)。
TDSQL-H LibraDB 支持的源端 OLTP 数据库包括自建数据库、云数据库和第三方云厂商数据库,数据库类型当前仅支持 MySQL。
支持的源数据库网络接入类型说明如下:
接入类型 | 说明 |
公网 | 源数据库可通过公网 IP 访问。 |
云主机自建 | |
专线接入 | |
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账号';
前提条件
已创建源端 OLTP 数据库实例。
操作步骤
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. 设置完成后,单击下一步。
9. 设置完成后,单击下一步。
10. 在校验任务页面,完成校验并各项校验通过后,单击启动任务或稍后启动。
说明:
CDC 任务正式启动数据同步前,会检查源实例和目标实例。查询检查结果中会显示各项检查结果是否通过。
如果查询结果中有检查项校验结果为失败或告警,请在对应检查项后单击查看详情,查看错误原因并修复问题,修复后请在页面左下方单击重新校验,直至校验通过。
失败:不能启动 CDC 任务。
告警:可启动 CDC 任务,根据错误原因评估是否对业务有影响,如果有请修复问题后重新校验。
页面返回至 CDC 列表页面,显示当前 CDC 任务的状态、进度等相关信息。
后续操作
CDC 任务创建成功后,如果未立即启动,支持立即启动任务、查看任务详情、修改任务配置参数、终止任务和创建类似任务等操作。
CDC 任务启动后,支持完成准备工作、查看任务详情、数据对比、终止任务和创建类似任务等操作。