mha簡單配置

關於mhanode

    mha是一款開源的mysql的高可用程序,它爲mysql主從複製架構提供了自動化主機故障轉移功能。mha檢測架構的全部節點,一但檢測到主節點有故障時,會當即提高擁有最新數據的從節點成爲新的主節點。除了故障時轉移,mha也支持在線手動切換。當主節點須要下線維護,也能夠實現。mysql

實驗環境sql

    master:192.168.32.111vim

    slave:192.168.32.112centos

    slave:192.168.32.104bash

    manager:192.168.32.105架構

實驗前提app

    一、節點內全部主機時間必須同步一致運維

    二、節點內全部主機能夠實現域名解析(非必須項)ssh

cat /etc/hosts
...
192.168.32.111  node1
192.168.32.112  node2
192.168.32.104  node3
192.168.32.105  node4

    三、節點內主機能經過ssh密鑰訪問

~]#ssh-keygen -t rsa -P ''
~]#cd .ssh
~]#ssh-copy-id -i ./id_rsa.pub     <===本身鏈接本身拷貝,生成authorized_keys文件
~]#ls .ssh/
authorized_keys  id_rsa  id_rsa.pub  known_hosts  <===把前三個文件複製給其他三臺主機
~]#scp id_rsa{,.pub} authorized_keys  
~]#scp id_rsa{,.pub} authorized_keys 
~]#scp id_ra{,.pub} authorized_keys        <===測試主機間直接互連

  實驗

    一、搭建mysql主從架構

        1.1主節點配置       

~]#vim /etc/my.cnf.d/server.cnf
[server]
skip_name_resolve = ON
innodb_file_per_table = ON
max_connection = 2000

log_bin = master-log
server_id = 1
relay_log=relay-log
~]#mysql
>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'ma'@'192.168.32.%' IDENTIFIED BY 'centos'; <===建立從節點複製用戶
> GRANT ALL ON *.* TO 'mha'@'192.168.32.%' IDENTIFIES BY 'centos';    <===建立manager用戶

        1.2從節點配置,id號必須不一樣

]#vim /etc/my.cnf.d/server.cnf 
[server]
skip_name_resolve = ON
innodb_file_per_table = ON
max_connection = 2000

relay_log = relay-log
log_bin = master-log
server_id = 2
relay_log_purge = OFF
read_only = ON

        1.3在每臺從節點上進入mysql改變工做模式,具體MASTER_LOG的文件和位置事先能夠在主節點上查看:SHOW MASTER STATUS;

>CHANGE MASTER TO MASTER_HOST='192.168.32.111',MASTER_USER='ma',MASTER_PASSWORD='centos',MASTER_LOG_FILE='master-log.000001',MASTER_LOG_POS=245;

        1.4配置完後在從節點上SHOW SLAVE STATUS能夠查看指向的主節點信息,而且能夠查看賬號信息是否已經同步了。

    二、安裝mha

        2.1在主節點上安裝mha4mysql-node和mha4mysql-manager包。centos7能夠直接使用e16的程序包,而且兩個包版本並沒有強制要求一致。

~]#yum install ./mha4mysql-manager-0.56-0.el6.noarch.rpm -y
~]#yum install ./mha4mysql-node-0.56-0.el6.noarch.rpm -y

        2.2在全部從節點上安裝mha4mysql-node包,安裝方法同上。

    三、初始化mha

        3.1manager節點須要爲每一個監控的mysql集羣提供一個專用的配置文件。咱們知道mha不止能夠監控一組master/slave,不一樣的集羣能夠共享一個全局配置,默認全局文件爲/etc/masteha_default.cnf。若是隻監控一組,也能夠自定義配置文件里路徑。

~]#mkdir /etc/masterha
~]#vim /etc/masterha/app1.cnf 
[server default]
user=mha
password=centos
manager_workdir=/data/masterha/app1
manager_log=/data/masterha/app1/manager.log
remote_workdir=/data/masterha/app1
ssh_user=root
ssh_port=22
repl_user=ma
repl_password=centos
ping_interval=1

[server1]
hostname=192.168.32.111
candidate_master=1

[server2]
hostname=192.168.32.112
candidate_master=1

[server3]
hostname=192.168.32.104
candidate_master=1

        3.2檢測各節點互相ssh通訊是否正常

~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
...
All SSH connection tests passed successfully.        <===出現這個表明成功

        3.3檢測管理的mysql複製集羣的鏈接配置參數是否正常

~]# masterha_check_repl --conf=/etc/masterha/app1.cnf 
...
Thu Nov 16 14:49:20 2017 - [info] Slaves settings check done.
Thu Nov 16 14:49:20 2017 - [info] 
192.168.32.111(192.168.32.111:3306) (current master)
 +--192.168.32.112(192.168.32.112:3306)
 +--192.168.32.104(192.168.32.104:3306)
...
MySQL Replication Health is OK.                    <===出現這個表明成功

       3.4啓動mha,後臺運行

~]#nohup masterha_manager --conf=/etc/masterha/app1.cnf &>/data/masterha/app1/manager.log &
]# masterha_check_status --conf=/etc/masterha/app1.cnf                                         
app1 (pid:24915) is running(0:PING_OK), master:192.168.32.112

        3.5故障排錯

            一、檢查ssh互相以前是否可使用密鑰無密碼登陸

            二、檢查受權的兩個賬號是否能夠正常登陸各個節點

    四、故障轉移測試

        4.1在主節點關閉mysql服務,mha會自動挑選一個做爲新的主節點,同時mha服務會停止。查看日誌能夠看到相關轉移過程。

        4.2主節點恢復後能夠繼續做爲新的主節點的從節點,須要從新change和start slave。注意此時配置文件/etc/my.cnf.d/server.cnf中需添加/relay_log_purge = OFF和read_only = ON兩項。

        4.3再次啓動mha後臺運行便可

總結

    咱們已經實現了mysql主節點高可用的解決方案,可是又引入了一個新的單點,mha。因此說在運維架構中並無一勞永逸的事,到底要怎麼去使用,具體狀況還得在實際工做中部門開會來決定,並非一我的就能拍板的。

相關文章
相關標籤/搜索