GTID主从配置

本文介绍了MySQL的GTID主从配置,包括GTID的优势和劣势,与传统主从的区别,以及详细的配置步骤,旨在简化数据库复制过程,提高数据一致性。
摘要由CSDN通过智能技术生成

GTID主从

GTID主从简介

GTID是基于mysql生成的事务ID,由服务器ID和事务ID组成。
这个ID在主库及从库上都是唯一的。
这个特性可以让mysql的主从复制变得更加简单,一致性更加可靠。

GTID优势

  1. 更简单的实现同步,不需要再找log_file和log_pos
  2. GTID是连续的,没有中断,数据一致性高,不会发生丢失
  3. 搭建主从更简单
  4. 比传动主从更安全

GTID劣势

  1. 不支持主从关系中存在非事务数据库
  2. 不支持CREATE TABLE … SELECT语句
  3. 不支持针对临时表的操作:
  4. 开启 GTID 后不能再使用原来的传统的复制方式;

GTID与传统主从的区别

传统主从请参照传统主从

GTID比传统复制的优势:

1、更简单的实现failover,不用以前那样在需要找log_file和log_Pos。

2、更简单的搭建主从复制。

3、比传统复制更加安全。

4、GTID是连续没有空洞的,因此主从库出现数据冲突时,可以用添加空事物的方式进行跳过。

主从复制,默认是通过pos复制(postion),就是说在日志文档里,将用户进行的每一项操作都进行编号(pos),每一个event都有一个起始编号,一个终止编号,我们在配置主从复制时从节点时,要输入master的log_pos值就是这个原因,要求它从哪个pos开始同步数据库里的数据,这也是传统复制技术.

MySQL5.6之后增加了GTID复制,GTID就是类似于pos的一个作用,不过它是整个mysql复制架构全局通用的,就是说在这整个mysql冗余架构中,它们的日志文件里事件的GTID值是一致的

两者都是日志文件里事件的一个标志,如果将整个mysql集群看作一个整体,pos就是局部的,GTID就是全局的.
在这里插入图片描述

如果使用的是pos,三者的pos不一致,slave2怎么去获取它当前要同步的事件在slave1里的pos呢,很难.
所以就有了GTID,全局的,将所有节点对于同一个event的标记完全一致,当master crash掉之后,slave2根据同一个GTID直接去读取slave1的日志文件,继续同步.

GTID主从配置

环境说明:

数据库角色 IP 应用与系统版本 有无数据
主数据库 192.168.96.129 centos8/redhat8 mysql-5.7 无数据
从数据库 192.168.96.133 centos8/redhat8 mysql-5.7 无数据
从数据库 192.168.96.134 centos8/redhat8 mysql-5.7 无数据

1 mysql安装

分别在主从三台服务器上安装mysql-5.7版本,此处略过安装步骤,若有疑问请参考MySQL5.7安装

2先把三台服务器的防火墙关闭

#主
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; v>
   Active: inactive (dead)
     Docs: man:firewalld(1)

May 11 22:30:55 localhost.localdomain systemd[1]: Starting firewalld - dy>
May 11 22:30:56 localhost.localdomain systemd[1]: Started firewalld - dyn>
May 11 22:30:57 localhost.localdomain firewalld[932]: WARNING: AllowZoneD>
May 11 23:10:02 localhost.localdomain systemd[1]: Stopping firewalld - dy>
May 11 23:10:03 localhost.localdomain systemd[1]: firewalld.service: Succ>
May 11 23:10:03 localhost.localdomain systemd[1]: Stopped firewalld - dyn>
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# getenforce 
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 
Permissive
#从1
[root@localhost ~]# systemctl stop firewalld
[root@
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值