当前位置:   article > 正文

mysql主从搭建(gtid)_mysql gtid主从安装

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

  1. 10.1.60.114 rabbitmq01
  2. 10.1.60.115 rabbitmq02
  3. 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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/937282
推荐阅读
相关标签
  

闽ICP备14008679号