MySQL—MHA高可用
操作系统:CentOS 6.6X 64位架构规划:
Mysql服务器:
192.168.157.128 从 Node数据节点 Manager管理节点
192.168.157.129 主 Node数据节点
192.168.157.130 从 Node数据节点
以下操作分别在128、129、130服务器上操作
1、安装Mariadb
1 | #安装相关依赖包 |
129为主,128,130分别为从,配置文件需要修改不同的server-id,innodb_buffer_pool_size修改为系统内存60%-70%左右至此,mysql搭建完成。
二、搭建MHA集群
1 | #安装node节点,三台都需要安装 |
3、各节点配置ssh免秘钥登录
1 | #128上执行 |
1 | #129上执行 |
1 | #130上执行 |
4、创建manager管理节点配置文件及切换脚本
mkdir -p /usr/local/mha/conf
mkdir -p /usr/local/mha/logs
mkdir -p /usr/local/mha/app1
mkdir -p /usr/local/mha/scripts
vim /usr/local/mha/conf/manager.cnf
vim /usr/local/mha/conf/app1.conf
#切换perl脚本
vim /usr/local/mha/scripts/master_ip_failover
chmod +x /usr/local/mha/scripts/master_ip_failover
创建Mysql远程登录允许账号,需要STOP SLAVE, CHANGE MASTER, RESET SLAVE等相关权限,该账户要添加到mha配置文件中,主从切换时用到, 在mysql数据库各节点(128.、129、130)执行:
grant all privileges on . to mha@‘192.168.157.%’ identified by ‘mysql_2015’;
flush privileges;创建用于建立数据复制关系的账号,在mysql数据库各节点(128、129、130)执行:
grant all privileges on . to rep@‘192.168.157.%’ identified by ‘rep’;
flush privileges;
5、登录主备,即管理节点128,和从节点130上设置slave同步主129
登录主129数据库show master status/G; 记录
主从复制命令:
change master to master_host=‘192.168.157.129’, MASTER_PORT=3306, master_user=‘rep’, master_password=‘rep’, master_log_file=‘mysql-bin.000001’, master_log_pos=986;
start slave;
show slave status\G;
6、以下操作在管理节点128上执行利用mha工具检测ssh
masterha_check_ssh --global_conf=/usr/local/mha/conf/manager.cnf --conf=/usr/local/mha/conf/app1.cnf
使用mha工具check检查repl复制环境
masterha_check_repl --global_conf=/usr/local/mha/conf/manager.cnf --conf=/usr/local/mha/conf/app1.cnf
检查过程报错以及解决办法
1、Can’t exec “mysqlbinlog”: No such file or directory at /usr/share/perl5/vendor_perl/MHA/BinlogManager.pm line 106.
mysqlbinlog version command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client options
解决办法:每台mysql执行 ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
2、 Testing mysql connection and privileges…sh: mysql: command not found
解决办法 每台mysql执行 ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
检查成功
7、主mysql130 添加虚拟ip
/sbin/ifconfig eth0:1 192.168.157.140;/sbin/arping -I eth0 -c 3 -s 192.168.157.140 192.168.157.2 >/dev/null 2>&1
7、启动manager命令
masterha_manager --global_conf=/usr/local/mha/conf/manager.cnf --conf=/usr/local/mha/conf/app1.cnf &
停止manager命令
masterha_stop --global_conf=/usr/local/mha/conf/manager.cnf --conf=/usr/local/mha/conf/app1.cnf
查看启动日志
tail -f /usr/local/mha/logs/mha.log
使用masterha_check_status检测下mha状态
masterha_check_status --global_conf=/usr/local/mha/conf/manager.cnf --conf=/usr/local/mha/conf/app1.cnf
二、测试
1、主mysql129死机自动切换测试在主mysql上停止mysql服务
查看129vip ,明显vip已经切换了
打印128mha日志,观察切换效果
tail -f /usr/local/mha/logs/mha.log
查看128vip是否漂移过来成功
查看130mysql同步信息,show slave status\G;明显主已切换到128
由以上结果,切换成功
2、原主129恢复后,手动变为从查看主128master状态
建立与新主128数据复制
change master to master_host=‘192.168.157.128’, MASTER_PORT=3306, master_user=‘rep’, master_password=‘rep’, master_log_file=‘mysql-bin.000018’, master_log_pos=1486;
start slave;
show slave status\G;
3、一旦发生切换管理进程(Manager)将会退出,无法进行再次测试,需将故障数据库解决掉之后,重新change加入到MHA环境中来,因为主已经切换到新的机器128上,所以必须修改新的mha配置文件
cp /usr/local/mha/conf/app1.cnf /usr/local/mha/conf/app2.conf
app2.cnf只需要修改三个参数
app2.cnf.txt
cp /usr/local/mha/conf/manager.cnf /usr/local/mha/conf/manager2.conf
manager2.cnf.txt
重新使用mha工具check检查repl复制环境
masterha_check_repl --global_conf=/usr/local/mha/conf/manager2.cnf --conf=/usr/local/mha/conf/app2.cnf
重新启动manager
masterha_manager --global_conf=/usr/local/mha/conf/manager2.cnf --conf=/usr/local/mha/conf/app2.cnf &
查看启动日志,启动成功
使用masterha_check_status检测下mha状态
masterha_check_status --global_conf=/usr/local/mha/conf/manager2.cnf --conf=/usr/local/mha/conf/app2.cnf
至此。Mysql-mha搭建完成