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 数据变更时,请注意以下相关限制要求以及暂不支持的场景。
兼容性问题
仅支持内核版本19.2.0及以上版本的数据库实例开启 Binlog 日志订阅。
暂不支持生成 FUNCTION(函数)、PROCEDURE(存储过程)、TRIGGER(触发器)操作的 Binlog 日志。
内核版本低于20.0.0的数据库实例开启 Binlog 后将自动禁用
CREATE TABLE ... AS SELECT ...语法,如需恢复,需联系技术支持关闭同步功能并重启实例。内核版本低于21.0.0的数据库实例不支持生成 VIEW(视图)操作的 Binlog。
功能限制
仅支持通过 MySQL Binlog 协议订阅日志,暂不支持独立下载 Binlog 文件。
单数据库实例最多创建5个 Binlog 订阅任务。