MySQL-5.6版本GTID的主从复制
mysql GTID Replication
一、GTID的概述:
1、全局事物标识:global transaction identifieds。
2、GTID事物是全局唯一性的,且一个事务对应一个GTID。
3、一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致。
4、GTID用来代替classic的复制方法,不在使用binlog+pos开启复制。而是使用master_auto_postion=1的方式自动匹配GTID断点进行复制。
5、MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善。
6、在传统的slave端,binlog是不用开启的,但是在GTID中,slave端的binlog是必须开启的,目的是记录执行过的GTID(强制)。
二、GTID的组成部分:
前面是server_uuid:后面是一个序列号
例如:server_uuid:sequence number
7800a22c-95ae-11e4-983d-080027de205a:10
UUID:每个mysql实例的唯一ID,由于会传递到slave,所以也可以理解为源ID。
Sequence number:在每台MySQL服务器上都是从1开始自增长的序列,一个数值对应一个事务。
三、GTID比传统复制的优势:
1、更简单的实现failover,不用以前那样在需要找log_file和log_Pos。
2、更简单的搭建主从复制。
3、比传统复制更加安全。
4、GTID是连续没有空洞的,因此主从库出现数据冲突时,可以用添加空事物的方式进行跳过。
四、GTID的工作原理:
要点:
1、slave在接受master的binlog时,会校验master的GTID是否已经执行过(一个服务器只能执行一次)。
2、为了保证主从数据的一致性,多线程只能同时执行一个GTID。
六、使用GTID搭建mysql的主从复制的主要参数:
注意:建议使用mysql-5.6.5以上的最新版本。
(二)、启动GTID的两种方法:
方法一、
1、如果是在已经跑的服务器,你需要重启一下mysql server。
2、启动之前,一定要先关闭master的写入,保证所有slave端都已经和master端数据保持同步。
3、所有slave需要加上skip_slave_start=1的配置参数,避免启动后还是使用老的复制协议。
方法二、
1、如果是新搭建的服务器,直接启动就行了。
七、master-slave搭建的注意事项:
(一)、使用GTID的方式,把salve端挂载master端:
1、启动以后最好不要立即执行事务,而是先change master上。
2、然后在执行事务,当然知不是必须的。
3、使用下面的sql切换slave到新的master。
stop slave;
change master to
master_host = 192.168.100.200,
master_port = 3306,
master_user = abobo,
master_password=123,
master_auto_position = 1;
(二)、如果给已经运行的GTID的master端添加一个新的slave
有两种方法:
方法一、适用于master也是新建不久的情况。
1、如果你的master所有的binlog还在。可以选择类似于上面的方法,安装slave,直接change master to到master端。
2、原理是直接获取master所有的GTID并执行。
3、优点:简单方便。
4、缺点:如果binlog太多,数据完全同步需要时间较长,并且master一开始就启用了GTUD。
方法二、适用于拥有较大数据的情况。(推荐)
1、通过master或者其他slave的备份搭建新的slave。(看第三部分)
2、原理:获取master的数据和这些数据对应的GTID范围,然后通过slave设置@@global.gtid_purged跳过备份包含的gtid。
3、优点:是可以避免第一种方法的不足。
4、缺点:相对来说有点复杂。
(三)、通过备份搭建新的slave:(方法二的扩展)
两种方法:
方法一、mysqldump的方式:
1、在备份的时候指定--master-data=2(来保存binlog的文件号和位置的命令)。
2、使用mysqldump的命令在dump文件里可以看到下面两个信息:
SET @@SESSION.SQL_LOG_BIN=0;
SET @@GLOBAL.GTID_PURGED='7800a22c-95ae-11e4-983d-080027de205a:1-8';
3、将备份还原到slave后,使用change master to命令挂载master端。
注意:在mysql5.6.9以后的命令才支持这个功能。
方法二、percona Xtrabackup
1、Xtrabackup_binlog_info文件中,包含global.gtid_purged='XXXXXX:XXXX'的信息。
2、然后到slave去手工的 SET GLOBAL.GTID_PURGED='XXXXXX:XXXX'。
3、恢复备份,开启change master to 命令。
注意:如果系统运行了很久,无法找到GTID的变好了,可以通过上面的方式进行查找。
八、GTID如何跳过事务冲突:
1、这个功能主要跳过事务,代替原来的set global sql_slave_skip_counter = 1。
2、由于在这个GTID必须是连续的,正常情况同一个服务器产生的GTID是不会存在空缺的。所以不能简单的skip掉一个事务,只能通过注入空事物的方法替换掉一个实际操作事务。
3、注入空事物的方法:
stop slave;
set gtid_next='xxxxxxx:N';
begin;commit;
set gtid_next='AUTOMAIC';
start slave;
4、这里的xxxxx:N 也就是你的slave sql thread报错的GTID,或者说是你想要跳过的GTID。
MySQL-5.6版本GTID的主从复制的更多相关文章
- percona mysql server5.7基于gtid的主从复制
配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...
- mysql主从之基于gtid的主从复制
一 GITD介绍 1.1 gtid的含义 Global Transaction Identifier,全局事务标识 阿里云的rds目前已经使用gtid 基于gtid的主从复制原理 每个mysql数据库 ...
- MySQL 5.7基于GTID的主从复制
since i've broken down the replication enviornment by "reset master;" yesterday.th ...
- MySQL 5.7基于GTID的主从复制环境搭建(一主一从)
Preface As wel all know,replication base on GTID with row format of binary log is comprehens ...
- MySQL 5.7 基于GTID主从复制+并行复制+半同步复制
环境准备 IP HOSTNAME SERVICE SYSTEM 192.168.131.129 mysql-master1 mysql CentOS7.6 192.168.131.130 mysql- ...
- 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)
主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...
- Mysql5.7实现主从复制、基于GTID的主从复制、并行复制
(一.主从复制) 一.mysql主从复制原理 mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...
- 5.6版本GTID复制异常处理一例(转)
http://imysql.com/2014/07/31/mysql-faq-exception-replication-with-gtid.shtml 昨天处理了一个MySQL 5.6版本下开启GT ...
- Windows系统环境下创建mysql主从数据库方法(双向主从复制)
创建mysql主从数据库方法(双向主从复制) (一)Windows系统下的MySQL主从复制(单向复制) (1)环境说明: 1,Mysql版本:mysql5.7.20(主从机mysql版本必须一致) ...
随机推荐
- C#的async和awaiit的一些记录
一,最近在学习abp的东西.发现其中作者在获取数据时,大量的使用了async和awaiit.好吧,因为不太懂,所以网上搜搜,在这里记录一下. 先来看一段代码.调用UpdateUserAsync会返回一 ...
- 遍历FTP目录及下载
操作ftp,直接在main方法中即可操作. 例1:遍历ftp目录中的文件 public static void main(String[] args) throws IOException { FTP ...
- 浅谈TCP/IP(new 常见面试问题)
1. TCP/IP重传机制,如何保证消息读到一个完整内容再反序列化 2. TCP四次回收比三次握手多了什么操作,什么时候会进入Time_await状态 3.
- Linux学习4-远程登录管理工具安装
1.配置虚拟机网络环境 桥接模式:使用真实网卡进行通信,配置简单,可以和通往内的其他真实机直接进行通讯,缺点是它会占用网段的一个IP地址. NAT模式:使用虚拟机模拟的虚拟网卡进行通讯,会使用VMne ...
- javascript学习笔记(二)
二.DOM DOM是"Document Object Model"(文档对象模型)的首字母缩写,当创建了一个网页并把它加载到WEB浏览器 中时,DOM就在后台生成,它讲根据你编写的 ...
- Python 两个list合并成一个字典
方法一:list1 = ['k1','k2','k3'] list2 = ['v1','v2','v3'] dic = dict(map(lambda x,y:[x,y],list1,list2)) ...
- 【java错误】System.out.println()出错
今天想测试java的System的类,没想到居然出错了.在同一个包下的java文件System全错,而其他包中的System没错.上网查了下资料,原来我是重定义了System类,覆盖了原来的Syste ...
- css盒模型(Box Model)
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和 ...
- ubuntu下使用g++编译时默认支持C++11 配置方法
1.只需要在源文件程序中加上如下一行代码: #pragma GCC diagnostic error "-std=c++11" 此时源文件代码如下: #pragma GCC dia ...
- Spring Boot—09通过Form提交的映射
package com.sample.smartmap.controller; import org.springframework.beans.factory.annotation.Autowire ...