功能介绍
官方 MySQL5.6以下的版本在 slave 节点进行回放,master 节点同步 binlog 时,均为单线程模式,5.6及之后的版本变更为并行模式。但官方的并行是基于 database 和 logical clock,并行粒度太大,导致很多情况下并行效果不理想。
腾讯云 TXSQL 内核团队针对并行复制功能进行了优化,支持按 table 并行,相当于将其粒度拆分至表,提升了并行度,从而减少主从延迟。
支持版本
内核版本 MySQL8.0 20201230及以上
内核版本 MySQL5.7 20180530及以上
内核版本 MySQL5.6 20170830及以上
适用场景
该功能主要针对部分负载能提升 slave 机重放 binlog 速度,减少主从的 delay。
使用说明
说明:
并行复制能力通过设置参数 slave_parallel_workers 不为0来开启,在 MySQL5.6、5.7、8.0版本的高稳定性参数模板中,此参数默认值为0,在高性能参数模板中,此参数默认值为8。
MySQL5.6、5.7、8.0版本如需按 TABLE 执行并行复制,在设置参数 slave_parallel_workers 不为0的前提下,可通过将参数 slave_parallel_type 设置为新增加的值 TABLE 来实现。
另外 information_schema 下新增加了状态表 cdb_slave_thread_status,用以展示状态信息。
参数名 | 动态 | 类型 | 默认 | 参数值范围 | 说明 |
slave_parallel_type | YES | char* | SCHEMA | SCHEMA/TABLE | 从机并行复制级别: SCHEMA 为对象级别复制,不同对象的复制事件可以并行执行。 TABLE 为表级别复制,不同表的复制事件可以并行执行。 |
参数名 | 动态 | 类型 | 默认 | 参数值范围 | 说明 |
slave_parallel_type | YES | char* | LOGICAL_CLOCK | DATABASE/TABLE/LOGICAL_CLOCK | 从机并行复制级别: DATABASE 为库级别的复制,不同数据库的复制事件可并行完成。 TABLE 为表级别复制,不同表的复制事件可以并行执行。 LOGICAL_CLOCK 为逻辑时钟级别复制,在主机上属于相同逻辑时钟的事件可并发执行。 |
参数名 | 动态 | 类型 | 默认 | 参数值范围 | 说明 |
slave_parallel_type | YES | char* | LOGICAL_CLOCK | DATABASE/TABLE/LOGICAL_CLOCK | 从机并行复制级别: DATABASE 为库级别的复制,不同数据库的复制事件可并行完成。 TABLE 为表级别复制,不同表的复制事件可以并行执行。 LOGICAL_CLOCK 为逻辑时钟级别复制,在主机上属于相同逻辑时钟的事件可并发执行。 |