搭建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
也可以查看master库的状态
show master status;
至此gtid主从数据库配置完成