標籤:linux、mysql
一主兩從一管理,一共四台裝置
MHA的作用是做master的高可用,當主節點MySQL故障時,會將和主節點資料最接近的一個從節點提升為主節點,同時如果其他從節點有更新的資料也會同步到此“准主節點”上。如果在主節點有資料已經提交但是所有的從節點還未完成複製,則從節點提升為主節點後只能將此資料回退,沒有別的辦法。
準備事項:
1、同步時間
ntpdate 172.18.0.1
2、配置主機網域名稱,在主節點即node1上操作
vim /etc/hosts192.168.1.101 node1 #主節點192.168.1.106 node2 #從節點192.168.1.107 node3 #從節點192.168.1.100 node4 #managerscp /etc/hosts node2:/etc/hostsscp /etc/hosts node3:/etc/hostsscp /etc/hosts node4:/etc/hosts
3、MHA需要ssh無密鑰驗證
ssh-keygen -t rsa -P ‘‘cd /root/.ssh/ssh-copy-id -i ./id_rsa.pub [email protected]scp id_rsa{,.pub} authorized_keys node2:/root/.sshscp id_rsa{,.pub} authorized_keys node3:/root/.sshscp id_rsa{,.pub} authorized_keys node4:/root/.ssh
下面開始具體步驟:
1、配置主從複製叢集
node1:vim /etc/my.cnf.d/server.cnf [server] skip_name_resolve=ON innodb_file_per_table=ON server_id = 1 log_bin = master-log relay_log = relay-log #主節點也要配置中繼日誌,因為主節點故障再恢複時就會稱為從節點
node2:vim /etc/my.cnf.d/server.cnf [server] skip_name_resolve=ON innodb_file_per_table=ON server_id = 2 relay_log = relay-log log_bin = master-log relay_log_purge = OFF read_only = ON node3:vim /etc/my.cnf.d/server.cnf [server] skip_name_resolve=ON innodb_file_per_table=ON server_id = 3 relay_log = relay-log log_bin = master-log relay_log_purge = OFF read_only = ON
開啟服務
systemctl start mariadb.service
2、在主節點授權複製帳號
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO ‘repluser‘@‘192.168.1.%‘ IDENTIFIED BY ‘centos‘;
主節點授權管理裝置的管理帳號
GRANT ALL ON *.* TO ‘mhaadmin‘@‘192.168.1.%‘ IDENTIFIED BY ‘centos‘;
寫入磁碟
FLUSH PRIVILEGES;
3、在從節點配置
CHANGE MASTER TO MASTER_HOST=‘192.168.1.101‘,MASTER_USER=‘repluser‘,MASTER_PASSWORD=‘centos‘,MASTER_LOG_FILE=‘master-log.000003‘,MASTER_LOG_POS=245;START SLAVE ;SHOW SLAVE STATUS\G;SELECT USER FROM mysql.user;#能看到複製授權賬戶和管理賬戶已經同步
4、安裝MHA軟體包
在manager節點安裝manager和node包
yum -y install mha4mysql-manager-0.56-0.el6.noarch.rpmyum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
5、在node上安裝node包
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
6、在manager上配置
mkdir /etc/masterhavim /etc/masterha/app1.cnf[server default]user=mhaadminpassword=centosmanager_workdir=/data/masterha/app1manager_log=/data/masterha/app1/manager.logremote_workdir=/data/masterha/app1ssh_user=rootrepl_user=repluserrepl_password=centosping_interval=1[server1]hostname=192.168.1.101ssh_port=22candidate_master=1[server2]hostname=192.168.1.106ssh_port=22candidate_master=1[server3]hostname=192.168.1.107ssh_port=22candidate_master=1
7、檢查配置並啟動服務
檢查masterha_check_ssh --conf=/etc/masterha/app1.cnfmasterha_check_repl --conf=/etc/masterha/app1.cnf 啟動manager伺服器masterha_manager --conf=/etc/masterha/app1.cnf
8、測試
此時類比主節點故障
SHOW MASTER STATUS; SHOW SLAVE STATUS;#在從節點查看從節點資訊,此時有一個從節點已經升級為主節點
9、修複原主節點
vim /etc/my.cnf.d/server.cnf #添加兩行relay_log_purge = OFFread_only = ON再次開啟服務上線systemctl start mariadb.serviceCHANGE MASTER TO MASTER_HOST=‘192.168.1.106‘,MASTER_USER=‘repluser‘,MASTER_PASSWORD=‘centos‘,MASTER_LOG_FILE=‘master-log.000003‘,MASTER_LOG_POS=320; START SLAVE;SHOW SLAVE STATUS\G;#此時的主節點就是替代的原從節點
10、在manager上檢查複製功能
masterha_check_repl --conf=/etc/masterha/app1.cnf出現如下字樣就說明主從已經切換了,而且原主節點此時也變成了從節點192.168.1.106(192.168.1.106:3306) (current master) +--192.168.1.101(192.168.1.101:3306) +--192.168.1.107(192.168.1.107:3306)
11、再次啟動MHA
nohup masterha_manager --conf=/etc/masterha/app1.cnf &> /data/masterha/app1/manager.log &#在後台執行,並剝離與當前終端的關係#當主節點再次down掉,此程式會自動結束同時主從節點自動切換。然後我們還要再次手動開啟MHA
至此實驗結束
本文出自 “a_pan” 部落格,謝絕轉載!
MySQL高可用解決方案---MHA