MySQL 多主多活 Galera 叢集部署使用

來源:互聯網
上載者:User

MySQL 多主多活 Galera 叢集部署使用

Galera是一款可以讓MySQL同步複製的工具,實現真正的雙主、多主,用戶端串連到不同的MySQL執行個體進行讀寫操作就跟操作同一個執行個體一樣,多個MySQL之間的資料是完全一致的。Galera主要是在保證資料一致性的前提下提高整體讀的輸送量,因此比MySQL內建主從方式更好。

Galera並沒有分表分庫功能,如果想要使用Galera,又想分表分庫,可與Cobar結合使用,Cobar下如果使用Galara可以獲得更高的可靠性,資料一致性,避免有些Cobar切換了主從,而另外一些沒切換帶來的資料不一致問題。

第一步:下載安裝

使用galera時,還需要一個Galera庫,官方是http://galeracluster.com/downloads/  。
Galera需要的MySQL/MariaDB版本有一個額外wsrep的補丁,因此不能直接用普通的版本。MySQL的版本可以從Galera的官網下載到,目前提供5.5和5.6兩個版本。
MariaDB的版本可以從MariaDB的官網下載到https://downloads.mariadb.org/mariadb-galera/  ,MariaDB的10.0對應MySQL的5.6。

源碼編譯galera前需要安裝的依賴庫有boost,scons,check,openssl的開發版,您可根據自己的情況安裝。galera使用scons安裝,因此跟常規的命令不同,其實只要執行一個指令碼即可。

$ scripts/build.sh

編譯後在目前的目錄下產生libgalera_smm.so檔案。

第二步:配置

Galera只需要在MySQL的設定檔my.cnf中增加幾行wsrep相關內容即可

[mysqld]
# 配置前面編譯出來的libgalera_smm.so檔案路徑
wsrep_provider  = /home/lyw/c2/galera-3-25.3.12/libgalera_smm.so
 
# 配置整個叢集各執行個體的ip:port
wsrep_cluster_address  = 'gcomm://192.168.1.8:24011,192.168.1.8:24021,192.168.1.8:24031'
 
# 配置自己的ip:port,每個配置各不相同
wsrep_node_address      = '192.168.1.8:24011'

其他配置根據自己的情況配置。我這裡配置了3個,my11.cnf,my21.cnf,my31.cnf。

第三步:初始化

初始化同MySQL一樣,對每個資料庫執行一下 mysql_install_db 指令碼即可:

$ scripts/mysql_install_db --defaults-file=etc/my11.cnf
$ scripts/mysql_install_db --defaults-file=etc/my21.cnf
$ scripts/mysql_install_db --defaults-file=etc/my31.cnf

第四步:啟動

前面配置的三台MySQL,我們先啟動第一台,需要設定 --wsrep_cluster_address=gcomm:// 參數:

$ bin/mysqld_safe --defaults-file=etc/my11.cnf --wsrep_cluster_address=gcomm:// &

等待第一台啟動成功後,我們啟動後面兩台,這個時候不需要上面的參數,實際上是使用了設定檔中的值:

$ bin/mysqld_safe --defaults-file=etc/my21.cnf  &
$ bin/mysqld_safe --defaults-file=etc/my31.cnf  &

這樣就整個叢集就啟動好了,以後如果有某進程掛了,需要重啟,就不需要加--wsrep_cluster_address參數。

第五步:測試

啟動好後我們要測試下是否真的成功。我這裡使用mysql用戶端,您可使用自己喜歡的用戶端工具,注意這裡串連的連接埠是MySQL的連接埠,而不是上面Galera的連接埠。
$ bin/mysql -uroot -h127.0.0.1 -P14011
MariaDB [(none)]> create database lyw;

$ bin/mysql -uroot -h127.0.0.1 -P14021
MariaDB [(none)]> show databases like 'lyw';
+----------------+
| Database (lyw) |
+----------------+
| lyw            |
+----------------+
1 row in set (0.00 sec)

$ bin/mysql -uroot -h127.0.0.1 -P14031
MariaDB [(none)]> show databases like 'lyw';
+----------------+
| Database (lyw) |
+----------------+
| lyw            |
+----------------+
1 row in set (0.00 sec)

可見在一個庫裡作了一個操作,在其他庫中也有了相同的修改,Galera啟動成功。
我們也可以查看wsrep相關的參數判斷是否啟動成功:

MariaDB [(none)]> show variables like 'wsrep_on';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_on      | ON    |
+---------------+-------+
 
MariaDB [(none)]> show status like 'wsrep_connected';
+-----------------+-------+
| Variable_name  | Value |
+-----------------+-------+
| wsrep_connected | ON    |
+-----------------+-------+
 
MariaDB [(none)]> show status like 'wsrep_ready';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready  | ON    |
+---------------+-------+

wsrep_on 值為ON則說明啟動成功。
wsrep_connected值為ON說明串連到了叢集。
wsrep_ready值為ON說明已經準備好接受SQL請求了。該值最關鍵。
wsrep打頭的參數都是跟galera相關的,其他的在使用中慢慢研究了。

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.