TDSQL Boundless 支持通过订阅 MySQL 兼容的 Binlog 事件,将数据变更实时同步至目标数据库或其他第三方平台,适用于云上云下多活、异地容灾、跨境同步及实时数仓等场景。Binlog 订阅功能已在腾讯内部多个核心业务稳定运行超一年,覆盖电商营销、大数据调度、内容审核、广告投放等多个场景。TDSQL Boundless 产生和 MySQL 一致的 Binlog 格式,以兼容 MySQL 社区的 Binlog 订阅生态,如 Canal,Flink,Kafka(可通过 DTS 推送)等。TDSQL Boundless 借助共识协议 Raft 的产生异步日志流再进行转化而产生,这个设计使得 Binlog 开启对写入仅有非常小的负担。
性能压测
Sysbench 基准测试
测试项 | 测试值 |
数据量 | 1000万 × 10张表 |
测试模型 | sysbench update non index |
Binlog 订阅节点吞吐量 | 10.5w QPS |
资源规格 | 32C 64G |
CPU 占用 | 4C |
内存占用 | 8.4GB |
72小时稳定性测试
测试项 | 测试配置 |
实例规格 | 3MC (4C8G) + 15HyperNode (16C32G) + 1Binlog 订阅节点 (48C96G) |
客户端压力 | 15张表,15并发,共 5w QPS insert |
持续时长 | 72小时 |
同步延迟 | 稳定保持在10s内 |
大宽表场景优化
宽表场景(平均行长1.5KB),客户端压力5w QPS,回放延迟保持10s内。
表结构如下:
CREATE TABLE `sbtest1` (`id` bigint NOT NULL,`uid` bigint NOT NULL,`phase` int NOT NULL,`status` int NOT NULL,`detail` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`createdTime` datetime NOT NULL,`lastModTime` datetime NOT NULL,`business` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,`materialId` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,`materialType` int NOT NULL,`reviewDataId` bigint NOT NULL,`deleteStatus` int NOT NULL,`traceId` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`reviewDataLogDetail` mediumblob,`physicalFinger` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`originalFinger` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`originalResourceId` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`parentTraceId` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`grandParentId` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,`parentId` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,PRIMARY KEY (`id`),KEY `idx_materialId` (`materialId`),KEY `idx_uid` (`uid`),KEY `idx_reviewDataId` (`reviewDataId`),KEY `idx_createdTime` (`createdTime`),KEY `idx_phase` (`phase`),KEY `idx_status` (`status`),KEY `idx_parentId` (`parentId`)) ENGINE=ROCKSDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8
大事务场景优化
跑批业务或者其他经常性处理大事务场景下,建议适当调整如下参数,以提升性能。
-- 提升大事务处理能力wait_flush_binlog_cache_max_size = 100MB-- 优化内存使用tdstore_block_cache_size = 300MB
功能限制
使用 Binlog 订阅 TDSQL Boundless 数据变更时,请注意以下相关限制要求以及暂不支持的场景。
说明:
Binlog 开启与关闭均为平滑进行,无需重启实例,不影响业务读写,通常在1 ~ 2分钟内完成。
仅支持预置资源实例开启或者关闭 Binlog,不支持 Serverless 实例开启或者关闭 Binlog。
Binlog 功能自内核版本 V21.2.0 起正式支持。开启 Binlog 后,暂不支持记录 FUNCTION(函数)、PROCEDURE(存储过程)、TRIGGER(触发器)的 DDL 操作到 Binlog。若存在上述对象的变更,需通过其他方式手动同步至下游。历史内核版本功能限制如下:
内核版本低于 V21.0.0:不支持记录 VIEW(视图)的 DDL 操作到 Binlog。
内核版本低于 V20.0.0:开启 Binlog 后将自动禁用
CREATE TABLE ... AS SELECT ... 语法,如需恢复,需联系技术支持关闭同步功能并重启实例。不支持 HBase 兼容模式,仅支持 MySQL 兼容模式。
暂不支持开启 冷数据归档 的实例开启 Binlog,且 Binlog 服务与冷数据归档二者只能二选一开启。
暂不支持开启 库表回收站 的实例开启 Binlog,且 Binlog 服务与库表回收站二者只能二选一开启。
暂不支持独立下载 Binlog 文件,可通过 MySQL Binlog Dump 协议或 CKafka 订阅日志,可参考 通过 DTS 订阅 TDSQL Boundless。
Binlog 日志默认可保留7天,超出保留期限的 Binlog 将被自动清理,无法恢复。
仅支持运行中的实例开启或关闭 Binlog。