MHA由Node和Manager组成,Node运行在每一台MySQL服务器上,也就是说,不管是MySQL主服务器、从服务器、还MHA管理机器,都要安装Node!MHA管理节点模块内部依赖MHA节点模块;MHA管理节点通过ssh连接管理mysql服务器和执行MHA节点脚本。
步骤一、IP划分:
主库:10.142.132.52 [keepalived]
从库1:10.142.132.51 [keepalived 备主]
从库2:10.142.132.47
从库3:10.142.132.48
mha管理:10.142.132.50
mysql-proxy:10.142.132.50
步骤二、安装源码文件(Mha安装包依赖很多per包,请按照我的安装顺序安装!)
(1)、mha4mysql-node-0.53.tar.gz
rpm -ivhperl-DBI-1.620-1.el5.rfx.x86_64.rpm
rpm -ivhMySQL-shared-compat-5.6.21-1.rhel5.x86_64.rpm
rpm -ivhperl-DBD-MySQL-3.0007-2.el5.x86_64.rpm 【如果是6系统先安装 rpm -ivhperl-Data-ShowTable-3.3-1.2.el6.rf.noarch.rpm 】
tar xfmha4mysql-node-0.53.tar.gz
cd mha4mysql-node-0.53
perl Makefile.PL
make && make install
注意:redhat5系列系统,会出现【Pleaseenter your CPAN site: [] 随便输入,反正也不用CPAN模块:http://www.cpan.org】
(2)、mha4mysql-manager-0.53.tar.gz
rpm -ivhperl-Config-Tiny-2.10-1.el5.noarch.rpm
rpm -ivhepel-release-5-4.noarch.rpm
rpm -ivh perl-Parallel-ForkManager-0.7.5-4.el5.noarch.rpm
rpm -ivhperl-Mail-Sender-0.8.16-1.el5.rf.noarch.rpm
rpm -ivhperl-Mail-Sendmail-0.79-1.2.el5.rf.noarch.rpm
rpm -ivhperl-Params-Validate-0.95-1.el5.rf.x86_64.rpm
rpm -ihvperl-Email-Date-Format-1.002-4.el5.noarch.rpm
rpm -ivhperl-MIME-Lite-3.029-1.el5.rf.noarch.rpm
rpm -ivhperl-TimeDate-1.16-1.2.el5.rf.noarch.rpm 【解决:perl(Date::Format) perl(Date::Parse)】
rpm -ivhperl-Pod-Escapes-1.04-5.el5.noarch.rpm
rpm -ivhperl-Pod-Simple-3.16-1.el5.rf.noarch.rpm
rpm -ivhperl-Test-Pod-1.45-1.el5.rf.noarch.rpm
rpm -ivh perl-MailTools-2.12-1.el5.rf.noarch.rpm【解决:perl(Mail::send)】
rpm -ivhperl-Log-Dispatch-2.20-1.el5.noarch.rpm
tar xfmha4mysql-manager-0.53.tar.gz
cd mha4mysql-manager-0.53
perl Makefile.PL
make && make install
注意:redhat5系列系统,会出现【Pleaseenter your CPAN site: [] 随便输入,反正也不用CPAN模块:http://www.cpan.org】
步骤三、在所有机器配置ssh信任
47机器举例
(1)
ssh-keygen -t rsa
(2)
cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7........
(3)
在 48、50、51、52
vi authorized_keys
增加 47 上 id_rsa.pub的内容
(4)测试
ssh 10.142.132.52 date
ssh 10.142.132.51 date
ssh 10.142.132.50 date
ssh 10.142.132.48 date
ssh 10.142.132.47 date
步骤四、编辑mha4mysql-manager配置文件
【10.142.132.50管理节点】
mkdir -p /etc/masterha
vi /etc/masterha/app1.cnf
[server default]
user=root
password=mysql
ssh_user=root
repl_user=lipengfei
repl_password=lipengfei
manager_workdir=/app/masterha/app1
manager_log=/app/masterha/app1/app1.log
remote_workdir=/app/masterha/app1
ping_interval=1
[server1]
hostname=10.142.132.52
candidate_master=1
check_repl_delay=0
master_binlog_dir=/app/mysql/data
[server2]
hostname=10.142.132.51
candidate_master=1
check_repl_delay=0
master_binlog_dir=/app/mysql/data
[server3]
hostname=10.142.132.48
no_master=1
[server4]
hostname=10.142.132.47
no_master=1
步骤五、启动mha4mysql-manager
nohup masterha_manager--conf=/etc/masterha/app1.cnf --ignore_last_failover < /dev/null > /app/masterha/app1/app1.log2>&1 &
步骤六、故障测试
1、 手工停止 52上的mysql服务,service mysql stop
2、 大约30秒,51自动成为新的主库【在47或48从库上show slave status 就可以看出来】
3、 52再次启动mysql服务,要手工加入到AB架构中【51是主库,使用如下演示命令加入AB架构】
change master to master_host=‘10.142.132.51‘, master_port=3306,master_user=‘lipengfei‘, master_password=‘lipengfei‘,master_log_file=‘binlog.000001‘,master_log_pos=120;
4、 手工停止51上的Mysql服务
5、 大约30秒,52自动成为新的主库【在47或48从库上show slave status 就可以看出来】
注意说明:
1、当主DB故障,切换到另外的服务器上后,即使恢复了原来的主DB,也不能立即加入整套MHA系统中,得重新手工加入AB架构。
2、当发生一次切换后,管理节点的监控进程就会自动退出,需要用脚本来自动启动。另外还得删除app1.failover.complete这个文件,否则新的主DB出现问题MHA就不会切换了。
---------------------------------------mha常用命令--------------------------------------
nohup masterha_manager--conf=/etc/masterha/app1.cnf --ignore_last_failover < /dev/null > /app/masterha/app1/app1.log2>&1 & 【开启MHA Manager监控】
masterha_check_status--conf=/etc/masterha/app1.cnf 【查看MHA Manager监控是否正常】
masterha_stop--conf=/etc/masterha/app1.cnf 【关闭MHA Manage监控】
masterha_check_ssh--conf=/etc/masterha/app1.cnf 【检查SSH配置】
masterha_check_repl--conf=/etc/masterha/app1.cnf 【检查整个复制环境状况】