拓扑:
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
查看:切换成功