真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysqlMHA高可用架構(gòu)部署

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)用程序是完全透明的。

整體環(huán)境介紹:
master1 :192.168.9.25
master2  :  192.168.9.26
slave1     :   192.168.9.29
slave2     :    192.168.9.30 
manager 節(jié)點(diǎn): 192.168.9.27
lvs1:   192.168.9.27
lvs2 :  192.168.9.28
整體搭建流程思路:所有的mysql服務(wù)器上都要安裝node軟件,在manager管理服務(wù)器(9.27)上安裝manager和node節(jié)點(diǎn)。然后所有的mysql數(shù)據(jù)里要?jiǎng)?chuàng)建mha管理用戶(hù),這里我起名字叫  admin
mysql MHA 高可用架構(gòu)部署

下面演示具體搭建過(guò)程:
一:9.27管理節(jié)點(diǎn)部署,安裝node和manager軟件,只要安裝上既可以了,不用開(kāi)啟
首先上傳node和manager軟件安裝鏡像(我硬盤(pán)里有)

[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;

五:9.30從庫(kù)操作參考9.29.


六:至此需要安裝的軟件,已經(jīng)基本完成,下面具體展示如何配置manager管理節(jié)點(diǎn),mha上層可以通過(guò)keepalive部署VIP,程序連接數(shù)據(jù)庫(kù)使用VIP,從而實(shí)現(xiàn)后臺(tái)數(shù)據(jù)庫(kù)的故障切換透明化。

[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 u01]# cat /usr/local/bin/master_ip_failover  
#!/bin/bash
                #--------------第一部分:變量及函數(shù)定義-----------------#
        ###Begin Variables define###
        ssh_port=22
        cmd=/sbin/ifconfig
        vip=192.168.9.232
        device=eth0:0
        netmk=255.255.255.0
        start_vip="${cmd} ${device} ${vip} netmask ${netmk} up"
        stop_vip="${cmd} ${device} ${vip} netmask ${netmk} down"
        ###End Variables define###

        ###Begin Status Funciont###
        status()
        {
        exit 0
        }
        ###End Status Funciont###

        ###Begin Stop Or Stopssh Funciont###
        stop()
        {
        exit 0
        }
        ###End Stop Or Stopssh Funciont###

        ###Begin Start Funciont###
        start()
        {
        /usr/bin/ssh -p ${ssh_port} ${ssh_user}@${orig_master_host} ""${stop_vip}"" 
        /usr/bin/ssh -p ${ssh_port} ${ssh_user}@${new_master_host} ""${start_vip}""
        exit 0
        }
        ###End Start Funciont###
                #--------------第一部分:變量及函數(shù)定義-----------------#

                #--------------第二部分:命令行參數(shù)-----------------#
        ###Begin Get The Command-Line Parameters###
###eval set -- "`getopt -a -q -o n -l command::,ssh_user:,orig_master_host:,orig_master_ip:,orig_master_port:,new_master_host:,new_master_ip:,new_master_port:,new_master_user:,new_master_password: -- "$@"`"
        eval set -- "`getopt -a -q -o n -l command::,ssh_user:,orig_master_host:,orig_master_ip:,new_master_host:,new_master_ip: -- "$@"`"

        if [ $? != 0 ] ; then echo "Terminating..." >&2 ;exit 1;fi

        while true
        do
                case "$1" in
                        --command)
                                command="${2}";
                                shift;;
                        --ssh_user)
                                ssh_user="${2}";
                                shift;;
                        --orig_master_host)
                                orig_master_host="${2}";
                                shift;;
                        --orig_master_ip)
                                orig_master_ip="${2}";
                                shift;;
                        --new_master_host)
                                new_master_host="${2}";
                                shift;;
                        --new_master_ip)
                                new_master_ip="${2}";
                                shift;;
                        --)
                                shift;
                                break;;
                esac
        shift
        done
        ###End Get The Command-Line Parameters###
                #--------------第二部分:命令行參數(shù)-----------------#

                #--------------第三部分:函數(shù)調(diào)用-----------------#
        if [ "${command}" == "status" ];
        then
        status;
        fi
        if [ "${command}" == "stop" ] || [ "${command}" == "stopssh" ] ;
        then
        stop;
        fi
     if [ "${command}" == "start" ];
   then    
   start;
   fi
七:建立互信,注意要涵蓋所有服務(wù)器。下面僅展示一個(gè)服務(wù)器的。

[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)。






當(dāng)前名稱(chēng):mysqlMHA高可用架構(gòu)部署
文章來(lái)源:http://weahome.cn/article/peoeio.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部