MHA高可用環境搭建

上一篇 文章(https://blog.csdn.net/aofavx/article/details/106783795)已Mysql主從模式部署過程。現在使用MHA實現數據庫的高可用性。
​ 參考網址:https://www.cnblogs.com/keerya/p/7883766.html

1.軟件版本和環境:

系統:CentOS7系統

需要軟件

​ mysql5.7.30安裝包:mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar

​ mha4mysql管理端文件:mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

​ mha4mysql節點文件:mha4mysql-node-0.58-0.el7.centos.noarch.rpm

2.各個機器IP和角色

​ 172.18.0.12 – master主庫 --負責數據寫入

​ 172.18.0.13 – slaver從庫1—負責數據讀取

​ 172.18.0.14 – slaver從庫2 —負責數據讀取

​ 172.18.0.15 – MHA服務器 —數據庫節點監控和自動切換master/slave 節點。

2.MHA高可用環境搭建

1.在 master 節點上授管理員用戶可以遠程訪問。

grant all on *.* to 'mhaadmin'@'%' identified by 'mhaadmin';

3.在各節點服務器上生成密鑰

ssh-keygen -t rsa   (路徑默認,密碼無)

4.複製公鑰到其他服務器

ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
ssh-copy-id -i .ssh/id_rsa.pub [email protected]

5.下載MHA安裝包 地址https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

6.安裝mha

yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm   4個節點都安裝
yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha服務器安裝

安裝manager可能會有perl的錯誤。可以修改yum鏡像地址,安裝依賴包。
在這裏插入圖片描述也可以按照下面錯誤記錄中的方法解決。

7.設置mha配置文件
先創建/etc/mha_master,/etc/mha_master/work 文件夾

[server default] 			//適用於server1,2,3個server的配置
user=mhaadmin 				//mha管理用戶
password=mhaadmin 			//mha管理密碼
manager_workdir=/etc/mha_master/ 		//mha_master自己的工作路徑
manager_log=/etc/mha_master/manager.log 	// mha_master自己的日誌文件
remote_workdir=/etc/mha_master/work		//每個遠程主機的工作目錄在何處
ssh_user=root 				// 基於ssh的密鑰認證
repl_user=root				//數據庫用戶名
repl_password=root		//數據庫密碼
ping_interval=1 			//ping間隔時長
[server1] 					//節點2
hostname=172.18.0.12 	//節點2主機地址
ssh_port=22 				//節點2的ssh端口
candidate_master=1 			//將來可不可以成爲master候選節點/主節點
[server2]
hostname=172.18.0.13
ssh_port=22
candidate_master=1
[server3]
hostname=172.18.0.14
ssh_port=22
candidate_master=1

8.檢測各節點通信

 masterha_check_ssh -conf=/etc/mha_master/mha.cnf

9.檢測集羣連接配置

masterha_check_repl -conf=/etc/mha_master/mha.cnf

​ 輸出 日誌:

Mon Jun 15 05:55:47 2020 - [info] Checking replication health on 172.18.0.13..
Mon Jun 15 05:55:47 2020 - [info]  ok.
Mon Jun 15 05:55:47 2020 - [info] Checking replication health on 172.18.0.14..
Mon Jun 15 05:55:47 2020 - [info]  ok.
Mon Jun 15 05:55:47 2020 - [warning] master_ip_failover_script is not defined.
Mon Jun 15 05:55:47 2020 - [warning] shutdown_script is not defined.
Mon Jun 15 05:55:47 2020 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.
沒有錯誤提示信息代表啓動成功。

10.啓用MHA

nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log &

停止MHA命令:  masterha_stop -conf=/etc/mha_master/mha.cnf

11.查看master節點狀態

masterha_check_status -conf=/etc/mha_master/mha.cnf

輸出日誌:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
mha (pid:631) is running(0:PING_OK), master:172.18.0.12
表示MHA服務運行OK,否則, 則會顯示爲類似“mha is stopped(1:NOT_RUNNING)

5.測試主從節點切換

  • 關掉master服務器,模擬主節點崩潰。查看MHA日誌 tail -f /etc/mha_master/manager.log

在這裏插入圖片描述

表示 manager 檢測到172.18.0.12節點故障, 而後自動執行故障轉移, 將172.18.0.13提升爲主節點。

注意,故障轉移完成後, manager將會自動停止, 此時使用 masterha_check_status 命令檢測將會遇到錯誤提示, 如下所示:

在這裏插入圖片描述
13.在新的主庫中添加記錄,查看從庫同步情況

在這裏插入圖片描述
​ 從庫記錄:

在這裏插入圖片描述
​ 從庫slave狀態:
在這裏插入圖片描述

問題整理

1.安裝mysql-server報錯:
	error: Failed dependencies:
	/usr/bin/perl is needed by mysql-community-server-5.7.30-1.el7.x86_64

​ 解決方法:
​ 安裝依賴包 net-tools.x86_64,libaio.x86_64,perl.x86_64 ,numactl 。

yum -y install perl.x86_64
yum -y install libaio.x86_64
yum -y install net-tools.x86_64	
yum -y install numactl

參考網址:https://blog.csdn.net/u010886217/article/details/89416159

2.從庫啓動同步失敗報錯:The slave I/O thread stops because master and slave have equal MySQL server UUIDs;

​ 問題分析

​ 問題提示主從使用了相同的server UUID,一個個的檢查:

​ 檢查主從server_id

show variables like 'server_id';

​ 檢查主從狀態:

show master status;

​ 最後檢查發現他們的auto.cnf中的server-uuid是一樣的.因爲是從同一個msyql鏡像啓動的容器

​ 問題解決

​ 停止從庫的mysqld服務,刪除他的auto.cnf文件,再啓動數據庫服務即可:

 systemctl stop mysqld.service
 mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
 systemctl start mysqld.service

​ 再查看從庫狀態,已開啓主庫的同步。

show slave status\G;

​ 參考網址:https://blog.csdn.net/sunbocong/article/details/81634296

3.安裝MHA-manager報錯
yum -y install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
Error: Package: mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch)
           Requires: perl(Log::Dispatch)
Error: Package: mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch)
           Requires: perl(Log::Dispatch::File)
Error: Package: mha4mysql-manager-0.58-0.el7.centos.noarch (/mha4mysql-manager-0.58-0.el7.centos.noarch)
           Requires: perl(Log::Dispatch::Screen)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

解決方法:

解決:
更新epel 
  yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

此方法使用所有perl依賴包報錯。:
1、安裝
yum -y install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
yum -y install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

​ 參考網址:https://blog.csdn.net/q936889811/article/details/80077344

​ https://fedoraproject.org/wiki/EPEL

​ https://blog.csdn.net/aeolus_pu/article/details/8991652

4.從新選舉新master後,slaver的數據庫連不上新的master. 執行show slave status \G; 報錯
​	Last_IO_Error: error connecting to master '[email protected]:3306' - retry-time: 60  retries: 3

​ 解決方法:
​ 在新master上授權root用戶可以在其他ip訪問。

	grant all privileges on *.* to 'root'@'%' identified by 'root';
	privileges
5.原掉線的master重新上線後,MHA檢測報錯:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RtJxEypD-1592279018087)(img/image-20200615153219614.png)]

這句話的大概意思,有兩個成爲主,而且兩個都可寫,按照原則同一時間只能有一臺主機可以數據寫入,不然可能會造成數據不一致的災難性故障!
解決方法:

set global read_only=1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章