MySQL GTID
GTID
这里主要简单描述下实现 GTID 遇到的问题
MySQL vs MariaDB
MariaDB 10.0.2 开始支持 GTID, MySQL 5.6 开始支持GTID,因为 MariaDB 是基于 MySQL 5.5.5, 因此 MariaDB 的 GTID 与 MySQL 的 GTID 姿势并不一样.
- GTID 格式不一样
MySQL:
UUID SET
3E11FA47-71CA-11E1-9E33-C80AA9429562:23
server_uuid:interval
GTID SETuuid_set[, uuid_set] ... | ''
MariaDB0-3306-123
*DomainID-ServerID-Sequence
- 开始 GTID 复制的流程不一样 MySQL 使用 COM_BINLOG_DUMP_GTID 开始复制流程,在包中指定 GTID SET COM_BINLOG_DUMP_GTID 是 5.6 支持的协议 MariaDB
-- 对于不同的复制需求,通过设置会话中的变量指定-- 可通过抓包看到 MaraDB 开始复制的流程-- 主要与 GTID 相关的变量SET @mariadb_slave_capability = 4;-- 表明能接受 GTIDSET @slave_connect_state = '0-3311-90';-- 指定 GTID-- 然后发送 REGISTER_SLAVE-- MySQL 是发送 BINLOG_DUMP.REGISTER_SLAVE 是可选的
- MariaDB 的 GTID 事件包与 MySQL 的不同,目前只有通过抓包分析.
- MySQL 的协议有相对完善的文档, MariaDB 什么的协议,文档滴没有 * MariaDB 大部分协议与 MySQL 相同, 但是这部分不同