Mysql MHA

拓扑:
Server3 : master
Server2 : slave
Server1 : slave
server4 : monitor

1. 进行主从复制的搭建

主从复制(MHA最好使用半同步方式)
进行主库的建立

配置文件的编辑:

Master数据库上的配置

创建复制用户

[root@server3 ~]# mysql -p
mysql> grant replication slave on *.* to 'server'@'172.25.25.%' identified by 'Redhat+123';
mysql> flush privileges;
mysql> show master status;

这里写图片描述

进行主从库数据信息一致性的建立

备份主库信息到从库
在master上的配置

 [root@server3 ~]# mysqldump -pRedhat+123 --master-data=2 --single-transaction -R --triggers -A > all.sql
 把备份复制到两个slave主机
 [root@server3 ~]# scp all.sql server1:/data   
 [root@server3 ~]# scp all.sql server2:/data  
 #在slave上的配置
 server1和server2的配置相同,以server1为例,server2做同样配置
 建立目录并把数据库导到文件
 [root@server1 ~]# mkdir /data
 [root@server1 ~]# mysql -pRedhat+123 < /data/all.sql

这里写图片描述

 server2做同样配置

这里写图片描述

进行从库的建立
为从库设定主库(两个从库设定相同)

server1

 [root@server1 ~]# mysql -p
 mysql> CHANGE MASTER TO MASTER_HOST='172.25.25.3',MASTER_USER='server',
 MASTER_PASSWORD='Redhat+123',
 MASTER_LOG_FILE='mysql- bin.000001',
 MASTER_LOG_POS=601;   
 mysql> show slave status\G
 查看从库状态

这里写图片描述

2. 配置monitor主机

安装软件包
 [root@server4 ~]# yum install perl-DBD-MySQL -y
 [root@server4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
 [root@server4 ~]# yum install -y perl-*
 [root@server4 ~]# yum install -y mha4mysql-manager-0.56-0.el6.noarch.rpm 
进行配置

这里写图片描述

slave的配置,两个slave都做

设置定期清理relay脚本

[root@server1 ~]# vim purge_relay_log.sh

这里写图片描述

定期执行脚本
 [root@server1 ~]# crontab -e
 no crontab for root - using an empty one
 crontab: installing new crontab
 [root@server1 ~]# crontab -l
 0 4 * * * /bin/bash /root/purge_relay_log.sh

这里写图片描述

两个Slave数据库配置

 mysql> set global relay_log_purge=0;
在Master上创建监控用户
 [root@server3 ~]# mysql -p
 mysql> grant all privileges on *.* to 'root'@'172.25.25.%' identified  by 'Redhat+123';
设置ssh免密登录

Monitor上

 [root@server4 ~]# ssh-keygen -t rsa
 [root@server4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.1
 [root@server4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.2
 [root@server4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.3

这里写图片描述
这里写图片描述

在三个数据库主机上把密钥也相互传给对方

server1上
 [root@server1 ~]# ssh-keygen -t rsa
 [root@server1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.2
 [root@server1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.3
 Server2
 [root@server2 ~]# ssh-keygen -t rsa
 [root@server2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.1
 [root@server2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.3
 Server3
 [root@server3 ~]# ssh-keygen -t rsa
 [root@server3 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.1
 [root@server3 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.2
在Monitor上(server4)
 检查ssh配置
 [root@server4 ~]# masterha_check_ssh --conf=/etc/masterha/appl.cnf
 检查复制环境
 [root@server4 ~]# masterha_check_repl --conf=/etc/masterha/appl.cnf

这里写图片描述

检查mha manager状态
 appl (pid[root@server4 ~]# masterha_check_status --conf=/etc/masterha/appl.cnf
 appl is stopped(2:NOT_RUNNING).
 [root@server4 ~]# mkdir -p  /var/log/masterha/appl/
 [root@server4 ~]# nohup masterha_manager --conf=/etc/masterha/appl.cnf  --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log /masterha/appl/manager.log 2>&1 &
 [1] 1075
 [root@server4 ~]# masterha_check_status --conf=/etc/masterha/appl.cnf
 Aqql 
 appl (pid:1075) is_running(0:PING_OK), master:172.25.25.3

这里写图片描述

查看启动日志
 [root@server4 ~]# tail -n20 /var/log/masterha/appl/manager.log

这里写图片描述
搭建完成

3. 进行测试

在线进行切换
 [root@server4 ~]# chmod +x /usr/local/bin/master_ip_online_change
masterha_stop --conf=/etc/masterha/appl.cnf
 [root@server4 ~]# masterha_master_switch --conf=/etc/masterha/appl.cnf --master_state=alive --new_master_host=172.25.25.2 --new_master_port=3306  --orig_master_is_new_slave --running_updates_limit=10000

这里写图片描述

查看:切换成功
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值