MySQL的半同步是什么? (4)

不支持create table ... select 语句复制(主库直接报错);(原理: 会生成两个sql, 一个是DDL创建表SQL, 一个是insert into 插入数据的sql; 由于DDL会导致自动提交, 所以这个sql至少需要两个GTID, 但是GTID模式下, 只能给这个sql生成一个GTID)

不允许一个SQL同时更新一个事务引擎表和非事务引擎表;

在一个MySQL复制群组中,要求全部开启GTID或关闭GTID。

开启GTID需要重启 (mysql5.7除外);

开启GTID后,就不再使用原来的传统复制方式(不像半同步复制,半同步复制失败后,可以降级到异步复制);

对于create temporary table 和 drop temporary table语句不支持;

不支持sql_slave_skip_counter;

其实GTID的这部分内容挺多的,如果有想深入研究的可以去看看这篇文章。
最后说几个开启GTID的必备条件:

MySQL 5.6 版本,在my.cnf文件中添加:

gtid_mode=on (必选) #开启gtid功能 log_bin=log-bin=mysql-bin (必选) #开启binlog二进制日志功能 log-slave-updates=1 (必选) #也可以将1写为on enforce-gtid-consistency=1 (必选) #也可以将1写为on

MySQL 5.7或更高版本,在my.cnf文件中添加:

gtid_mode=on (必选) enforce-gtid-consistency=1 (必选) log_bin=mysql-bin (可选) #高可用切换,最好开启该功能 log-slave-updates=1 (可选) #高可用切换,最好打开该功能

参考:
《高性能MySQL》
MySQL 基于GTID复制模式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssgyg.html