GTID介绍
从MySQL5.6开始增加GTID这个特性,Global Transaction ID,全局事务ID,用来强化主从数据库的一致性,故障恢复,以及容错能力,来替代传统的人工的主从复制;
有了GTID,在进行主备切换的时候,slave们可以自动在新的master上找到复制位置(position),大大简化了复杂复制集群的维护工作,减少了人为设置position的风险,减少了数据不一致性的风险;
**GTID的组成:**
GTID=server_uuid:transaction_id
server_uuid指的是MySQL的uuid,在第一次启动MySQL时生成,保存在auto.cnf中;
transaction_id是事务的id,是一个从1开始的自增计数,表示在这个主库上执行的第几个事务;
比如:
b6af5b5c-666f-11e9-bed3-000c29b85ea6:1,第一个事务
b6af5b5c-666f-11e9-bed3-000c29b85ea6:1-5,第1到第5个事务
**GTID复制的工作原理**
1. master在执行更新操作时,会在事务执行时生成一个GTID,然后把GTID一起记录到binlog中;
2. slave的IO线程去读取master的binlog变更,写入自己的relay-log中;
3. slave从relay-log中取出GTID,比较自己的binlog中是否有次GTID;
4. 如果slave的binlog中有此GTID,则说明该事务已经执行过,不再执行;
5. 如果slave的binlog中没有次GTID,则执行该事务,并记录到自己的binlog中;
**GTID复制的优点**
1. 传统的主从复制,需要手动指定binlog和position,这样比较麻烦,也很容易出错,在master的写操作频繁时,也很难确定position;在GTID复制下,只需要指定MASTER_AUTO_POSITION=1,MySQL就会通过内部机制,自动找点同步;
简单来说,就是简化了复制,因为position是实时更新的,不方便手工指定,所以,GTID可以自动找到position进行同步;
2. GTID支持基于库的多线程复制,在MySQL5.6以前,slave的复制是单线程的,只能一个事件一个事件进行;所以,我们可以把一个表放在一个库里,一个库一个线程,这样就可以实现多线程复制;但是,当只有一个库的时候,多线程复制是没有用的;
**GTID相关变量**
gtid_mode=on:开启GTID;
gtid_executed:当前实例上执行过的事务集合;
GTID介绍的更多相关文章
- MariaDB · 版本特性 · MariaDB 的 GTID 介绍
本文来自阿里的数据库内核月报,写的很详细,主要是关于mariadb开启gtid之后做主从的方法. 原文连接:http://mysql.taobao.org/monthly/2016/02/08/
- GTID复制报错处理:Last_Error: Error 'Can't drop database 'test'; database doesn't exist' on query
创建GTID主从连接: mysql, master_user; 报错显示: Slave_IO_Running: Yes Slave_SQL_Running: No Last_Error: Error ...
- MySQL 5.7 Replication 相关新功能说明
背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...
- Mysql基于GTIDs的复制
通过GTIDs[global transaction identifiers],可以标识每一个事务,并且可以在其一旦提交追踪并应用于任何一个Slave上:这样 就不需要像BinaryLog复制依赖Lo ...
- Linux系统——MHA-Atlas-MySQL高可用集群
Linux系统——MHA-Atlas-MySQL高可用集群 MHA MHA介绍MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的 ...
- MySQL 5.7 Replication 相关新功能说明 (转)
背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...
- __MySQL 5.7 Replication 相关新功能说明
背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相 ...
- MySQL-16-主从复制进阶
延时从库 介绍 延时从库: 是我们人为配置的一种特殊从库,人为配置从库和主库延时N小时 为什么要有延时从库 数据库故障 物理损坏,普通的主从复制非常擅长解决物理损坏 逻辑损坏,普通主从复制没办法解决逻 ...
- MySQL-13-日志管理
常用日志参数 经常用到的有错误.快慢查询.二进制等日志 错误日志 1 作用 记录启动\关闭\日常运行过程中,状态信息,警告,错误,排查MySQL运行过程的故障 2 错误日志配置 默认就是开启的: /数 ...
随机推荐
- 【转】Kubernetes scheduler学习笔记
简介 Kubernetes是一个强大的编排工具,可以用来很方便的管理许多台机器,为了使机器的资源利用率提高,同时也尽可能的把压力分摊到各个机器上,这个职责就是由scheduler来完成的. Kuber ...
- K8S(14)监控实战-grafana出图_alert告警
k8s监控实战-grafana出图_alert告警 目录 k8s监控实战-grafana出图_alert告警 1 使用炫酷的grafana出图 1.1 部署grafana 1.1.1 准备镜像 1.1 ...
- Linux网络文件下载
wget 以网络下载 maven 包为例 wget -c http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-ma ...
- leetcode15 三数之和 双指针
注意题目没要求数字只能用一次 a + b + c = 0 即为 -b=a+c,同时要求数字不全为正(然后发现a+b+c就行...不过多想想没坏处嘛) 先处理特殊情况,然后 先排序 注意不重复,只需要有 ...
- Leetcode(23)-合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- nyoj-2357
2357: 插塔憋憋乐 时间限制: 1 秒 内存限制: 128 MB提交: 107 解决: 28提交 状态 题目描述 众所不知,LLM是一位红警3大佬,打的非常厉害,但是曾经也是一位萌新,喜欢在家 ...
- C# 类 (7) - 抽象 Abstract
Abstract 抽象类,关键字Abstract ,最典型的应用就是在 继承机制里 作为base类,抽象类是不能被实例化的(前面说的static 类也不能被实例化)它必须作为 基类,被别人继承,然后必 ...
- Python_K-means算法
from sklearn import cluster [centroid, label, inertia] = cluster.k_means(data_to_be_classified, num_ ...
- you don't know github
you don't know GitHub <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- 如何使用 js 实现一个树组件
如何使用 js 实现一个树组件 tree component const arr = [ { id: 1, value: 1, level: 1, parentId: 0, }, { id: 2, v ...