大家好,我是anyux。本文介紹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>
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] /<code>
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> 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互信
閱讀更多 anyux1 的文章