深入理解MySQL 5.7 GTID系列(一)

作者:高鹏(重庆八怪)

原文地址:

http://www.jianshu.com/p/87f66cdeb49c

本次将陆续推出系列文章共十篇,本文使用的源码版本为percona 5.7.14,也比较过5.7.17,5.6.25的源码版本,暂时没有能力比较全部的MySQL源码版本,如有误导还请见谅。

MySQL GTID特性是5.6加入的一个强大的特性,它的目的在于使用GTID的MySQL能够在整个复制环境中能够自动地切换,而不像以前需要指定文件和位置,这也一定是未来发展的方向,我们熟知的MGR也是基于GTID的,所以了解GTID的原理也是必要的。

GTID的维护是完全自动的,但是实际使用上确实有较多的坑,也导致很多朋友对GTID还是觉得畏惧,本系列文章将从GTID模块的源码出发分析,并且给出总结,然后结合运维和案例进行综合的解析,我希望抛砖引玉让希望了解源码的朋友也有所收获,但是能力有限特别是源码部分如果有错误请指出,并且能够一起交流,如果有朋友有更好的案例也欢迎一起探讨。
当然留下这么一个系列也有自己的原因,好记性不如烂笔头嘛,因此也当自己的一个笔记了。

一、GTID事务的生命周期

GTID的全称为global transaction identifier,他在整个复制生态中完全唯一的,下面我们通过一个图来解释它的整个生命周期,假设我们这里有一个master->slave->slave的复制环境,生成了一个GTID为89dfa8a4-cb13-11e6-b504-000c29a879a3:1的GTID事务,因为名字太长我简化为879a3:1如图:

我们可以看到在整个生命周期中整个事务的GTID号是没有改变的,不管在主库还是从库它都是89dfa8a4-cb13-11e6-b504-000c29a879a3:1,这也是为什么叫做全局的原因。

二、本系列文章包含了哪些内容

本系列文章一共分为十节:

  • 深入理解MySQL 5.7 GTID系列(一):导读


  • 深入理解MySQL 5.7 GTID系列(二): GTID相关内部数据结构


  • 深入理解MySQL 5.7 GTID系列(三) :GTID和Last_commt/sequnce_number的生成时机


  • 深入理解MySQL 5.7 GTID系列(四) :MySQL.GTID_executed表的作用和Previous GTID Event的改变


  • 深入理解MySQL 5.7 GTID系列(五) :MySQL.GTID_executed表/GTID_executed变量/GTID_purged变量的更改时机


  • 深入理解MySQL 5.7 GTID系列(六) :MySQL启动初始化GTID模块


  • MySQL 5.7 GTID内部学习(七) 总结binlog_GTID_simple_recovery参数带来的影响


  • MySQL 5.7 GTID内部学习(八) GTID带来的运维改变


  • MySQL 5.7 GTID内部学习(九) 实际案例(一)


  • MySQL 5.7 GTID内部学习(十) 实际案例(二)

每一节都包含了总结和大量的文字描述,希望对普通的运维DBA有所帮助,同时也希望对想了解源码的DBA也有所引导。

本节只是一个导读,希望能够让大家对GTID有一个基本了解,如果需要继续了解可以看看官方文档。

  • 18.1.3 Replication with Global Transaction Identifiers



对本文有任何疑问可扫码添加原文作者微信




知数堂

叶金荣与吴炳锡联合打造

领跑IT精英培训

行业资深专家强强联合,倾心定制

MySQL实战/MySQL优化 / Python/ SQL优化

数门精品课程

紧随技术发展趋势,定期优化培训教案

融入大量生产案例,贴合企业一线需求

社群陪伴学习,一次报名,可学3期

DBA、开发工程师必修课

上千位学员已华丽转身,薪资翻番,职位提升

改变已悄然发生,你还在等什么?

扫码下载知数堂精品课程试听视频

(MySQL 实战/优化、Python开发,及SQL优化等课程)

密码:hg3h


MySQL 5.7引入了GTID(Global Transaction Identifier)特性,这对于高可用性和故障恢复非常重要。GTID提供了一种跟踪跨多个数据库实例的事务的方式,使得主从复制更为可靠。下面是安装和配置MySQL 5.7 GTID主从的一般步骤: 1. **安装MySQL 5.7**: - 下载MySQL 5.7的二进制包,可以从MySQL官网下载适用于你操作系统的版本。 - 按照官方文档的指示进行安装,确保在安装过程中选择“GTID”作为复制模式。 2. **初始化主服务器**: - 配置my.cnf文件,开启GTID相关选项,例如设置`gtid_mode=ON` 和 `enforce_gtid_consistency=ON`。 - 启动MySQL服务并创建一个包含GTID的初始数据库实例。 3. **启用二进制日志**: - 在my.cnf中配置`log_bin`和`expire_logs_days`以管理二进制日志,这对主从复制至关重要。 4. **配置主从复制**: - 创建复制用户并分配合适的权限,如`REPLICATION SLAVE`。 - 在主服务器上执行`CHANGE MASTER TO`命令来指定从服务器的信息,包括GTID的位置(例如,`MASTER_GTID_FILE`和`MASTER_BINLOG_POS`)。 5. **启动从服务器**: - 使用相同的GTID配置启动从服务器。 - 运行`START SLAVE`命令,让从服务器开始同步数据。 6. **监控和调试**: - 定期检查`SHOW MASTER STATUS`和`SHOW SLAVE STATUS\G`来确保复制状态正常。 - 如果遇到问题,查看错误日志和使用`mysqlbinlog`工具分析事务历史。 **相关问题--:** 1. GTID是什么,它如何提高复制的可靠性? 2. 在配置主从复制时,如何正确设置`CHANGE MASTER TO`命令? 3. 有哪些常见的GTID复制问题及解决方法?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值