一个技术博客

Mysql5.7 yum安装 主从同步 基于GTID 主从复制

本文由 Tim 于 2016-04-06 15:14:05 发表

一、安装Mysql

准备两台服务器,我的操作系统centos 6.5 ,

Master :192.168.68.31
Slave:192.168.68.32

安装Mysql 官网安装文档 按系统版本对号入座

推荐使用yum进行安装

1、按官方文档提示先在http://dev.mysql.com/downloads/repo/yum/  页面下载一个安装包信息的rpm,楼主下载的是mysql57-community-release-el6-7.noarch.rpm

使用yum localinstall安装上面的包yum localinstall platform-and-version-specific-package-name.rpm

 

2、选择版本 vi /etc/yum.repos.d/mysql-community.repo ;默认为mysql5.7 如需安装5.5或者5.6,将相应版本信息下的enabled改成1,enabled=1

列出要安装的版本

3、安装,确认版本信息无误后yum安装

安装完成可以用mysql -V查看

4、启动

查看状态

第一次启动会初始化数据库,并生成初始密码,如下密码为:fq%KPykfH1yl

使用密码进mysql,修改密码

分别在Master和Slave安装,mysql安装完成。

 

二、配置Mysql主从同步

Master :192.168.68.31
Slave:192.168.68.32

官方文档

首先开启Master、Slave防火墙上的3306端口

1、Master上操作

(1)在Master上my.cnf上添加如下,开启二进制日志,其中server-id需要唯一 ,然后重启service mysqld restart

(2)创建同步用户

(3)Master上开启只读,避免写入数据

SHOW MASTER STATUS;看到如下信息,待会需要用到

 

(4)创建master数据快照

说明: –-master-data此选项会在备份中添加 CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=2351;

(5)因为我们已经取到master上一致性的快照,可以解锁了,在master上执行

 

2、Slave上操作

(1)在Master上my.cnf上添加如下,server-id需要唯一 ,然后重启service mysqld restart

(2)导入数据库,也可以在my.cnf配置好同步特定库后导入特定库

(3)slave中执行同步命令

比如我的就是

开启同步

查看slave状态在slave中执行 show slave status;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明同步已经开启
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
正在等待同步

主从同步配置成功,更多参数可以参考官方文档

 

三、基于GTID的主从复制搭建

什么是GTID

什么是GTID呢, 简而言之,就是全局事务ID(global transaction identifier ),最初由google实现,官方MySQL在5.6才加入该功能。
GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。
GTID实际上是由UUID+TID组成的。GTID = source_id:transaction_id
其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交递增。
下面是一个GTID

 

GTID的作用

那么GTID功能的目的是什么呢?具体归纳主要有以下两点:

  • 根据GTID可以知道事务最初是在哪个实例上提交的
  • GTID的存在方便了Replication的Failover(因为切换复制源的时候不再需要指定事务的master_log_filemaster_log_pos)

在已经主从同步的基础上配置GTID 官方文档

1、Master上操作

 

(1)添加my.cnf参数 vi /etc/my.cnf 并重启 service mysqld restart

此时运行show variables like ‘%gtid%’; 可以看到gtid_mode 已经开启

(2)开启只读,避免数据写入

SET @@global.read_only = ON; 这个命令执行后拥有super权限的仍然可以写操作,更严格点可以使用flush tables with read lock;

2、Slave上操作

(1)添加my.cnf参数 vi /etc/my.cnf, 并重启 service mysqld restart

(2)执行同步命令
停止同步

指定复制源

开始同步

3、在Master上停用只读

4、写入一条数据

此时在Master上执行 show global variables like ‘%gtid%’; 可以看到gtid;

在Slave上执行show slave status \G    可以看到如下信息,GTID和master上的一致

基于GTID的主从复制搭建完成。

 

欢迎转载,转载请注明出处!Tim » Mysql5.7 yum安装 主从同步 基于GTID 主从复制

点赞 (0)or拍砖 (0)
分享到:更多 ()