mysql主从搭建(gtid)

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

ip 端口 主机名 角色
10.1.60.80 3306 rabbitmq04 salve
10.1.60.114 3306 rabbitmq01 slave
10.1.60.115 3306 rabbitmq02 master

为每台主机修改主机名并配置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

mysql主从搭建(gtid)_第1张图片

也可以查看master库的状态

show master status; 

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

你可能感兴趣的:(mysql,mysql,数据库)