如何在Ubuntu 16.04上安裝MariaDB Galera集群

Gravatar圖像

如何在Ubuntu 16.04上安裝MariaDB Galera集群

MariaDB Galera是MariaDB的多主集群。 自MariaDB 10.1以來,已經組合了MariaDB Server和MariaDB Galera Server軟件包,並且在安裝MariaDB時會自動安裝Galera軟件包及其依賴項。 目前,MariaDB Galera Cluster僅支持InnoDB / XtraDB存儲引擎。 在MariaDB 10.0和5.5中,您需要單獨下載它。 MariaDB Galera為站點的數據庫添加了冗餘。 在MariaDB Galera Cluster中,多個數據庫服務器相互連接並保持同步。

MariaDB Galera提供了許多功能,其中一些功能如下:

  1. 同步複製。
  2. 自動節點加入。
  3. 主動 - 主動多主拓撲。
  4. 行級別上的真正並行複制。
  5. 讀寫可擴展性,較小的客戶端延遲。
  6. 節點失敗,從群集中自動丟棄。

在本教程中,我們將解釋如何使用在Ubuntu 10.1服務器上運行的3節點設置MariaDB Galera Cluster 16.04。 我們還將測試所有節點之間的數據庫複製。

要求

  • 運行Ubuntu 16.04服務器的三個節點。
  • 具有靜態IP地址1的Node192.168.0.102,具有靜態IP地址2的Node192.168.0.103和具有靜態IP地址3的Node192.168.0.104在您的服務器上配置。
  • 在所有節點上設置sudo權限的非root用戶。

輕鬆入門

首先,您需要使用最新版本更新所有節點。 您可以使用以下命令更新所有這些:

sudo apt-get update -y
sudo apt-get upgrade -y

接下來,重新啟動所有節點以應用這些更改。 然後,使用sudo用戶登錄並繼續下一步。

安裝MariaDB Galera

MariaDB Server和MariaDB Galera Server軟件包組合在MariaDB 10.1版本中。 默認情況下,MariaDB 10.1在默認的Ubuntu存儲庫中不可用,因此您需要在所有節點上添加MariaDB存儲庫。

首先,使用以下命令添加MariaDB存儲庫密鑰:

sudo apt-key adv -recv-keys -keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

接下來,添加存儲庫並使用以下命令更新APT緩存:

sudo add-apt-repository'deb [arch = amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update -y

更新存儲庫後,使用以下命令安裝MariaDB:

sudo apt-get install mariadb-server rsync -y

上面的命令將使用Galera和幾個依賴項安裝MariaDB。 Galera部件在配置之前保持休眠狀態,如插件或存儲引擎。 在所有節點上安裝MariaDB後,您可以繼續保護MariaDB。

默認情況下,MariaDB安裝不安全,因此您需要保護MariaDB安裝。 您可以通過運行mysql_secure_installation腳本來執行此操作:

sudo mysql_secure_installation

在此過程中,將要求您設置root密碼,刪除匿名用戶,遠程禁止root登錄並刪除測試數據庫。 回答所有問題,如下所示:

輸入root的當前密碼(輸入none):更改root密碼? [是/否] n刪除匿名用戶? [是/否]是否遠程禁止root登錄? [是/否]是刪除測試數據庫並訪問它? [是/否] Y現在重新加載特權表? [是/否] Y.

一旦MariaDB在所有節點上受到保護,您就可以繼續下一步。

在Node1上設置MariaDB群集

首先,轉到Node1並為Galera創建配置文件。 默認情況下,MariaDB從/etc/mysql/conf.d/目錄中讀取配置。 為此,請運行以下命令:

sudo nano /etc/mysql/conf.d/galera.cnf

添加以下行:

[mysqld] binlog_format = ROW default-storage-engine = innodb innodb_autoinc_lock_mode = 2綁定地址= 0.0.0.0#Galera提供程序配置wsrep_on = ON wsrep_provider = / usr / lib / galera / libgalera_smm.so#Galera群集配置wsrep_cluster_name =“ galera_caddress =“ gcomm:// 192.168.0.102,192.168.0.103,192.168.0.104”#Galera同步配置wsrep_sst_method = rsync#Galera節點配置wsrep_node_address =“ 192.168.0.102” wsrep_node_name =“ Node1”

完成後保存文件。

備註: 192.168.0.102是Node1的IP地址

在Galera Cluster上添加Node2

接下來,轉到Node2並為Galera創建配置文件:

sudo nano /etc/mysql/conf.d/galera.cnf

添加以下行:

[mysqld] binlog_format = ROW default-storage-engine = innodb innodb_autoinc_lock_mode = 2綁定地址= 0.0.0.0#Galera提供程序配置wsrep_on = ON wsrep_provider = / usr / lib / galera / libgalera_smm.so#Galera群集配置wsrep_cluster_name =“ galera_caddress =“ gcomm:// 192.168.0.102,192.168.0.103,192.168.0.104”#Galera同步配置wsrep_sst_method = rsync#Galera節點配置wsrep_node_address =“ 192.168.0.103” wsrep_node_name =“ Node2”

完成後保存文件。

備註: 192.168.0.103是Node2的IP地址。

在Galera Cluster上添加Node3

接下來,轉到Node3並為Galera創建配置文件:

sudo nano /etc/mysql/conf.d/galera.cnf

添加以下行:

[mysqld] binlog_format = ROW default-storage-engine = innodb innodb_autoinc_lock_mode = 2綁定地址= 0.0.0.0#Galera提供程序配置wsrep_on = ON wsrep_provider = / usr / lib / galera / libgalera_smm.so#Galera群集配置wsrep_cluster_name =“ galera_caddress =“ gcomm:// 192.168.0.102,192.168.0.103,192.168.0.104”#Galera同步配置wsrep_sst_method = rsync#Galera節點配置wsrep_node_address =“ 192.168.0.104” wsrep_node_name =“ Node3”

完成後保存文件。

備註: 192.168.0.104是Node3的IP地址。

配置防火牆

Galera Cluster使用四個端口3306用於MySQL客戶端連接,4444用於狀態快照傳輸,4567用於Galera群集複製流量,4568用於增量狀態傳輸。 因此,您需要使用UFW防火牆允許所有這些端口。 您可以通過在所有節點上運行以下命令來執行此操作:

首先,使用以下命令啟用UFW防火牆:

sudo ufw啟用

接下來,使用以下命令允許所有端口:

sudo ufw允許3306 / tcp
sudo ufw允許4444 / tcp
sudo ufw允許4567 / tcp
sudo ufw允許4568 / tcp
sudo ufw允許4567 / udp

然後,您可以使用以下命令檢查防火牆的狀態:

sudo ufw狀態

在所有節點上配置UFW防火牆後,即可繼續執行下一步。

啟動MariaDB Galera Cluster

成功配置所有節點後,轉到Node1並啟動Galera Cluster。

在Galera啟動之前,您需要確保在所有節點上停止MariaDB服務。

在所有節點上運行以下命令:

sudo systemctl停止mysql

現在,使用以下命令在Node1上啟動Galera Cluster:

sudo galera_new_cluster

現在,使用以下命令檢查群集是否正在運行:

mysql -u root -p -e“show status like'wsrep_cluster_size'”

如果一切正常,您應該看到以下輸出:

+ -------------------- + ------- + | 變量名| 價值| + -------------------- + ------- + | wsrep_cluster_size | 1 | + -------------------- + --------- +

在Node2上,啟動MariaDB服務:

sudo systemctl啟動mysql

您可以使用以下命令檢查MariaDB服務的狀態是否正常:

sudo systemctl status mysql

如果一切正常,您應該看到以下輸出:

?? mariadb.service-MariaDB數據庫服務器已加載:已加載(/lib/systemd/system/mariadb.service;已啟用;供應商預設:已啟用)活動:自Sun 2017-09-17 10:11:20 EDT起活動(運行); 10分鐘前進程:715 ExecStartPost = / bin / sh -c systemctl unset-environment _WSREP_START_POSITION(代碼=已退出,狀態= 0 /成功)進程:713 ExecStartPost = / etc / mysql / debian-start(代碼=已退出,狀態= 0) / SUCCESS)處理:545 ExecStartPre = / bin / sh -c [! -e / usr / bin / galera_recovery] && VAR = || VAR =`/ usr / bin / galera_recovery`; [$? -eq 0] && systemctl set進程:535 ExecStartPre = / bin / sh -c systemctl unset-environment _WSREP_START_POSITION(代碼已退出,狀態= 0 / SUCCESS)進程:514 ExecStartPre = / usr / bin / install -m 755 -o mysql -g root -d / var / run / mysqld(代碼=已退出,狀態= 0 /成功)主PID:661(mysqld)狀態:“立即接受SQL請求...”任務:26(限制:4915) CGroup:/system.slice/mariadb.service ?????? 661 / usr / sbin / mysqld Sep 17 10:11:11 debian systemd [1]:正在啟動MariaDB數據庫服務器... Sep 17 10:11:15 debian mysqld [661]:2017-09-17 10:11:15 140287134630464 [注] / usr / sbin / mysqld(mysqld 10.1.26-MariaDB-0 + deb9u1)作為進程Sep 17 10:11:20 debian systemd [1]:啟動了MariaDB數據庫服務器。

現在,您的第二個節點應該自動鏈接到群集。 您可以使用以下命令驗證:

mysql -u root -p -e“show status like'wsrep_cluster_size'”

如果一切正常,則群集大小應設置為2:

+ -------------------- + ------- + | 變量名| 價值| + -------------------- + ------- + | wsrep_cluster_size | 2 | + -------------------- + --------- +

在Node3上,啟動MariaDB服務:

sudo systemctl啟動mysql
mysql -u root -p -e“show status like'wsrep_cluster_size'”

如果一切正常,則群集大小應設置為三:

+ -------------------- + ------- + | 變量名| 價值| + -------------------- + ------- + | wsrep_cluster_size | 3 | + -------------------- + --------- +

您的群集現在正在工作並相互通信。

測試數據庫複製

現在,所有節點都在線,是時候測試跨Galera集群的數據庫複製了。 讓我們首先在Node1上創建一個數據庫,並檢查它是否在所有節點上進行複制。

首先,使用以下命令登錄MariaDb控制台:

mysql -u root -p

輸入您的root密碼並創建名為test_db的數據庫:

MariaDB [(無)]>創建數據庫test_db;
MariaDB [(無)]>顯示數據庫;

+ -------------------- + | 數據庫| + -------------------- + | test_db | + -------------------- +

現在轉到Node2和Node3,然後檢查復制是否正常:

mysql -u root -p
MariaDB [(無)]>顯示數據庫;

+ -------------------- + | 數據庫| + -------------------- + | test_db | + -------------------- +

恭喜! 您已在Ubuntu 16.04服務器上成功安裝並配置了MariaDB Galera Cluster。

結論

我希望您現在有足夠的知識在Ubuntu 16.04上安裝和配置MariaDB Galera Cluster。 您現在可以輕鬆擴展到幾個甚至幾十個不同的節點。 如果您有任何疑問或更多疑問,請參閱鏈接 Galera Cluster Doc

資源