MySQL主从复制集群—gtid实现详解

老哥唠叨

上一篇发了MySQL主从复制集群搭建流程,不过好像小伙伴们对这个文章并不感兴趣,但是老哥出于对技术的热爱,和对小伙伴们的负责,我还是要写主从复制另一种实现方式:GTID。这些技术真的蛮重要的,希望你们能学习。

GTID 简介

从 MySQL 5.6.5 版本新增了一种主从复制方式:GTID,其全称是Global Transaction Identifier,即全局事务标识。通过GTID保证每个主库提交的事务在集群中都有唯一的一个事务ID。强化了数据库主从的一致性和故障恢复数据的容错能力。在主库宕机发生主从切换的情况下。GTID方式可以让其他从库自动找到新主库复制的位置,而且GTID可以忽略已经执行过的事务,减少了数据发生错误的概率。

GTID 组成

GTID是对一个已经提交事务的编号,并且是全局唯一的。GTID是由UUIDTID组成的。UUIDMySQL实例的唯一标识,TID代表该实例上已经提交的事务数量,随着事务提交数量递增。

举个例子:3E11FA47-71CA-11E1-9E33-C80AA9429562:23,冒号前面是UUID,后面是TID

GTID 工作原理

  • 主库 master 提交一个事务时会产生 GTID,并且记录在 binlog 日志中

  • 从库 salve I/O 线程读取 master 的 binlog 日志文件,并存储在 slave 的 relay log 中。slave 将 master 的 GTID 这个值,设置到 gtid_next 中,即下一个要读取的 GTID 值。

  • slave 读取这个 gtid_next,然后对比 slave 自己的 binlog 日志中是否有这个 GTID

  • 如果有这个记录,说明这个 GTID 的事务已经执行过了,可以忽略掉

  • 如果没有这个记录,slave 就会执行该 GTID 事务,并记录到 slave 自己的 binlog 日志中。在读取执行事务前会先检查其他 session 持有该 GTID,确保不被重复执行。

  • 在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描。

GTID实现

环境

这里我们准备两台机器,一主一从。

  • 主(master):192.168.216.111
  • 从(salve):192.168.216.222

master主库配置

[mysqld]下配置,配置完需要重启

#GTID:
server_id=111  #服务器id,一般设置为机器 IP 地址后三位
gtid_mode=on  #开启gtid模式

#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on

#binlog
log_bin = 二进制日志文件存放路径
log-slave-updates=true

#强烈建议,其他格式可能造成数据不一致
binlog_format=row

#relay log
skip_slave_start=1
复制代码

slave从库配置

[mysqld]下配置,配置完需要重启

#GTID:
gtid_mode=on #开启gtid模式
enforce_gtid_consistency=on

#服务器id,一般设置为机器 IP 地址后三位
server_id=222

#binlog
log-bin=slave-binlog
log-slave-updates=true

#强烈建议,其他格式可能造成数据不一致
binlog_format=row

#relay log
skip_slave_start=1
复制代码

检查GTID是否开启

show variables like '%gtid%';
复制代码

主库建立授权用户

# 建立授权用户
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'从机IP' IDENTIFIED BY '密码';
# 刷新MySQL的系统权限相关表
FLUSH PRIVILEGES;
复制代码

salve连接到master

CHANGE MASTER TO
MASTER_HOST='master的IP',
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_PORT=端口号,
# 1 代表采用GTID协议复制
# 0 代表采用老的binlog复制
MASTER_AUTO_POSITION = 1;
复制代码

开启主从复制

start slave;
复制代码

查看slave状态

show slave status\G
复制代码

在master上查看salve信息

show slave hosts;
复制代码

至此GTID主从复制方式搭建完毕,可以操作主库验证一下从库是否同步了数据。

IT 老哥

一个在大厂做高级Java开发的程序猿

(0)

相关推荐

  • MySQL binlog日志操作详解

    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. bi ...

  • GTID模式介绍!

    MySQL GTID Replication: 从MySQL5.6开始增加了强大的GTID(Global Transaction ID,全局事务ID)这个特性,用来强化数据库的主备一致性, 故障恢复, ...

  • MySQL主从复制集群搭建—binlog二进制文件方式

    老哥絮叨 上篇文章我们大致介绍了什么是MySQL主从复制,主从复制的几种集群架构图大概都有哪几种,今天我们就来讲讲如何实现MySQL集群的搭建.主从复制有两种方式可以实现,binlog和GTID,这期 ...

  • Mysql之锁、事务绝版详解

    一 锁的分类及特性 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则.对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能 ...

  • MySQL操作笔记(五万字详解)

    文章目录 前言 MySQL笔记 1.sql.DB.DBMS分别及三者之间的关系 2.什么是表(table) 3.SQL语句分类 4.如何导入数据(sql脚本文件) 5.什么是sql脚本 6.查看表结构 ...

  • 第70集-72集:十神详解之正财、偏财、正官

    第70集-72集:十神详解之正财.偏财.正官 视频+教材=成功 四柱命理学,民间俗称算八字,也叫算命,就是通过分析一个人的八字来预测这个人一生的财运.官运(工作.事业.学业).伤病灾.婚姻.官司是非. ...

  • 四柱八字命理学精品课程系列之064-066集:十神详解之正印、偏印、比肩

    第64集-66集:十神详解之正印.偏印.比肩 视频+教材=成功 四柱命理学,民间俗称算八字,也叫算命,就是通过分析一个人的八字来预测这个人一生的财运.官运(工作.事业.学业).伤病灾.婚姻.官司是非. ...

  • 精美合集 | 陈之佛工笔花鸟画详解及欣赏,“艳而不俗,淡而有味!

    陈之佛(1896--1962),号雪翁,浙江余姚人,是近代画坛久负盛名的一代宗师,美术教育界的老前辈,新兴工艺美术的奠基人,学贯中西的美术理论家,又是卓越的工笔画鸟画家. 陈之佛是我国著名艺术教育家, ...

  • MySQL索引底层:B+树详解

    前言 当我们发现SQL执行很慢的时候,自然而然想到的就是加索引.对于范围查询,索引的底层结构就是B+树.今天我们一起来学习一下B+树哈~ 公众号:「捡田螺的小男孩」 树简介.树种类 B-树.B+树简介 ...

  • 《美图欣赏》(美术绘画)精美合集|陈之佛工笔花鸟画详解及欣赏,“艳而不俗,淡而有味!

    陈之佛(1896--1962),号雪翁,浙江余姚人,是近代画坛久负盛名的一代宗师,美术教育界的老前辈,新兴工艺美术的奠基人,学贯中西的美术理论家,又是卓越的工笔画鸟画家. 陈之佛是我国著名艺术教育家, ...

  • ”基因集打分“GSEA算法详解

    前两天介绍了一个开发中的单细胞数据分析相关R包,内置了,4(热图,气泡图,upset图,堆叠条形图)+4(密度散点图,半小提琴,山峦图,密度热图)美图,见 8种方法可视化你的单细胞基因集打分 ,蛮多小 ...