mysql主从搭建(gtid)

一、前言

MySQL GTID(Global Transaction Identifier)主从复制原理是MySQL replication的一个进步,它使得复制配置变得更简单,并提供了更高的数据一致性,GTID是全局唯一的事务ID,由两个部分组成:<server_uuid>:<transaction_id>,用来标识主库上执行的每个事务。当一个事务在主库上提交时,对应的GTID会发送到从库上,从库使用该GTID来确保只应用一次相应的事务,从而避免重复执行,在所有节点的日志文件中,同一个event的gtid值都是一致的

server_uuid:服务器的唯一标识符,用于标识事务最初在哪个服务器上生成

transaction_id:事务的编号,在每个服务器上是连续递增的

工作流程

1.master节点一个事务被执行并提交,提交时,事务被赋予一个唯一的GTID,该事务及其GTID被记录在master节点的binlog中

2.slave节点的io线程获取master节点的binlog,写入到relaylog中,读取值根据gitd_next变量决定slave下一个执行哪个gtid事务

3.slave节点的SQL线程读取relaylog中的事务,通过slave节点的binlog检查事务的GTID是否有记录

4.如果该GTID在从服务器上未被应用过,从服务器就执行该事务并将其记录到binlog

5.如果该GTID已经被应用过,则跳过该事务,避免重复执行

搭建mysql主从使用三台主机,主机信息如下

ip端口主机名角色
10.1.60.803306rabbitmq04salve
10.1.60.1143306rabbitmq01slave
10.1.60.1153306rabbitmq02master

二、部署

为每台主机修改主机名并配置hosts

hostnamectl set-hostname rabbitmq04

vi /etc/hosts

10.1.60.114 rabbitmq01
10.1.60.115 rabbitmq02
10.1.60.80 rabbitmq04

关闭防火墙与selinux

systemctl stop firewalld&&systemctl disable firewalld

setenforce 0

每台主机安装mysql服务

参考:yum安装mysql 5.7_yum安装mysql5.7_Apex Predator的博客-CSDN博客

 编辑配置文件

vi /etc/my.cnf

gtid_mode=on      #开启gtid
enforce-gtid-consistency=on  #当启用此选项时,MySQL 强制执行 GTID 一致性,确保从服务器不会执行未在主服务器上存在的事务。这有助于防止数据不一致
log_slave_updates=on  #当启用此选项时,从服务器将其接收到的更改记录到自己的二进制日志中,这允许从服务器充当其他从服务器的主服务器。这在构建链式主从复制拓扑时非常有用
relay_log_purge=0  #当设置为 0 时,从服务器不会自动删除中继日志。这意味着中继日志将一直保留,直到管理员手动删除它们。这可以用于调试和数据恢复的目的
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid  
server_id=2          #需要每个都不一样id
log_bin=mysql-bin
binlog_format=mixed
expire_logs_days=7
max_binlog_size=1g

重启mysql服务

systemctl restart mysqld

查看gtid服务是否生效

mysql -u root -p

show variables like '%gtid%';

每台主机配置相同的用于主从同步的用户

GRANT SELECT, RELOAD, PROCESS, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'orchestrator'@'%' identified by '11111111';

flush privileges;

配置两个slave主机的mysql数据库,此处跟binlog主从配置不一样,不需要知道binlog文件号和pos值

CHANGE MASTER TO MASTER_HOST='rabbitmq02',

MASTER_USER='orchestrator',

MASTER_PASSWORD='11111111',

MASTER_PORT=3306,

master_auto_position=1;

start slave;

show slave status\G

也可以查看master库的状态

show master status; 

 至此gtid主从数据库配置完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值