MySql5.7主从同步配置|GTID模式

数据库主从同步配置是开发中比较常见的需求,在MySql里,主从同步主要有两种,bin-log和gtid。下面就主要总结一下使用GTID模式配置主从同步的过程。

一,概念

  • 全局事务标识:global transaction identifiers;
  • GTID是一个事务一一对应,并且全局唯一ID;
  • 一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致;
  • GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制。而是使用MASTER_AUTO_POSTION=1的方式开始复制;
  • MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善;
  • 在传统的slave端,binlog是不用开启的,但是在GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID(强制)。
  • GTID = source_id:transaction_id
  • source_id,用于鉴别原服务器,即mysql服务器唯一的的server_uuid,由于GTID会传递到slave,所以也可以理解为源ID。
  • transaction_id,为当前服务器上已提交事务的一个序列号,通常从1开始自增长的序列,一个数值对应一个事务。
  • 示例:
  • 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
  • 前面的一串为服务器的server_uuid,即3E11FA47-71CA-11E1-9E33-C80AA9429562,后面的23为transaction_id
  1. 更简单的实现failover,不用以前那样在需要找log_file和log_pos;
  2. 更简单的搭建主从复制;
  3. 比传统的复制更加安全;
  4. GTID是连续的没有空洞的,保证数据的一致性,零丢失。

二,配置过程

1,安装mysql5.7,这里需要说明gtid在mysql5.6之后才有,但是mysql5.6上gtid默认是不可用的,而在mysql5.7上是默认可用的。

2,主库配置。sudo vi /etc/my.cnf,添加以下配置,重启mysql。

bin_log=/usr/local/mysql/log/mysql-bin

server_id=96

gtid_mode=on

enforce-gtid-consistency=true

log-slave-updates=on

3,从库配置。sudo vi /etc/my.cnf, 添加以下配置,重启mysql。

server_id=97

relay_log=/usr/local/mysql/log/relay_log

gtid_mode=on

enforce-gtid-consistency=true

log-slave-updates=on

read_only=on

master-info-repository=TABLE

relay-log-info-repository=TABLE

4,主库授权复制用户。

set global validate_password_policy=0;

set global validate_password_length=1;

grant replication slave on *.* to 'root'@'%' identified by 'trnuser123';

5,从库设置要同步的主库信息。

change master to master_host='主库IP',master_port=3306, master_user='root',master_password='trnuser123',master_auto_position=1;

6,开启同步。

start slave;

7,查看状态。

show slave status\G;

配置完之后,通过查看slave的状态,可以看是否配置成功。同时可以在主库进行一些操作,提交一些事务(insert,update),之后数据就会自动同步到从库。

 

 

 

 

码字不易,如果觉得有帮助,一定要给我点赞哟~~

不然信不信我砸了你家灯,半夜偷亲你 ( ̄ε  ̄) !!!

你可能感兴趣的:(基础,Linux,微服务&技术中台)