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

systemctl restart mysqld
grep password /var/log/mysqld.log ##擷取MySQL的初始密碼
mysql -uroot -p"初始密碼" ##登入mysql
修改mysql的root使用者,密碼為123456 52,53從庫的mysql,同樣操作。
2、為主庫51,從庫52,53添加server_id,并且主庫開啟binlog日志。
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' ##同步備份檔案到從庫上去
查詢備份檔案裡面的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;
狀态正常
三、階段要求,新增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日志
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%"; ##檢視半同步變量的狀态
啟動變量。51主庫和master55都要操作。
為了重新開機資料庫後,參數繼續生效,我們可以把配置寫進配置檔案。
3、master55備用主庫檢視innobackup備份檔案,擷取binlog檔案名和偏移量,指定主從配置
master51,檢視主從同步的狀态
到目前為主,1主,2從(異步同步),1備主(半同步)已經完成。
接下來做MHA高可用的搭建。
四、階段要求:為MHA叢集所有的機器,準備無密碼ssh登入。為MHA的提供MySQL賬戶,包括rpluser@“%”,root@“%”。新增一台伺服器,作為mha的管理節點。
因為換了一下地方辦公,IP有所更換。是以每台伺服器的IP都換了。
1、配置正确的hosts檔案,同步到mha的node節點和manager節點
同步給其他主機
15IP的是mha主機,沒有安裝rsync。再次同步過去就好。
2、設定所有主機ssh免詢問yes或者no的選擇。
vim /etc/ssh/ssh_config
所有主機都要處理
2、建立秘鑰,然後分發給其他主機。實作ssh全部互聯互通
分發秘鑰
3、所有節點安裝perl依賴包,時間有限,用最笨的方法
yum -y install perl-*
4、所有節點安裝mha的node節點包。manager節點,安裝mha的manager包
建立mha_manager的工作目錄
mkdir /etc/mha_manager,把模闆配置檔案複制過去
5、修改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
例如我出現這些提示,那麼我就要逐個解決
這裡要注意,打開自動切換的腳本,修改正确的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
9、驗證mha是否工作。目前查詢到是mmaster作為主庫。那麼我們停止mmaster的mysql。看看會是怎麼樣的情況
檢視mha情況
登入叢庫看看,主庫是誰
我登入的是slave2.很明顯,從庫切換到bmaster了。
那麼。我們再試試,mmaster啟動mysql。是否會自動變成slave。
很明顯,不會。
怎麼辦。按照我現在的情況。很簡單。去bmaster,備份,然後mmaster,恢複。然後設定mmaster成為備份主庫,即可。
好了。MHA高可用到此結束。