这次是部署M-S-S的模型,其实原理和M-S差不多,但是再部署的过程中出去先了很多的报错,让我头疼不已,最后也是完成了一次部署,就抓紧整理一下思路
首先部署环境:
xuegod63
master
mysql5.7.24
192.168.0.63
Xuegod64
slave 中继
mysql5.7.24
192.168.0.64
xuegod65
slave
mysql5.7.24
192.168.0.65
然后再三台模拟机上要安装相同版本的mysql
一、部署master主服务器(xuegod63)
1.三台模拟机都执行关闭密码强度审计插件
echo “validate-password=OFF” >>/etc/my,cnf
2.密码修改成相同的,生产环境中就按照生产上的来
set password for root@localhost = password('123456');
3.在主服务器上授权用户
grant replication slave on *.* to repl@'192.168.0.%' identified by '123456';
flush privileges; #刷新权限
4.创建相同的库,并传给其他服务器
mysqldump -uroot -p123456 -B HA>HA.sql
scp HA.sql root@192.168.0.(64.65):/root/
5.修改主服务器配置文件
log-bin=mysql-bin-master
server-id=1
binlog-do-db=HA
log-bin=mysql-bin-master
binlog-ignore-db=mysql
sync-binlog=1 #执行 N 次写入 binlog 后,与硬盘同步
binlog-format=row #binlog 保存方式,记录哪条数据被修改了
6.重启服务
[root@xuegod63 ~]# systemctl restart mysqld
二、部署slave中继服务器(xuegod64)
1.导入HA.sql到数据库(这里最好先在库里创建库,然后导入,免得出现报错)
mysql -uroot -p123456 HA<HA.sql
2.修改中继服务器的配置文件添加
server-id= 2
log-bin=mysql-bin-slave1 #修改主配置文件也要开启 bin-log
log-slave-updates=1
#把它从 relay-log 当中读取出来的二进制日志并且这本机上执行的操作
也记录这自己的二进制日志里面,这样才能使第三台 slave 通过中继 slave 读取到相应数据变化
binlog-format=row
3.重启
systemctl restart mysqld
4.授权
change master to master_host='192.168.0.63',master_user='repl',master_password='123456';
我这里出现了两种报错:
第一种:ERROR 3021 (HY000);需要先停止已经启动的绑定stop slave,再重置绑定reset master,再授权就不报错了
第二种:ERROR 3009 (HY000);错误是因为我之前升级过数据库,升级完后没有使用 mysql_upgrade升级数据结构造成的。所以升级一下再root下输入mysql_upgrade -uroot -p
5.启动绑定start slave;然后查看中继服务状态
show slave status\G
之前这三个地方,因为没搭建好,就没有数据,现在显示正常,说明搭建成功
6.但是不要忘了给另一个slave(xuegod65)授权
grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '123456';
三、部署 slave(xuegod65 主机上操作)
1.同中继一样也得先创建相同的库
mysql -uroot -p123456 HA<HA.sql
2.修改配置文件vim /etc/my.cnf
server-id = 3
log-bin=mysql-bin-slave2 #后面还可以加从数据库
binlog-format=row
3.重启mysql服务
systemctl restart mysqd
4.指定slave中继服务作为xuegod65的主
change master to
master_host='192.168.1.64',master_user='repl',master_password='123456';
5,启动绑定start slave ,查看
show slave status\G
这样就成功了
后面实验同步情况我就不上传了,试过确实达到了同步的效果