MHA

MHA:Master High Availability 主節點高可用

一、基本介紹

場景: 一主多從複製架構中,主服務器宕機,自動在從服務器中選擇一個與主服務器複製數據最接近的提升爲主;

實現軟件工具MHA:
對主節點進行監控,可實現自動故障轉移至其它從節點;通過提升某一從節點爲新的主節點,基於主從複製實現,還需要客戶端配合實現,目前MHA主要支持一主多從的架構,要搭建MHA,要求一個複製集羣中必須最少有三臺數據庫服務器

項目官網:
https://code.google.com/archive/p/mysql-master-ha/

集羣架構
在這裏插入圖片描述

二、搭建配置:

Manager 管理節點

1.安裝manger節點和node節點

[root@manager ~]#ll /data/
-rw-r--r-- 1 root root 87119 Nov 10  2017 mha4mysql-manager-0.56-0.el6.noarch.rpm
-rw-r--r-- 1 root root 36326 Nov 10  2017 mha4mysql-node-0.56-0.el6.noarch.rpm

[root@manager data]#yum install mha*.rpm

2.配置基於Key的SSHkey相互訪問

[root@manager data]#ssh-keygen
[root@manager ~]#ls -a .ssh/
.  ..  id_rsa  id_rsa.pub
[root@manager ~]#ssh-copy-id 192.168.37.100
[root@manager ~]#ls  .ssh/
authorized_keys  id_rsa  id_rsa.pub  known_hosts

[root@manager ~]#scp -r .ssh/ 192.168.37.102:/root
[root@manager ~]#scp -r .ssh/ 192.168.37.103:/root
[root@manager ~]#scp -r .ssh/ 192.168.37.20:/root

3.配置MHA配置文件:配置文件位置可隨便指定

[root@manager ~]#mkdir /data/mha
[root@manager ~]#vim /data/mha/app1.cnf
[server default]
user=mhauser
password=centos
manager_workdir=/data/mastermha/app1
manager_log=/data/mastermha/app1/manager.log
remote_workdir=/data/mastermha/app1/
ssh_user=root
repl_user=replslave
repl_password=123456
ping_interval=1

[server1]
hostname=192.168.37.102
candidate_master=1

[server2]
hostname=192.168.37.103
candidate_master=1

[server3]                                                                                                                                                                  
hostname=192.168.37.20

[root@manager ~]#masterha_check_ssh --conf=/data/mha/app1.cnf
Wed Jul 17 10:45:33 2019 - [info] All SSH connection tests passed successfully.

[root@manager ~]#masterha_check_repl --conf=/data/mha/app1.cnf
MySQL Replication Health is OK.

4.開啓MHA監控服務

#應通過如screen放入後臺執行,防止因遠程連接窗口關閉導致進程關閉!
[root@manager ~]#masterha_manager --conf=/data/mha/app1.cnf

Master 主節點

1.啓用主從複製功能,修改my.cnf

[root@master data]#vim /etc/my.cnf
[mysqld]
server-id=102
log-bin
skip_name_resolve=1

2.登錄數據庫,創建複製用戶以及管理節點管理賬戶

MariaDB [(none)]> show master logs;
+-------------------+-----------+
| Log_name          | File_size |
+-------------------+-----------+
| master-bin.000001 |       329 |
+-------------------+-----------+

MariaDB [(none)]> grant replication slave on *.* to replslave@'192.168.37.%' identified by '123456';
MariaDB [(none)]> grant all on *.* to mhauser@'192.168.37.%' identified by 'centos';

3.安裝mha的node節點

[root@master data]#yum install mha*.rpm

Slave1 從節點

1.啓用主從複製功能,修改my.cnf

[root@slave1 ~]#vim /etc/my.cnf

[mysqld]
server-id=103
log-bin
read-only
relay_log_purge=0
skip_name_resolve=1

[root@slave1 ~]#systemctl restart mariadb

2.登錄數據庫,指定master主節點,並啓動服務

MariaDB [(none)]> change master to master_host='192.168.37.102',master_user='replslave',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=329;

MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G

3.安裝mha的node節點

[root@master data]#yum install mha*.rpm

Slave2 從節點

1.啓用主從複製功能,修改my.cnf

[root@slave2 ~]#vim /etc/my.cnf

[mysqld]
server-id=20
log-bin
read-only
relay_log_purge=0
skip_name_resolve=1 

[root@slave1 ~]#systemctl restart mariadb

2.登錄數據庫,指定master主節點,並啓動服務

MariaDB [(none)]> change master to master_host='192.168.37.102',master_user='replslave',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=329;

MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G

3.安裝mha的node節點

[root@master data]#yum install mha*.rpm

測試:

(一)測試原master服務宕機,MHA提升新主節點過程
1.開啓manager管理節點日誌跟蹤,持續查看

[root@manager ~]#tail -f /data/mastermha/app1/manager.log 

檢測到原主已經宕機:
在這裏插入圖片描述
新主已經啓動:
在這裏插入圖片描述

2.master主服務器寫入數據

MariaDB [none] use test
create table testlog (id int auto_increment primary key,name char(10),age int default 20);

delimiter $$

create procedure  sp_testlog() 
begin  
declare i int;
set i = 1; 
while i <= 100000 
do  insert into testlog(name,age) values (concat('wang',i),i); 
set i = i +1; 
end while; 
end$$

delimiter ;

MariaDB [test]> call sp_testlog;

3.主服務器寫入數據過程中,停掉主服務器的數據庫服務

[root@master ~]#systemctl stop mariadb

4.查看manager管理節點監控進程
前臺進程已經關閉
在這裏插入圖片描述

(二)測試提升新主前後,數據庫複製情況
1.查看主節點二進制日誌

[root@master ~]#mysqlbinlog /var/lib/mysql/master-bin.000001 -vvv

在這裏插入圖片描述
2.查看新主和從節點數據庫數據複製狀態
新主(Slave1)狀態
在這裏插入圖片描述
在這裏插入圖片描述
從(Slave)狀態:
在這裏插入圖片描述

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