Mysql高可用之MHA

Mysql高可用之MHA

Slave:server1,server2
Master:server3
Monitor:server4

(1)安装数据库
在srevre1.server2.server3上安装数据库并开启,修改密码
安装perl-DBD-MySQL,mha4mysql-nod,以server1为例,其他两个一样

[root@server1 ~]# /etc/init.d/mysqld start
[root@server1 ~]# yum install perl-DBD-MySQL -y
[root@server1 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
[root@server1 ~]# grep password /var/log/mysqld.log 
[root@server1 ~]# mysql -p
mysql> alter user root@localhost identified by 'Redhat+123';

(2)配置数据库
更改配置文件并重启,三个主机的文件必须配置一致,只有id号不同,以server1为例

[root@server1 ~]# vim /etc/my.cnf

这里写图片描述

[root@server1 ~]# /etc/init.d/mysqld restart

在master上的配置

[root@server3 ~]# mysqldump -pRedhat+123 --master-data=2 --single-transaction -R --triggers -A > all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

这里写图片描述

接下来就是配置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 

这里写图片描述
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;

这里写图片描述

# 查看
[root@server3 ~]# head -n 30 all.sql | grep 'CHANGE MASTER TO'
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
# 把备份复制到两个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上:
这里写图片描述
slave上搭建复制环境,两个slave都做

[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> start slave;
mysql> show slave status\G;

这里写图片描述

# 设置为只读模式
mysql> set global read_only=1;

这里写图片描述
在Master上创建监控用户并授权

[root@server3 ~]# mysql -p
mysql> grant all privileges on *.* to 'root'@'172.25.25.%' identified  by 'Redhat+123';

这里写图片描述

Monitor上配置

[root@server4 ~]# mkdir -p /etc/masterha
[root@server4 ~]# vim /etc/masterha/appl.cnf

文件内容:
这里写图片描述
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;

这里写图片描述

设置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

全部为OK则配置正确
这里写图片描述

# 检查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

这里写图片描述
在线进行切换

[root@server4 ~]# chmod +x /usr/local/bin/master_ip_online_change
[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

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

查看:master变为server2
这里写图片描述
切换成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值