环境准备
前面有几篇文章对于MySQL主从搭建做了一些铺垫:
文章二:MySQL主从同步-原理&实践篇
先启动Master与Slave的2台mysql服务器,具体信息如下:
1 | ➜ ~ docker ps -a |
Master机器(172.17.0.2)
1 | create user 'master_account'@'%' identified by '123456'; |
Slave机器(172.17.0.3)
1 | create user 'slave_account'@'%' identified by '123456'; |
分别在Master与Slave机器验证,必须是互相同步OK的。
1 | #并且保证主从是同步的 |
SQL验证,分别在Master执行脚本需要在Slave上看到数据同步。
1 | # Master |
安装KeepAlived
安装好gcc,gcc-c++,make
1 | yum install gcc gcc-c++ autoconf automake |
分别在Maste机器、Slave机器安装好keepalived
1 | master |
配置KeepAlived
配置Master机器keepalived
新增shutdown.sh
脚本,并且赋值可以执行权限
1 | chmod 755 shutdown.sh |
内容如下:
1 | !/bin/bash |
配置keepalived.conf
文件
1 | [root@8166c07dd6c7 keepalived]# vi /etc/keepalived/keepalived.conf |
启动好keepalived
服务
1 | [root@a40a40c6bde7 bin]# systemctl start keepalived.service |
配置Slave机器keepalived
新增shutdown.sh
脚本,并且赋值可以执行权限
1 | chmod 755 shutdown.sh |
内容如下:
1 | !/bin/bash |
配置keepalived.conf
文件
1 | ! Configuration File for keepalived |
同样也是启动好keepalived服务。
查看虚拟IP是否已经起来
1 | [root@a40a40c6bde7 mysql]# ip addr |
1 | [root@a579aa381425 support-files]# ip addr |
由此可见,现在172.17.0.99/32`是在master节点上。
验证
通过docker-mysql-client
机器来登录数据库,下面显示登录成功。
1 | [root@8f31266d08fc bin]# ./mysql -h 172.17.0.99 -u root -p |
1 | mysql> show variables like 'server_id'; |
把mysql进程直接杀掉,类似于机器down的情况。然后再次查看server_id,短暂的失去联系,即可很快的恢复。
杀掉Master的进程:
1 | [root@a40a40c6bde7 mysql]# ps aux | grep mysql |
在docker-mysql-client
节点上继续查看server_id
。
1 | mysql> show variables like 'server_id'; |
最后还需要反过来验证一边,就是让Slave
机器的mysql
服务挂掉,让VIP
切换到Master
节点去。
遇到问题
不能启动keepalived服务
1 | Failed to get D-Bus connection: Operation not permitted |
通过vip登录报错
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; |
参考地址
- https://www.jianshu.com/p/8a5308888ef1
- https://www.jianshu.com/p/f693b5b08016
- https://blog.csdn.net/shiyu1157758655/article/details/78672110
- https://blog.csdn.net/u010533511/article/details/88168410
如果大家喜欢我的文章,可以关注个人订阅号。欢迎随时留言、交流。