Mysql 复制-基于GTID 测试

原创 2016年03月29日 17:12:11

 GTID :  Global  Transaction  Identified


在研究Mycat的时候顺便重新看了一下Mysql的复制策略,以前都是通过传统方式进行文件定位进行的复制设置,这次发现了GTID模式下的复制方式,而且Mysql5.7以及后续的版本对GTID也是大力推崇,所以详细学习了一下GTID的知识,也通过自己的测试进行了配置


为了方便记忆,记录自己在学习GTID中的点点滴滴


本文记录以下几种常见下的GTID复制环境搭建进行记录


1   Master和Slave都是新的数据库服务器,从没有数据的环境开始,这种情况是最简单的,因为不存在数据导入的问题

只需要设置好对应的my.cnf  , 保证主和从服务器的GTID功能开启,启动Master和Slave后,配置slave的change语句后start slave即可

 

2   Master是运行中的数据库,新加入Slave服务器, 而Master开始就是以GTID方式运行的。此时GTID中保存了所有的事务信息,Slave在启动后会一条条的执行,直到与Master的数据同步,这种方式耗费的时间可能比较长


3  Master是运行中的数据库,新加入Slave服务器, 而Master开始并不是以GTID方式运行的。此时GTID中是没有任何信息的,如果此时要配置新的Slave,则需要通过数据的导入导出先保证两个数据库服务器的数据一致,再通过GTID进行数据复制,由于此时需要更改主服务器的my.cnf配置文件,所以必须有重启服务器的过程。



首先在主服务器不是以gtid=on的模式运行,这时候必须重启主服务器,在Master的my.cnf配置文件中加上如下内容:

server-id = 1
log-bin=mysql-bin
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=true

各个参数的含义不再解释


 此时将主服务器的整个data目录拷贝为从服务器的data目录,使用冷备份的方式,修改从服务器的my.cnf配置文件

 重启主服务器,再启动从服务器,此时可以在从服务器上通过

show global variables like '%gtid%' 看到gtid参数的值,因为这个gtid是跟着data目录的某个文件的,所以会将主服务器的内容带过来,保证两边的一致性

在主服务器上同样执行show global variables like '%gtid%' ,对比主从服务器,可以看到此时完全是一样的


所以只要数据和gtid_executed能够具有一致性就保证了同步的准确性,此时不论什么时候开始从服务器的复制都可以,此时主服务器的每个事务都会记录到gtid中,

所在在从服务器上执行

change master to master_host='host',master_port='3306',master_user='root',master_password='passwd',master_auto_position=1

即可



上面记录的是主服务器配置需要修改,必须重启的操作步骤,在实际操作中,有很多情况下是不允许重启的,在这种情况下肯定主服务器是开启了GTID功能的,所以下面记录如何在这种情况下添加从服务器


首先使用mysqldump --all-databases  --single-transaction  --default-character_set=gbk 去导出数据库备份文件,此时由于主服务器开启了GTID功能,所以set-gtid-purged参数默认是开启的,也就是会在导出的备份文件中带上gtid的信息,保证从服务器不会再次同步已有的事务数据


修改从服务器的my.cnf配置文件, 保证GTID的开启,如果此时不开启GTID,导入会在同步GTID信息的SQL语句处报错,后续再开启GTID也可以,不过需要重新source备份文件


启动从服务器,首先set names gbk 执行source 备份文件导入主服务器的SNAP数据,完成后可以通过show global variables like '%gtid%' 看到对应的GTID值已经同步。此时执行

change master to master_host='host',master_port='3306',master_user='root',master_password='passwd',master_auto_position=1,设置主服务器信息,再执行start slave即可


在以上的操作步骤中,可以完全满足在不影响主服务器的情况下新增从服务器,而且使用的复制方式是GTID


本次实验测试了各个情况,对每种情况都有测试,所以能保证以后正确熟练的使用GTID方式的主从复制!


运维笔记10 (Linux软件的安装与管理(rpm,yum))

概述:用rpm安装和管理软件(rpm解决依赖性),用yum安装与管理软件(yum解决依赖性)。 1.linux的软件 linux可以说是一款改变时代的操作系统,但是一个操作系统再优秀如果没有好用的...
  • No_red
  • No_red
  • 2016年10月23日 19:52
  • 2001

安装Docker——使用阿里云Docker加速器

在国内直接使用docker官方的镜像仓库:DockerHub经常会因网络问题,导致镜像下载缓慢或者根本不能下载,建议科学上网,或者一律使用国内Docker加速器 以下是使用官方dockerhub镜像...

基于gtid复制模式下的主从同步搭建测试

1.基本信息 主库:  IP:10.16.24.107  port:3377  server-id = 1073377  data_dir:/data/mysql/mysql3377/data/ ...

测试基于gtid模式主从复制下数据不一致的处理

1.基本信息 主库:  IP:10.16.24.107  port:3377  server-id = 1073377  data_dir:/data/mysql/mysql3377/data/ ...

MySQL的主从复制(gtid)

Mysql一般来说都是通过 主从复制( Master-Slave )的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力。主从复制:我的理解就是一台服务器充当主服务器 ...

Mysql GTID主从复制

名词解释:  1.TID:Transaction ID,事务的ID号:也就是说在mysql复制中每一个事务都有自己的ID号(随机数) 2.GTID:Global Transaction ID,全局...

MySQL 5.6.10 跨平台GTID复制实践

根据业务需要,建立MySQL复制来实现数据冗余。 MySQL 5.6.10版本提供了更方便的基于GTID的复制功能,MySQL可以通过GTID自动识别上次同步的点,极大地方便了运维人员,减少出错的几...

MySQL5.6 GTID模式,同步复制报错不能跳过解决方法

搭建虚拟机centos6.0, mysql5.6.10主从复制,死活不同步,搞了一整天找到这篇文章。终于OK了。 数据库版本: mysql> select version();  +------...

mysql5.6GTID实现主从复制、读写分离

mysql5.6GTID实现主从复制、读写分离 环境: 主机1:centos7-master 主机2:centos7-slave 主机3:sentos6.5-mysql-proxy 一、...

MySQL5.7 基于GTID的多源复制

基于GTID的MySQL5.7的多源复制 主库1:192.168.1.246:3306 主库2:192.168.1.246:3307 从库1:192.168.1.246:3308安装5.7数据库 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql 复制-基于GTID 测试
举报原因:
原因补充:

(最多只允许输入30个字)