MHA集羣

相關概念

1)MHA

  • 由日本DeNA公司youshimaton開發
  • 優秀的實現MySQL高可用的解決方案
  • 數據庫的自動故障切換操作能做到在30s之內完成
  • MHA能確保在故障切換過程中最大限度保證數據的一致性

2)MHA組成

MHA Manager 管理節點

  • 管理所有數據庫服務器
  • 可以單獨部署在一臺獨立的機器上
  • 也可以部署在某臺數據庫服務器上

MHA Node 數據節點

  • 存儲數據的MySQL服務器
  • 運行在每臺MySQL服務器上

3)MHA工作過程

  • MHA集羣架構
    在這裏插入圖片描述
    由Manager定時探測集羣中的master節點,當master故障時,Manager自動將擁有最新數據的slave提升爲新的master

準備集羣環境

  • 配置所有數據庫服務器之間彼此ssh免密登錄
  • 配置管理主機ssh免密登錄所有數據庫服務器

本次案例:

服務器ip 服務器角色
192.168.4.51 master
192.168.4.52 slave1
192.168.4.53 slave2
192.168.4.57 MHA管理節點
192.168.4.100 virtual ip
  • 配置數據庫服務器主從半同步模式,從服務器開啓binlog日誌

所有數據庫服務器同樣操作,不論主從,因爲需要所有服務器都有能擔任主服務器的能力

master,slave1,slave2:

vim /etc/my.cnf
server_id=51   #注意id別重複
log_bin=master51   #binlog日誌名
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"    #加載半同步模塊
rpl_semi_sync_master_enabled=1    #啓用
rpl_semi_sync_slave_enabled=1    #啓用
relay_log_purge=0   #禁止自動刪除中繼日誌

systemctl restart mysqld
slave1,slave2:
mysql> change master to ...    #設置主服務器
mysql> start slave;   #啓動slave進程
mysql> show slave status;  #確認狀態

配置管理主機

  • 安裝軟件:
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
tar -xvf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
perl Makefile.pl
make
make install
  • 創建並編輯主配置文件:

模板文件:mha4mysql-manager-0.56/samples/conf/app1.cnf

mkdir /etc/mha   #創建工作目錄
cp mha4mysql-manager-0.56/sample/conf/app1.cnf /etc/mha/ #拷貝模板文件
vim /etc/mha/app1.cnf   #編輯主配置文件
[server default]   #管理服務默認配置
manager_workdir=/etc/mha    #工作目錄
manager_log=/etc/mha/manager.log   #日誌文件
master_ip_failover_script=/etc/mha/master_ip_failover   #故障切換腳本

ssh_user=root   #訪問ssh服務用戶
ssh_port=22   #ssh服務端口

repl_user=repluser   #數據同步授權用戶
repl_password=123qqq...A  #密碼

user=root   #監控用戶
password=123qqq...A   #密碼

[server1]   #指定數據庫服務器
hostname=192.168.4.51    #ip
candidate_master=1   #競選主服務器
port=3306   #端口

[server2]   #第二臺
hostname=192.168.4.52
candidate_master=1
port=3306

[server3]   #第三臺
hostname=192.168.4.53
candidate_master=1
port=3306
  • 部署故障切換腳本:

有服務器故障時,該腳本會自動將VIP移動到新的master服務器

cp mha-soft-student/master_ip_failover /etc/mha/
vim /etc/mha/master_ip_failover   #手動添加四行
my $vip = '192.168.4.100/24';  # Virtual IP  #定義VIP地址
my $key = "1"; #定義變量$key
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; #部署vip地址命令
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; #釋放vip地址命令
  • master服務器部署VIP:
[root@master] ifconfig eth0:1 192.168.4.100

配置數據庫服務器(數據節點)

  • 在所有數據庫服務器上安裝mha_node
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
  • 在所有數據庫服務器上授權用戶
master:
mysql> grant all on *.* to root@'%' identified by '123qqq...A';  
#授權監控用戶,從服務器會自動同步授權
slave1,salve2:
grant replication slave on *.* to repluser@'%' identified by '123qqq...A';  
#因爲從服務器成爲主服務器時,需要有此用戶

啓動管理服務

  • 相關命令:安裝目錄/bin/
命令 作用
masterha_check_ssh 檢查MHA的ssh配置狀況
masterha_check_repl 檢查MySQL複製狀況
masterha_manager 啓動MHA
masterha_check_status 檢測MHA運行狀態
masterha_stop 停止MHA

1)測試配置

[root@mha] masterha_check_ssh --conf=/etc/mha/app1.cnf  #測試ssh配置
Sat Jan 11 16:06:40 2020 - [info] All SSH connection tests passed successfully.   #配置正常的輸出信息
[root@mha] masterha_check_repl --conf=/etc/mha/app1.cnf   #測試主從
MySQL Replication Health is OK.  #配置正常的輸出信息

2)啓動

[root@mha] masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  
#選項1:指定配置文件
#選項2:主庫宕機時從配置文件中刪除它的配置
#選項3:忽略xxx.health文件,作用爲不記錄上次故障切換
#啓動該服務會佔用終端,主服務器宕機該進程會停止
[root@mha] masterha_check_status --conf=/etc/mha/app1.cnf   #查看服務狀態
app1 (pid:2803) is running(0:PING_OK), master:192.168.4.51   #正常運行的輸出信息

向集羣添加新的數據庫服務器(修復故障)

  • 啓動mysql服務
  • 確保與主服務器數據一致
  • 指定主服務器信息
  • 啓動slave進程
  • 查看狀態信息
  • MHAmanager配置文件寫入該服務器
  • masterha_check_repl
發佈了103 篇原創文章 · 獲贊 7 · 訪問量 6001
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章