MySQL基于GTID主从搭建是相对传统基于binlog位置的主从搭建而言的一种新的方式,本文将介绍使用GTID搭建主从复制的完整攻略。下面将对搭建过程进行详细讲解。
环境准备
首先,我们需要准备好MySQL环境,包括MySQL服务器和客户端。本文中示例使用MySQL的版本为5.6。同时,需要保证两台机器间的网络互通。
开启GTID模式
在MySQL 5.6中,开启GTID模式需要在my.cnf配置文件中增加如下两行:
gtid_mode = ON
enforce_gtid_consistency = ON
开启了GTID模式之后,每个事务都会被分配一个全局唯一的 GTID,用于在主从服务器之间进行数据同步。
配置主库
配置主库之前,需要创建一个用于主从复制的专用账号,在MySQL中创建账号的方式如下:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
创建账号后,需要重新启动MySQL,使其读取新的配置:
service mysql restart
然后,在主库上执行如下语句,开启binlog写入和GTID复制功能:
SET @@global.log_bin=ON;
SET @@global.log_slave_updates=ON;
SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;
确认开启成功:
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'log_slave_updates';
SHOW VARIABLES LIKE 'gtid_mode';
SHOW VARIABLES LIKE 'enforce_gtid_consistency';
配置从库
在从库上,也需要创建一个用于主从复制的专用账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
启动MySQL之后,需要在从库上执行一下语句,开启GTID复制功能:
SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;
然后,需要执行一下命令,获取主库的GTID信息:
SHOW MASTER STATUS;
将显示的结果复制下来,稍后会用到。
配置主从复制
接下来,我们需要在从库上配置主从复制。在从库中执行如下语句:
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
其中,master_ip
是主库的IP地址,password
是之前创建的用于复制的账号的密码。MASTER_AUTO_POSITION=1
表示使用GTID进行数据同步。
执行完以上语句后,执行启动slave操作:
START SLAVE;
这时,可以通过命令查看复制状态:
SHOW SLAVE STATUS\G
如果显示Slave_IO_Running和Slave_SQL_Running都为Yes,那么说明主从复制已经配置成功了。
示例说明
下面,我们通过两条示例来进一步说明MySQL基于GTID主从搭建的过程。
示例一
假设我们现在有两台机器,分别为主机master和从机slave,两台机器IP分别为192.168.1.1和192.168.1.2。我们的目标是在slave上搭建一个基于GTID的主从复制。
首先,我们在两台机器上安装了MySQL 5.6,并确认网络正常。
然后,在主库上创建用于主从复制的账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
在主库中开启GTID模式和binlog:
SET @@global.log_bin=ON;
SET @@global.log_slave_updates=ON;
SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;
在主库上,创建一条测试数据:
USE test;
CREATE TABLE t1(id INT PRIMARY KEY);
INSERT INTO t1 VALUES(1);
在从库上开启GTID模式:
SET @@global.gtid_mode=ON;
SET @@global.enforce_gtid_consistency=ON;
然后,从主库中获取GTID信息:
SHOW MASTER STATUS;
复制结果,稍后会用到。
在从库中,执行以下命令配置主从复制:
CHANGE MASTER TO MASTER_HOST='192.168.1.1', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1;
START SLAVE;
完成后,可以通过以下命令验证主从复制状态:
SHOW SLAVE STATUS\G
如果复制状态正常的话,此时可以在master上插入一个数据,在slave上检查是否有对应的复制记录。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL基于GTID主从搭建 - Python技术站