基于GTID的主从复制

MySQL主从复制实战指南(基于二进制日志)-CSDN博客

二、基于GTID的主从复制

基于 GTID 方式:全局事务标示符,自mysql5.6版本开启的新型复制方式。

GTID的组成:server_uuid:序列号

UUID:每个mysql实例的唯一ID,由于会传递到slave,所以也可以理解为源ID

序列号:在每台MySQL服务器上都是从1开始自增长的序列,一个数值对应一个事务。

1、工作过程

master 更新数据时,会在事务前产生 GTID,一同记录到 binlog (二进制日志)中

slave 端的 I/O 线程将变更的 binlog,写入到本地的relay log(中继日志)中。

sql 线程从 relay log 中获取 GTID,然后对比 slave 端的 binlog 是否有记录

如果有记录,说明该 GTID 的事务已经执行,slave 会忽略

如果没有记录,slave 就会从 relay log 中执行该 GTID 的事务,并记录到 binlog。

在解析过程中会判断是否有主键,如果有就用二级索引,如果没有就用全部扫描。

2、优势

更简单的实现 failover,不用以前那样在需要找二进制日志文件 log_file 和位置值 log_pos.

更简单的搭建主从复制

比传统的复制更加安全

GTID 是连续的没有空洞的,保证数据的一致性,零丢失。

slave 无需知道 master 的 pos 值和日志文件值,只需要知道 master 的 ip、用户名、密码即可;

3、搭建 GTID 方式的主从复制

(1)主配置

root@node2 \~\]# cat /etc/my.cnf ​ \[mysqld

server-id=1

开启GTID模式,添加此⾏

gtid_mode=ON

开启GTID的⼀些安全限制,添加此⾏

enforce_gtid_consistency=true

include all files from the config directory

!includedir /etc/my.cnf.d

root@node2 \~\]# systemctl restart mysqld ;systemctl enable mysqld ​ 对复制用户授权 mysql\> create user 'repluser'@'%' identified with mysql_native_password by "123"; Query OK, 0 rows affected (0.10 sec) ​ mysql\> grant replication slave on \*.\* to 'repluser'@'%'; Query OK, 0 rows affected (0.01 sec) ​ mysql\> flush privileges; Query OK, 0 rows affected (0.10 sec) ​ mysql\> ![](https://i-blog.csdnimg.cn/direct/09712d9905974c59bd97f315c9031748.png) (2)从配置 \[root@node3 \~\]# cat /etc/my.cnf ​ \[mysqld

server-id=2

gtid_mode=ON

enforce_gtid_consistency=true

include all files from the config directory

!includedir /etc/my.cnf.d

root@node2 \~\]# systemctl restart mysqld ;systemctl enable mysqld ​ 从库链接主库 查看主 show master status; ![](https://i-blog.csdnimg.cn/direct/cb6c95b9d4084b199ab154d2a4748b94.png) mysql\> CHANGE MASTER TO MASTER_HOST = '10.1.1.6', MASTER_USER = 'repluser', MASTER_PASSWORD = '123', master_auto_position=1; Query OK, 0 rows affected, 7 warnings (0.04 sec) ​ mysql\> start slave; Query OK, 0 rows affected, 1 warning (0.08 sec) ​ mysql\>show slave status\\G; ![](https://i-blog.csdnimg.cn/direct/c6e4790bedd74d5a936e83dd4d69fb4d.png) 验证主从 ​ mysql\> show databases; ![](https://i-blog.csdnimg.cn/direct/6feaebb0d17d491c80382f318380a86d.png)

相关推荐
IT成长日记1 小时前
【Nginx开荒攻略】Nginx虚拟主机配置:从域名、端口到IP的完整指南
linux·运维·服务器·nginx·虚拟主机
taxunjishu1 小时前
DeviceNet 转 Modbus TCP 协议转换在 S7-1200 PLC化工反应釜中的应用
运维·人工智能·物联网·自动化·区块链
瓯雅爱分享2 小时前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
迎風吹頭髮3 小时前
Linux内核架构浅谈8-Linux内核与UNIX的传承:设计思想与特性差异
linux·运维·架构
黑马金牌编程3 小时前
Linux 服务器常见的性能调优
linux·运维·服务器·性能优化
tianyuanwo3 小时前
Linux进程管理中的T状态问题分析与解决体系
linux·运维·进程管理·t状态
liuyao_xianhui4 小时前
Linux_基本指令1
linux·运维·服务器
咋吃都不胖lyh5 小时前
SQL-多对多关系
android·mysql·数据分析
爱吃喵的鲤鱼6 小时前
仿mudou——Connection模块(连接管理)
linux·运维·服务器·开发语言·网络·c++
让子弹飞026 小时前
永久解决ubuntu网络连接问题
linux·运维·ubuntu