天天看點

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

Linux版本:Centos7.4

Mysql版本:Mysql-5.7.17

MHA

一、環境準備。IP位址段為172.17.2.0/24,5台Mysql伺服器,規劃為master-51為主庫,master-52為半同步主庫,master-53為半同步主庫,slave-54為從庫,slave-55為從庫。mgm-56為MHA管理節點。

二、階段要求結果,實作1主2從結構,51為主庫,52,53為從庫,實作異步同步。

1、安裝MySQL,修改資料庫root密碼為123456(為了實驗,添加密碼政策和長度的參數)

systemctl restart mysqld             #啟動MySQL,初始化MySQL

systemctl stop mysqld

vim /etc/my.cnf

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

systemctl restart mysqld

grep password /var/log/mysqld.log       ##擷取MySQL的初始密碼

mysql -uroot -p"初始密碼"                       ##登入mysql

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

修改mysql的root使用者,密碼為123456         52,53從庫的mysql,同樣操作。

2、為主庫51,從庫52,53添加server_id,并且主庫開啟binlog日志。

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

systemctl restart mysqld

3、主庫進入MySQL。

reset master;

grant replication slave,replication client on *.* to slave"%" identified by "111111";  #添加同步使用者

為了模拟生産環境庫不停用的情況。使用線上熱備工具備份主庫

innobackup --slave-info --user='root' --password='123456' --no-timestamp /backup

rsync -aSH --delete /backup/ 172.17.2.52:/backup/ -e 'ssh'          ##同步備份檔案到從庫上去

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

查詢備份檔案裡面的binlog日志檔案名,偏移量

從庫52:

cd /var/lib/mysql

rm -rf *                               ##删除從庫的MySQL根目錄

innobackup --apply-log /backup               ##合并備份檔案的日志

innobackup --copy-back /backup             ##恢複備份檔案

chown -R mysql.mysql /var/lib/mysql        ##設定MySQL根目錄的屬主和屬組

systemctl restart mysqld

mysql -uroot -p123456

reset slave;

change master to maste_user='slave',master_password='111111',master_host='172.17.2.51',master_log_file='master51.000001',master_log_pos=463;                                                          ##設定主從資訊。這裡請注意。有時候innobackup備份的偏移量,是不準确的。

start slave;                                               ##開啟從同步

show slave status \G                                  ##檢視從資訊

53從庫同步。步驟一樣。為了模拟生産環境,備份檔案要從新實時備份再傳給53

查詢一主二從的狀态:

mysql>show full processlist;

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

狀态正常

三、階段要求,新增1台伺服器master55,ip是55,作為51主庫的半同步伺服器。

1、備份51主庫,然後同步給master55,恢複備份

innobackupex --shalve-info --user='root' --password='123456' --no-timestamp /backup

rsync -aSH --delete /backup/ 172.17.2.55:/backup/

55機器:

cd /var/lib/mysql

rm -rf *

innobackupex --apply-log /backup/

innobackupex --copy-back /backup/

chown -R mysql.mysql /var/lib/mysql

master55的mysql配置檔案開啟binlog日志

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

systemctl restart mysqld

2、51主庫,55備用主庫,安裝半同步插件的master插件和slave插件。

mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

show variables like "%rpl%";           ##檢視半同步變量的狀态

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集
模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

啟動變量。51主庫和master55都要操作。

為了重新開機資料庫後,參數繼續生效,我們可以把配置寫進配置檔案。

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

3、master55備用主庫檢視innobackup備份檔案,擷取binlog檔案名和偏移量,指定主從配置

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

master51,檢視主從同步的狀态

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

到目前為主,1主,2從(異步同步),1備主(半同步)已經完成。

接下來做MHA高可用的搭建。

四、階段要求:為MHA叢集所有的機器,準備無密碼ssh登入。為MHA的提供MySQL賬戶,包括rpluser@“%”,root@“%”。新增一台伺服器,作為mha的管理節點。

因為換了一下地方辦公,IP有所更換。是以每台伺服器的IP都換了。

1、配置正确的hosts檔案,同步到mha的node節點和manager節點

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

同步給其他主機

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

15IP的是mha主機,沒有安裝rsync。再次同步過去就好。

2、設定所有主機ssh免詢問yes或者no的選擇。

vim /etc/ssh/ssh_config

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

所有主機都要處理

2、建立秘鑰,然後分發給其他主機。實作ssh全部互聯互通

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

分發秘鑰

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

3、所有節點安裝perl依賴包,時間有限,用最笨的方法

yum -y install perl-*

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

4、所有節點安裝mha的node節點包。manager節點,安裝mha的manager包

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集
模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集
模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

建立mha_manager的工作目錄

mkdir /etc/mha_manager,把模闆配置檔案複制過去

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

5、修改mha的主配置檔案。參考網路的配置。

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

6、測試ssh的連通性

masterha_check_ssh --conf=/etc/mha_manager/app1.cnf

不能出現任何error和warining。如果出現,按照對應的提示解決。

測試repl的狀态,如果出現任何error和warining,全部需要解決。

 masterha_check_repl --conf=/etc/mha_manager/app1.cnf

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

例如我出現這些提示,那麼我就要逐個解決

這裡要注意,打開自動切換的腳本,修改正确的VIP。然後建立VIP

ifconfig eth0:1 192.168.1.10/24       ##我這裡是用10,作為VIP

7、全部解決完以後,我們開始啟動mha

/usr/local/bin/masterha_manager --conf=/etc/mha_manager/app1.cnf --ignore_last_failover

這個是完全路徑啟動腳本,指定配置檔案,忽略最後的錯誤。

8、重新開一個終端。查詢mha的狀态

masterha_chech_status --conf=/etc/mha_manager/app1.cnf

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

9、驗證mha是否工作。目前查詢到是mmaster作為主庫。那麼我們停止mmaster的mysql。看看會是怎麼樣的情況

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

檢視mha情況

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

登入叢庫看看,主庫是誰

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

我登入的是slave2.很明顯,從庫切換到bmaster了。

那麼。我們再試試,mmaster啟動mysql。是否會自動變成slave。

模拟生産環境Centos7.4+Mysql-5.7.17+MHA配置高可用叢集

很明顯,不會。

怎麼辦。按照我現在的情況。很簡單。去bmaster,備份,然後mmaster,恢複。然後設定mmaster成為備份主庫,即可。

好了。MHA高可用到此結束。

繼續閱讀