關於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。因此說在運維架構中並無一勞永逸的事,到底要怎麼去使用,具體狀況還得在實際工做中部門開會來決定,並非一我的就能拍板的。