实验环境
server1 172.25.254.10 | master |
---|---|
server2 172.25.254.20 | slave |
server3 172.25.254.30 | slave |
server4 172.25.254.40 | MHA |
高可用的搭建
(1)配置server1的mysql服务
systemctl stop mysqld
[root@server1 mysql]# rm -fr *
vim /etc/my.cnf
29 server-id=1
30 gtid_mode=ON
31 enforce_gtid_consistency=ON
32 log_bin=binlog
33 log_slave_updates=ON
systemctl start mysqld
grep password /var/log/mysqld.log
mysql -uroot -pLIxin123.
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'172.25.12.%' IDENTIFIED BY 'Yan+123kou';
mysql> SHOW MASTER STATUS;
(2)配置server2的mysql服务
systemctl stop mysqld
cd /var/lib/mysql
rm -fr *
vim /etc/my.cnf
server-id = 2
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog
systemctl start mysqld
grep password /var/log/mysqld.log
mysql -uroot -pLIxin123.
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10',MASTER_USER='repl',MASTER_PASSWORD='LIxin123.',MASTER_AUTO_POSITION=1;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G;
(3)配置server3的mysql服务
systemctl stop mysqld
vim /etc/my.cnf
加入:
server-id=3
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog
rm -fr *
systemctl start mysqld
grep password /var/log/mysqld.log
mysql -uroot -pLIxin123.
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10',MASTER_USER='repl',MASTER_PASSWORD='LIxin123.',MASTER_AUTO_POSITION=1;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G;
手动实现一个master坏了选举出新的master
1.server4上安装需要的软件
2.生成ssh密钥,管理节点是不需要输入密码,将生成的公钥和私钥传给数据节点
[root@server4 ~]# ssh-keygen
[root@server4 ~]# ssh-copy-id server1
[root@server4 ~]# ssh-copy-id server2
[root@server4 ~]# ssh-copy-id server3
让server123之间免密
[root@server4 ~]# scp -r .ssh server1:
[root@server4 ~]# scp -r .ssh server2:
[root@server4 ~]# scp -r .ssh server3:
(3)将节点的安装包传给数据节点
oot@server4 MHA-7]# scp -r mha4mysql-node-0.58-0.el7.centos.noarch.rpm server1:/root/
[root@server4 MHA-7]# scp -r mha4mysql-node-0.58-0.el7.centos.noarch.rpm server2:/root/
[root@server4 MHA-7]# scp -r mha4mysql-node-0.58-0.el7.centos.noarch.rpm server3:/root/
(4)数据节点安装
server123都一样的操作
[root@server1 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@server2 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
[root@server3 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm
(5)管理节点创建一个目录,编辑配置文件
(6)管理节点ssh检查管理节点ssh检查
(7)数据节点授权
mysql> grant all on *.* to root@'%' identified by 'Yan+123';
(8)管理节点环境健康检查
[root@server4 ~]# masterha_check_repl --conf=/etc/masterha/master.cnf
(9)手动替换master
关闭当前的master节点的mysql服务:
[root@server1 ~]# systemctl stop mysqld
手动替换master节点:
[root@server4 ~]# masterha_master_switch --master_state=dead
--conf=/etc/masterha/master.cnf --dead_master_host=172.25.254.10
--dead_master_port=3306 --new_master_host=172.25.254.20 --new_master_port=3306
开启server1的master服务,将他的master改为server2
手动实现所有数据库都在线的时候,切换master节点
(1)删除之前生成的文件
[root@server4 ~]# cd /etc/masterha/
[root@server4 masterha]# rm -fr master.failover.complete
(2)输入命令自动替换
masterha_master_switch --conf=/etc/masterha/master.cnf --master_state=alive --
new_master_host=172.25.254.10 --new_master_port=3306 --orig_master_is_new_slave
--running_updates_limit=10000
手动切换VIP漂移
(1)server4创建一个检测进程
nohup masterha_manager --conf=/etc/masterha/zp.cnf &> /dev/null &
此时:
(2)关闭server1的mysql
全自动实现vip的自动漂移
(1)下载两个脚本,给两个脚本加上可执行权限
(2)编辑配置文件,加入两行内容
(3)给server2(当前master)上添加一个vip
(4)server4 手动切换master到server1
(5)查看结果
此时vip转移到server1上,server2上的vip自动删除
使用脚本实现全自动切换master
创建监控master的进程
server1关闭mysql服务
server2可以查看到vip