MySQL基於MHA高可用搭建

大家好,我是anyux。本文介紹MySQL基於MHA高可用搭建。


MySQL基於MHA高可用搭建


<code> ln -s /data/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
 ln -s /data/mysql/bin/mysql /usr/bin/mysql/<code>


配置互信

db01

<code> rm -rf /root/.ssh
 ssh-keygen
 cd /root/.ssh
 mv id_rsa.pub authorized_keys
 scp -r /root/.ssh 192.168.255.113:/root scp -r /root/.ssh 192.168.255.114:/root scp -r /root/.ssh 192.168.255.115:/root/<code>


驗證各節點,注意需要互相驗證

db01

<code> ssh 192.168.255.113 date/<code>

db02

<code> ssh 192.168.255.114 date/<code>

db03

<code> ssh 192.168.255.115 date/<code>

下載地址

<code> 下載mha軟件
 mha官網:https://code.google.com/archive/p/mysql-master-ha/
 github下載地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads/<code>

安裝軟件包

所有節點都要操作

<code> yum install -y perl-DBD-MySQL
 rpm -ivh mha4mysql-node-0.56-el.noarch.rpm/<code>


在db01主庫中創建mha需要的用戶

<code> grant all privileges on *.* to mha@'%' identified by 'mha';/<code>
MySQL基於MHA高可用搭建

Manager軟件安裝(db03)

管理節點安裝在非主節點的原因,如果master節點斷電了,Manager節點可以在其他node節點實現failover(故障切換)

<code> yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
 rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm/<code>

配置文件準備(db03)創建配置文件目錄

<code>  mkdir -p /etc/mha/<code>

創建日誌目錄

<code>  mkdir -p /var/log/mha/app1/<code>

/var/log/mha/app1/manager為運行時日誌,MHA故障時,需要首先檢查此日誌,快速定位問題

master_binlog_dir為主庫二進制日誌位置,且要求主從數據庫的二進制日誌必須打開,且目錄名稱最好一致

ping_interval為探測心跳時間,每兩秒做一次探測,默認3次都失敗,則認定主節點故障,此時會出現切換節點

<code> cat >/etc/mha/app1.cnf < [server default]
 manager_log=/var/log/mha/app1/manager        
 manager_workdir=/var/log/mha/app1            
 master_binlog_dir=/data/binlog      
 user=mha                                  
 password=mha                              
 ping_interval=2
 repl_password=123
 repl_user=repl

 ssh_user=root                              
 [server1]                                  
 hostname=192.168.255.113
 port=3306                                  
 [server2]            
 hostname=192.168.255.114
 port=3306
 [server3]
 hostname=192.168.255.115
 port=3306
 EOF
/<code>
MySQL基於MHA高可用搭建

狀態檢查

互信檢查

<code> masterha_check_ssh  --conf=/etc/mha/app1.cnf/<code>

主從狀態檢查

<code> [root@db03 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
 返回成功
 [root@db03 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
 返回ok/<code>

開啟MHA(db03):

/var/log/mha/app1/manager.log為啟動時日誌

<code> nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null> /var/log/mha/app1/manager.log 2>&1 &/<code>

查看MHA狀態

<code> masterha_check_status --conf=/etc/mha/app1.cnf
 
 mysql -umha -pmha -h 10.0.0.51 -e "show variables like 'server_id'"/<code>


MHA架構結構說明

節點規劃

數據庫節點,必須至少是1主兩從,不支持單機多實例的環境

MHA管理節點,最好是獨立一臺機器

manager:db03

node:db01,db02,db03


MHA軟件的構成(perl語言)

Manager工具包主要包括以下幾個工具

mha4mysql-manager-0.56-0.3l6.noarch.com

軟件構成軟件作用masterha_manager啟動MHAmasterha_check_ssh檢查MHA的SSH配置狀況masterha_check_repl檢查MySQL複製狀況masterha_master_monitor檢測master是否宕機masterha_check_status檢測當前MHA運行狀態masterha_master_switch控制故障轉移(自動或者手動)masterha_conf_host添加或刪除配置的server信息

Node工具包主要包括以下幾個工具

這些工具通常由MHA Manager有腳本觸發,無需要人為操作

軟件構成軟件作用save_binary_logs保存和複製master的二進制日誌apply_diff_relay_logs識別差異的中繼日誌事件並將其差異的事件應用於其他的purge_relay_logs清除中繼日誌(不會阻斷SQL線程)


MHA配置過程細節說明

軟鏈接

配置軟鏈接的原因是,MHA的軟件就是使用絕對路徑的方式運行的,所以需要使用軟鏈接。配置了環境變量,也必須配置軟鏈接,不然運行依然會失敗的

<code> \\rm -rf /usr/bin/mysqlbinlog
 \\rm -rf /usr/bin/mysql
 ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
 ln -s /application/mysql/bin/mysql /usr/bin/mysql/<code>


互信檢查

當master主節點宕機,manager節點需要通過ssh到node節點進行一些failover(故障切換)的相關操作.所以必須先配置好ssh互信


分享到:


相關文章: