Mysql雙主雙從高可用集群的搭建且與MyCat進行整合


1.概述

老話說的好:瞻前顧后、患得患失只會讓我們失敗,下定決心,干就完了。

 

言歸正傳,之前我們聊了Mysql的一主一從讀寫分離集群的搭建,雖然一主一從或一主多從集群解決了並發讀的問題,但由於主節點只有一台,如果主節點宕機了,則數據庫的寫操作便無法完成,從而無法做到高可用。

因此,今天我們來聊一下Mysql雙主雙從的集群搭建,雙主雙從的原理很簡單,相當於有兩個一主一從,然后兩個主節點再互為主從,互相復制數據,然后借助MyCat的機制,先把一台主作為寫庫,另一台主和兩台從作為讀庫,當作為寫庫的主宕機后,另一台主則作為寫庫提供服務,從而實現高可用。如下圖所示:

2. 場景介紹 

服務器A IP:192.168.1.22  (Mysql從1)(MyCat)

服務器B IP:192.168.1.12  (Mysql主1)

服務器C IP:192.168.1.15  (Mysql主2)

服務器D IP:192.168.1.16  (Mysql從2)

 

所有服務器都已安裝了Mysql,且初始化完成,關於Mysql在CentOS7的安裝,可參見我的另一篇文章《MyCat的快速搭建》(https://www.cnblogs.com/w84422/p/15394662.html)。

服務器B作為 主1,服務器A 作為 服務器B 的 從。

服務器C作為 主2,服務器D 作為 服務器C 的 從。

服務器B 和 服務器C 互為主從。

MyCat 已安裝在服務器A上。MyCat的安裝也可參見我的另一篇文章《MyCat的快速搭建》。

 

3. Mysql 雙主雙從集群的搭建

3.1 服務器B(主1)與服務器A(從1)的主從搭建

具體的搭建步驟已在上一篇文章詳細介紹,這里就不再重復了,可參見我的上一篇文章《Mysql讀寫分離集群的搭建且與MyCat進行整合》(https://www.cnblogs.com/w84422/p/15401259.html)。

 

3.2 配置服務器C(主2)做為 服務器B(主1)的從

3.2.1 傳輸服務器B(主1)的數據到 服務器C(主2)

# scp dbdump.db root@192.168.1.15:/home

注:上一篇文章《Mysql讀寫分離集群的搭建且與MyCat進行整合》中已介紹了如何備份服務器B的數據,請參見此文章。 

 

3.2.2 在 服務器C(主2)還原 服務器B(主1)的 mysql 數據

# cd /home

# mysql < dbdump.db -uroot -p

 

3.2.3 修改 服務器C(主2)配置文件

# vim /etc/my.cnf

 

3.2.4 重啟服務器C(主2)的 Mysql 服務

# systemctl restart mysqld

 

3.2.5 在 服務器C(主2)上設置主從同步配置

# mysql -u root -p

mysql> change master to
master_host='192.168.1.12',
master_user='repl',
master_password='Zhuifengren@123456',
master_log_file='zhuifengren_log.000001',
master_log_pos=1432;

 

mysql> start slave;

 

3.3 配置服務器B(主1)做為 服務器C(主2)的從

接下來,反過來,讓主1也成為主2的從,做到互為主從

3.3.1 在 服務器C(主2)上創建同步賬號並授權

# mysql -u root -p

mysql> create user 'repl'@'%' identified by 'Zhuifengren@123456';

mysql> grant replication slave on *.* to 'repl'@'%';

mysql> flush privileges;

 

3.3.2 在 服務器C(主2)上找到 log-bin 的位置

# mysql -u root -p

mysql> show master status;

 

 

3.3.3 在 服務器B(主1)上設置主從同步配置

# mysql -u root -p

mysql> change master to
master_host='192.168.1.15',
master_user='repl',
master_password='Zhuifengren@123456',
master_log_file='zhuifengren_log.000001',
master_log_pos=7300;

 

mysql> start slave;

 

3.4 服務器C(主2)與服務器D(從2)的主從搭建

具體的搭建步驟與 3.1 類似,就不再重復介紹了,可參見我的上一篇文章《Mysql讀寫分離集群的搭建且與MyCat進行整合》(https://www.cnblogs.com/w84422/p/15401259.html)。

 

3.5 測試數據同步 

分部在 服務器B(主1) 和 服務器C(主2) 做數據的增、刪、改操作,查看是否所有的服務器數據都跟着同步。

 

4. MyCat配置

4.1 在之前的基礎上修改MyCat配置

# cd /home/mycat/conf

# vim schema.xml

 

 

dataHost 標簽中 balance 屬性的含義如下:(摘抄自 MyCat 官網的權威指南)

balance 屬性 負載均衡類型,目前的取值有 4 種:

1. balance="0", 不開啟讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上。

2. balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。

3. balance="2",所有讀操作都隨機的在 writeHost、readhost 上分發。

4. balance="3",所有讀請求隨機的分發到 wiriterHost 對應的 readhost 執行,writerHost 不負擔讀壓力, 注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有。

 

4.2 重啟MyCat

# cd /home/mycat/bin

# ./mycat stop

# ./mycat start

 

4.3 測試高可用

在集群正常的情況下,使用MyCat進行讀寫操作。

將服務器B(主1)的Mysql服務停止,使用MyCat進行讀寫操作,看是否正常。

 

5. 綜述

今天聊了一下 Mysql雙主雙從高可用集群的搭建,以及 MyCat 如何整合 Mysql 雙主雙從集群,希望可以對大家的工作有所幫助。

歡迎幫忙點贊、評論、轉發、加關注 :)

關注追風人聊Java,每天更新Java干貨。

 

6. 個人公眾號

追風人聊Java,歡迎大家關注

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM