MySQL5.7新增加的特性gtid基础介绍

  

下文主要给大家带来MySQL5.7新增加的特性gtid基础,希望这些内容能够带给大家实际用处,这也是我编辑MySQL5.7新增加的特性gtid基础这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

1, MySQL5.7新特性:gtid复制

①: gtid是什么

,,是事务的ID,唯一识别号,全局唯一。

,,随事务记录到二进制日志中,用来标识事务。

,,每个事务有一个Gtid_log_event又是;,,

②: GTID的构成

,,UUID +序列号

注意:序号是MySQL云服务器内部的一个事务顺序号。一个MySQL云服务器上的事务不会有重复的顺序号(保证云服务器内唯一)。

每个MySQL云服务器有一个全局唯一的UUID。

③: GTID的目的

,,简化复制的使用过程和降低复制集群维护的难度:不再依赖大师的binlog文件名和文件中的位置。

,,由MASTER_LOG_FILE=' Master-bin修改主。000010年,MASTER_LOG_POS=' 214 ';改为:修改主AUTO_POSITION=1;

④: AUTO_POSITION的原理

*: MySQL服务器记录了所有已经执行了的事务的GTID,包括复制过来的。

,,可用过系统变量Gtid_executed查看。

*:奴隶记录了所有从主接收过来的事务的GTID。

,,可通过Retrieve_gtid_set查看

*:奴隶连接到主时,会把gtid_executed中的gtid发给主人。主人会自动跳过这些事务,只将没有复制的事物发送到奴隶去。

 MySQL5.7新增加的特性gtid基础介绍

⑤: MySQL5.7GTID在线启用gtid功能的优点

,,不需要重启MySQL云服务器。

,,配置过程在线,整个复制集群仍然对外提供读和写的服务。

,,不需要改变复制拓扑结构。

,,可以在任何结构的复制集群中在线启用GTID功能。

,,,更简单的搭建主从复制。

,,,比传统的复制更加安全。

,,,GTID是连续的没有空洞的,保证数据的一致性,零丢失。

⑥: GTID的开启场景

,,新系统搭建时直接开启GTID功能

,,,老系统升级到MySQL5.7后开启GTID功能

,,老系统开启GTID的复杂性

,,,复制集群中有的开启了GTID,有的没有开启。

,,,开启前的BINLOG中的事务没有GTID,开启后的有GTID

GTID启动过程中的模式:

,,全局系统变量GTID_MODE

,,,了,,,,,不产生GTID,,奴隶只接受不带GTID的事务

,,OFF_PERMISSIVE大敌;不产生GTID,,奴隶即接受不带GTID的事务也接受带GTID的事务

,,,ON_PERMISSIVE ,产生GTID,,奴隶即接受不带GTID的事务也接受带GTID的事务

,,,提醒;,,,,,产生GTID,,奴隶只接受带GTID的事务

⑦:简化的配置过程

, @@GLOBAL设置。GTID_MODE=OFF_PERMISSIVE;(在每一个云服务器上设置)

, @@GLOBAL设置。GTID_MODE=ON_PERMISSIVE;(在每一个云服务器上设置)

,等一段时间,让不带GTID的binlog事件在所有的云服务器上执行完毕。

, @@GLOBAL设置。GTID_MODE=;(在每一个云服务器上设置)

存储GTID到表中的目的:

,,支持奴隶不开启Binlog的场景

,,,有些奴隶永远不会被切换成主人。不开启binlog,可以节省空间,提高性能。

,,,MySQL5.6上GTID只能存储在binlog中,所以必须开启binlog才能使用GTID功能只,,

,,MySQL5.7则不需要开启binlog了。

如何记录GTID到表中

,,如果开启了binlog,在切换binlog时,将当前binlog的所有GTID插入gtid_executed表中。插入操作等价于一个或多个插入语句。

插入mysql。gtid_executed (UUID, 100)

如果没有开启binlog,每个事务在提交之前,会执行一个等价的插入的操作。此操作是该事务的一部分,和事务的其他操作整体保持原子性。

开始,

插入mysql。gtid_executed (UUID、101、101);

提交;

gtid_executed表的压缩:

压缩前

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

| source_uuid,,,,,,,,,,,,,| interval_start | interval_end |

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

| xxxxxxxx - 4733 - 11 - e6 - 91 - fe - 507 b9d0eac6d |,,,,,,1 |大敌;,,,,,1 |

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

| xxxxxxxx - 4733 - 11 - e6 - 91 - fe - 507 b9d0eac6d |,,,,,,2 |大敌;,,,,,2 |

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

MySQL5.7新增加的特性gtid基础介绍