MySQL数据库集群(双主双从)

MySQL数据库集群(双主双从)

双主双从(实验一)

双主

主服务器单节点设置,如果主服务器故障则会影响全局的写入事件,所以要设置为双主。在前面的实验中已经将master1设置为master2的主服务器,这里只需要设置master2为master1的主服务器。

设置master2为master1的主服务器

  • 登录master2的mysql数据库授权并且刷新
grant replication slave,replication client on *.* to 'rep'@'192.168.83.%' identified by 'Mysql@123';
flush privileges;# 刷新

在这里插入图片描述

  • 登录master1的数据库并且操作:
change master to master_host='master2',master_user='rep',master_password='Mysql@123',master_auto_position=1;
start slave;# 开启奴隶模式
show slave status\G;

这时master1也是别人的主服务器,同样也是别人的从服务器,master1和master2互为主从服务器。

  • 测试

master1上面插入数据,在master2上观察数据是否同步
在master2上面插入数据,在master1上观察数据是否同步

如果有问题可以在/var/log/mysqld.log查看,双方互相同步。

双从

有另外两台的mysql数据库作为服务器

同步现有的数据库

使用mysqldump备份master1的数据

mysqldump -p'Mysql@123' --all-databases --single-transaction --master-data=2 --flush-logs > mmss-mysql-all.sql

备份完成后将sql文件传送给slave1和slave2

scp -r master1:/mmss-mysql-all.sql slave1:/tmp/
scp -r master1:/mmss-mysql-all.sql slave2:/tmp/

分别登录slave1和slave2并且手动同步数据
slave1和slave2

mysql -uroot -p'Mysql@123' < /tmp/mmss-mysql-all.sql

启动从服务器的ID和GTID

开启slave1和slave2的二进制日志功能和服务器ID和GTID
slave1的数据库:

vi /etc/my.cnf

另起几行写到

server-id=3
gtid_mode=ON
enforce_gtid_consistency=1
master-info-repository=TABLE
relay-log-info-repository=TABLE

保存退出并且重启slave1的数据库

systemctl restart mysqld

slave2的数据库:

vi /etc/my.cnf
server-id=4
gtid_mode=ON
enforce_gtid_consistency=1
master-info-repository=TABLE
relay-log-info-repository=TABLE

保存退出并且重启slave2的数据库

systemctl restart mysqld

设置主服务器

登录slave1的数据库

change master to master_host='master1',master_user='rep',master_password='Mysql@123',master_auto_position=1 for channel 'master1';
change master to master_host='master2',master_user='rep',master_password='Mysql@123',master_auto_position=1 for channel 'master2';
start slave;#开启奴隶模式

查看运行状态

show slave status\G;

登录slave2的数据库并进行操作

change master to master_host='master1',master_user='rep',master_password='Mysql@123',master_auto_position=1 for channel 'master1';
change master to master_host='master2',master_user='rep',master_password='Mysql@123',master_auto_position=1 for channel 'master2';
start slave;#开启奴隶模式

查看运行状态

show slave status\G;

双方的数据已经同步了。
如果集群有问题,可以去/var/lib/mysql/中的所有文件进行删除,重启数据库后就是一个全新的数据库。

进行测试

可以分别在master1和master2中插入数据进,可以在slave1和slave2中进行查看,验证实验是否成功

猜你喜欢

转载自blog.csdn.net/qq_45671732/article/details/113728302
今日推荐