美文网首页
Mariadb基于GTID复制实验

Mariadb基于GTID复制实验

作者: 刘小白DOER | 来源:发表于2020-09-15 21:02 被阅读0次

    全局事务标识符(global transaction identifition),即每个事务都有一个唯一的标识符,64位的非零数值,根据事务提交的顺序分配。但是这个值是服务器本地的,要使事务标识符称为全局的,还要加上UUID构成一对。

    参考我的文章 mysql(mariadb)数据库主备同步  ,在配置基于二进制日志复制时需要有定位到master的命令,即需要知道MASTER_HOST的二进制日志名称和POS位置,复制源切换时比较麻烦。CHANGE MASTER TO MASTER_HOST='192.168.31.33',MASTER_USER='sync',MASTER_PASSWORD='sync',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1109 。

    全局事务配置后,change master不需要填写二进制日志位置和文件,会自动协商应该发送什么事务。需要注意的是mysql的gtid和mariadb的gtid有些区别不兼容,在MariaDB 10版中默认是开启GTID复制模式,无需设置GTID任何参数。笔者在最开始时参照mysql来配置,gtid-mode=ON,发现  service mysqld restart后数据库服务不可用。所以MariaDB还是有优势的,MariaDB更加的方便好用。

STOP SLAVE;

CHANGE MASTER TO master_host='192.168.31.33', master_port=3306, master_user='sync',master_password='sync',master_use_gtid=current_pos;

START SLAVE;

而从GTID模式切换回以前的binlog模式也不复杂。

STOP SLAVE;

CHANGE MASTER TO MASTER_HOST='192.168.31.33', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1109;

START SLAVE;

show slave status\G;查看slave线程状态正常,gtid正常。可以看到当前slave使用的GTID 传输为Using_Gtid: Current_Pos,获取到的pos位置为0-6-96。

    查找资料。“0”,第一位是Domain ID,这是一个32位的无符号整型;“6”,第二位是Server ID,这跟传统的主备复制中 Server ID 的含义是一样的,也是一个32位无符号整型。因此在一个复制拓扑中每个实例的Server ID必须是唯一的;“96”,第三位是事务序列号(Sequence Number)。这是一个64位的无符号整型。每个新产生的 Event Group 记录到Binlog时都会新生成一个单调递增的序列号。

    SHOW BINLOG EVENTS\G;可以查看到event_type为gtid_list。

相关文章

网友评论

      本文标题:Mariadb基于GTID复制实验

      本文链接:https://www.haomeiwen.com/subject/mpzfyktx.html