MHA簡(jiǎn)介:即Master High Availability Manager and Tools for MySQL,是日本的一位MySQL專(zhuān)家采用Perl語(yǔ)言編寫(xiě)的一個(gè)腳本管理工具,
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、賽罕網(wǎng)站維護(hù)、網(wǎng)站推廣。
該工具僅適用于MySQL Replication(二層)環(huán)境,目的在于維持Master主庫(kù)的高可用性。
在 MySQL 故障切換過(guò)程中,MHA 能做到 0~30 秒之內(nèi)自動(dòng)完成數(shù)據(jù)庫(kù)的故障
切換操作,并且在進(jìn)行故障切換的過(guò)程中,MHA 能最大程度上保證數(shù)據(jù)庫(kù)的一致性,以達(dá)到
真正意義上的高可用。
MHA 由兩部分組成:MHA Manager(管理節(jié)點(diǎn))和 MHA Node(數(shù)據(jù)節(jié)點(diǎn))。MHA Manager
可以獨(dú)立部署在一臺(tái)獨(dú)立的機(jī)器上管理多個(gè)Master-Slave集群,也可以部署在一臺(tái)Slave上。
當(dāng) Master 出現(xiàn)故障是,它可以自動(dòng)將最新數(shù)據(jù)的 Slave 提升為新的 Master,然后將所有其他
的 Slave 重新指向新的 Master。整個(gè)故障轉(zhuǎn)移過(guò)程對(duì)應(yīng)用程序是完全透明的。
[root@lvs-a ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm (6.5系統(tǒng))
[root@lvs-a ~]# #rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm (5.8)
[root@lvs-a ~]# ls /etc/yum.repos.d/
base.repo epel.repo epel-testing.repo rhel-debuginfo.repo
[root@lvs-a ~]# yum -y install perl-DBD-MySQL ncftp
[root@lvs-a tarbag]# tar -zxf mha4mysql-node-0.56..tar.gz -C /usr/local ## node軟件解壓
[root@lvs-a tarbag]# cd /usr/local/mha4mysql-node-0.56
[root@lvs-a tarbag]# perl Makefile.PL
[root@lvs-a tarbag]# make && make install ## node安裝
[root@lvs-a tarbag]# yum -y install perl-Config-Tiny perl-Params-Validate perl-Log-Dispatch perl-Parallel-ForkManager
[root@lvs-a tarbag]# tar -zxf mha4mysql-manager-0.56.tar.gz -C /usr/local/
[root@lvs-a tarbag]# cd /usr/local/mha4mysql-manager-0.56 ##manager軟件安裝
[root@lvs-a mha4mysql-manager-0.56]# perl Makefile.PL
[root@lvs-a mha4mysql-manager-0.56]# make && make install
二:9.25主節(jié)點(diǎn)部署,只安裝node即可
[root@master1~]#rpm-ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@master1 ~]# ls /etc/yum.repos.d/
base.repo epel.repo epel-testing.repo rhel-debuginfo.repo
[root@master1 ~]# yum -y install perl-DBD-MySQL ncftp
[root@master1 tarbag]# tar -zxf mha4mysql-node-0.56..tar.gz -C /usr/local
[root@master1 tarbag]# cd /usr/local/mha4mysql-node-0.56
[root@master1 mha4mysql-node-0.56]# perl Makefile.PL
[root@master1 mha4mysql-node-0.56]# make && make install
[root@master1 mha4mysql-node-0.56]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
安裝mysql軟件 具體過(guò)程略過(guò),參考: MySQL 主從同步復(fù)制架構(gòu)搭建 文檔
創(chuàng)建mha管理賬號(hào)
Mysql> grant all on *.* to 'admin'@'%' identified by '123456';
Mysql> flush privileges;
創(chuàng)建mysql主從管理賬號(hào)
Mysql> grant replication slave on *.* to 'repl'@'%' identified by '123456';
Mysql> flush privileges;
三、9.26主備節(jié)點(diǎn)部署(步驟同主庫(kù)一樣)
[root@master2~]#rpm-ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@master2 ~]# ls /etc/yum.repos.d/
base.repo epel.repo epel-testing.repo rhel-debuginfo.repo
[root@master2 ~]# yum -y install perl-DBD-MySQL ncftp
[root@master2 tarbag]# tar -zxf mha4mysql-node-0.56..tar.gz -C /usr/local
[root@master2 tarbag]# cd /usr/local/mha4mysql-node-0.56
[root@master2 mha4mysql-node-0.56]# perl Makefile.PL
[root@master2 mha4mysql-node-0.56]# make && make install
[root@master2 mha4mysql-node-0.56]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
創(chuàng)建mha管理賬號(hào) 其實(shí)可以不建立的,因?yàn)殚_(kāi)始之前你要做讓master1去恢復(fù)別的mysql,只要master1上有即可。
Mysql> grant all on *.* to 'admin'@'%' identified by '123456';
Mysql> flush privileges;
創(chuàng)建mysql主從管理賬號(hào)
Mysql> grant replication slave on *.* to 'repl'@'%' identified by '123456';
Mysql> flush privileges;
四:9.29 從節(jié)點(diǎn)部署
[root@slave1~]#rpm-ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@slave1 ~]# ls /etc/yum.repos.d/
base.repo epel.repo epel-testing.repo rhel-debuginfo.repo
[root@slave1 ~]# yum -y install perl-DBD-MySQL ncftp
[root@slave1 tarbag]# tar -zxf mha4mysql-node-0.56..tar.gz -C /usr/local
[root@slave1 tarbag]# cd /usr/local/mha4mysql-node-0.56
[root@slave1 mha4mysql-node-0.56]# perl Makefile.PL
[root@slave1 mha4mysql-node-0.56]# make && make install
[root@slave1 mha4mysql-node-0.56]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
創(chuàng)建mha管理賬號(hào)
Mysql> grant all on *.* to 'admin'@'%' identified by '123456';
Mysql> flush privileges;
[root@lvs-a ~]# mkdir -p /etc/masterha
[root@lvs-a ~]# mkdir -p /masterha/app1
[root@lvs-a mha4mysql-manager-0.56]# cp samples/conf/* /etc/masterha/
[root@lvs-a ~]# cat /etc/masterha/app1.cnf
[server default]
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
user=admin
password=123456
ssh_user=root
repl_user=repl
repl_password=123456
ping_interval=1 #每秒ping一次
shutdown_script=""
master_ip_failover_script="/usr/local/bin/master_ip_failover" ?。#_@個(gè)腳本接下來(lái)會(huì)創(chuàng)建
master_ip_online_change_script=""
report_script=""
[server1]
hostname=192.168.9.26
master_binlog_dir=/mysql/data/log
candidate_master=1 ##主庫(kù)要有這個(gè)參數(shù)
[server2]
hostname=192.168.9.25
master_binlog_dir=/mysql/data/log
candidate_master=1
[server3]
hostname=192.168.9.29
master_binlog_dir=/data/log
[server4]
hostname=192.168.9.30
master_binlog_dir=/data/log/ #對(duì)應(yīng)路徑
[root@lvs-a ~]# ssh-keygen -t rsa
[root@lvs-a ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.25
[root@lvs-a ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.26
[root@lvs-a ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.29
[root@lvs-a ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.30
八:檢查mha配置是否正確。1.檢查ssh是否配置成功
[root@lvs-a ~]#masterha_check_ssh --conf=/etc/masterha/app1.cnf
最后顯示如下字段說(shuō)明成功:
Tue Jun 30 01:58:05 2015 - [info] All SSH connection tests passed successfully.
2.檢查mysql主從復(fù)制狀態(tài)是否成功
[root@lvs-a ~]#masterha_check_repl --conf=/etc/masterha/app1.cnf
最后出現(xiàn)MySQL Replication Health is OK.字段說(shuō)明成功。
3. 啟動(dòng)管理節(jié)點(diǎn)進(jìn)程
[root@lvs-a ~]# nohup masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log < /dev/null 2>&1 &
[1] 10085
4. 檢查mha主從狀態(tài)
[root@lvs-a ~]# masterha_check_status --conf=/etc/masterha/app1.cnf
顯示如下
app1 (pid:10085) is running(0:PING_OK), master:192.168.153.147
5. 停止mha
[root@lvs-a ~]# masterha_stop --conf=/etc/masterha/app1.cnf
九:安裝lvs+keepalived的具體過(guò)程參考,文檔 LVS+keepalived的安裝部署 http://blog.itpub.net/29654823/viewspace-1844282/
十:驗(yàn)證環(huán)境的正確性:
關(guān)閉現(xiàn)在的主(9.25),vip9.232 會(huì)自動(dòng)飄向主備(9.26),從而實(shí)現(xiàn)了主的高可用,這時(shí)候,manger(9.27)進(jìn)程也就死了,需要手動(dòng)起來(lái)。