MHA

一、添加vm3为备机

基于mysql-proxy实验基础上,将vm3也改为备机。
先关掉mysql-proxy进程。
ps -ax 查看进程pid(如果没有则不需要kill)

(1.)下载mysql

MHA数据库高可用

(2)配置
mysql -p                                     ##登陆数据库
Enter password:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';    ##下载半同步模块

MHA数据库高可用
配置主配置文件:

vim my.cnf

MHA数据库高可用

systemctl restart mysqld

为vm3添加master机

mysql>  change master to master_host='172.25.64.11',master_user='repl', master_password='Highhorse+007',master_auto_position=1;  ##直接使用gtid自动
mysql> start slave;   ##开启
mysql> show slave status\G  ##查看slave状态

显示
Slave_IO_Running: Yes
Slave_SQL_Running: No ##数据不一致导致

MHA数据库高可用

(3)问题解决:
vim my.cnf

MHA数据库高可用

systemctl restart mysqld
mysql> stop slave;
备份westos库
[[email protected] ~]# mysqldump -u root -p westos > westos.sql           ##将数据库倒入.sql文件
Enter password: 
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events. 
[[email protected] ~]# scp westos.sql vm3:             ##将备份发送到vm3
导入备份
[[email protected] ~]# mysqladmin -u root -pHighhorse+007 create westos    ##创建同名库
[[email protected] ~]#  mysql -u root -p westos < westos.sql                            ##导入数据
查看数据是否导入:

MHA数据库高可用

MHA数据库高可用
取消注释,重启mysql。

二、安装MHA

[[email protected] MHA-7]# ls
mha4mysql-manager-0.58-0.el7.centos.noarch.rpm  perl-Mail-Sender-0.8.23-1.el7.noarch.rpm
mha4mysql-manager-0.58.tar.gz                   perl-Mail-Sendmail-0.79-21.el7.noarch.rpm
mha4mysql-node-0.58-0.el7.centos.noarch.rpm     perl-MIME-Lite-3.030-1.el7.noarch.rpm
perl-Config-Tiny-2.14-7.el7.noarch.rpm          perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm  perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm
[[email protected] MHA-7]# yum install * -y

[[email protected] ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

[[email protected] ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

三、节点免密

MHA中各个worker之间必须免密,master到worker也需要免密,所以要在他们之间进行免密操作。
[[email protected] MHA-7]# ssh-******
[[email protected] ~]# cd .ssh/
[[email protected] .ssh]# ssh-copy-id vm1

MHA数据库高可用
MHA数据库高可用

四、配置主从

各个节点配置完全一样;文件除server-id外全一样。

vm1

mysql> grant all on *.* to [email protected]'%' identified by 'Highhorse+007';
Query OK, 0 rows affected, 1 warning (0.07 sec)
mysql> flush privileges;
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> grant replication slave on *.* to [email protected]'172.25.64.%' identified by 'Highhorse+007';
mysql> flush privileges;

vim /etc/my.cnf
MHA数据库高可用
systemctl restart mysqld

vm2

[[email protected] ~]# mysql -p
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.16 sec)

mysql> set global read_only=1;
Query OK, 0 rows affected (0.00 sec)

vim /etc/my.cnf
MHA数据库高可用
systemctl restart mysqld

vm3

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
Query OK, 0 rows affected (0.48 sec)

mysql> set global read_only=1;
MHA数据库高可用
systemctl restart mysqld

五、配置MHA

[[email protected] ~]#  tar zxf mha4mysql-manager-0.58.tar.gz
[[email protected] ~]# cd mha4mysql-manager-0.58/
[[email protected] mha4mysql-manager-0.58]# cd samples/conf/
[[email protected] conf]# ls
app1.cnf  masterha_default.cnf
[[email protected] conf]# mkdir /etc/masterha
[[email protected] conf]# cp * /etc/masterha/
[[email protected] conf]# cd /etc/masterha/
[[email protected] masterha]# cat app1.cnf >>masterha_default.cnf

编写配置文件

[server default]
manager_workdir=/etc/masterha    ##设置manger工作目录
manager_log=/etc/masterha/manager.log  ##设置manger日志
user=root
password=Highhorse+007
ssh_user=root
master_binlog_dir=/var/lib/mysql  ##mysql的数据目录。设置master保存binlog,以便MHA可找到master的日志。
remote_workdir=/tmp
#secondary_check_script= masterha_secondary_check -s remote_host1 -s remote_host2
ping_interval=1
repl_user=repl
repl_password=Highhorse+007
# master_ip_failover_script= /script/masterha/master_ip_failover ##设置手动failover时切换脚本
# shutdown_script= /script/masterha/power_manager
# report_script= /script/masterha/send_report
# master_ip_online_change_script= /script/masterha/master_ip_online_change  设置自动failover时切换脚本

[server1]
hostname=172.25.64.11

[server2]
hostname=172.25.64.12
candidate_master=1
check_repl_delay=0

[server3]
hostname=172.25.64.13
no_master=1

六、检测

[[email protected] masterha]# masterha_check_ssh --conf=/etc/masterha/masterha_default.cnf ##检测manger到节点的免密ssh连接状态

MHA数据库高可用
[[email protected] masterha]# masterha_check_repl --conf=/etc/masterha/masterha_default.cnf ##检测repl用户mysql主从复制状态
MHA数据库高可用

相关文章: