mysql基于Gtid的主从复制

实验前提

主机:server1:172.25.55.1
从机:server2:172.25.55.2
关闭防火墙,搭建好yum源。

  • GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。 GTID 实际上 是由UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。
  • 基于GTID的复制方式是从Mysql5.6.5开始新增的复制方式。通过 GTID保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。
  • 在原来基于二进制日志的复制中,从库需要告知主库要从哪个偏移量进行增量同步,如果指定错误会造成数据的遗漏,从而造成数据的不一致。借助GTID,在发生主备切换的情况下,MySQL的其它从库可以自动在新主库上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制位置发生误操作的风险。另外,基于GTID的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险。

一、安装mysql

[root@server1 ~]# ls
mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
[root@server1 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 
[root@server1 ~]# ls
[root@server1 ~]# yum install mysql-community-client-5.7.24-1.el7.x86_64.rpm
 mysql-community-common-5.7.24-1.el7.x86_64.rpm
 mysql-community-libs-5.7.24-1.el7.x86_64.rpm
 mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
 mysql-community-server-5.7.24-1.el7.x86_64.rpm 

server2安装与server1安装相同。

二、编辑mysql的配置文件

  • 主机( server1)配置

      [root@server1 ~]# vim /etc/my.cnf	
      	server-id=1
      	log-bin=mysql-bin
      	gtid-mode=on
      	enforce-gtid-consistency=1
      [root@server1 ~]# systemctl start mysqld	
      [root@server1 ~]# cat /var/log/mysqld.log | grep password
      2019-03-02T05:56:38.937543Z 1 [Note] A temporary password is generated for root@localhost: SEBdJCCyb4)J(临时密码)
    
      [root@server1 ~]# mysql_secure_installation (数据库初始化)
    
  • 从机(server2)配置

     [root@server2 ~]# vim /etc/my.cnf	
     	server-id=2
     	gtid-mode=on
     	enforce-gtid-consistency=1
     [root@server2 ~]# systemctl start mysqld	
     [root@server2 ~]# cat /var/log/mysqld.log | grep password(查看临时密码)
     [root@server2 ~]# mysql_secure_installation (数据库初始化)
    

三、设置主从复制

  • 主机

      mysql> grant replication slave on *.* to rep@'172.25.55.%' identified by 'Redhat_123';
      Query OK, 0 rows affected, 1 warning (0.30 sec)
      
      mysql> Flush privileges;
      Query OK, 0 rows affected (0.08 sec)
      
      mysql> show master status;
    

mysql基于Gtid的主从复制_第1张图片

  • 从机

      mysql> change master to master_host='172.25.55.1',master_user='rep',master_password='Redhat_123',master_auto_position=1;
      (基于gtid的主从复制不需要知道主机上的pos号,直接其用自动pos号的功能)
      mysql> start slave;
    

查看slave状态:
mysql基于Gtid的主从复制_第2张图片
在这里插入图片描述

测试

在主机上创建一个数据库wyf,在从机上可以查看到。
mysql基于Gtid的主从复制_第3张图片
从机查看:
mysql基于Gtid的主从复制_第4张图片

你可能感兴趣的:(运维,mysql)