192.168.1.11
、192.168.1.12
、192.168.1.13
);sudo
權限的非root用戶;在所有節點執行以下命令,更新系統并安裝必要的工具包:
sudo apt update && sudo apt upgrade -y
sudo apt install -y dirmngr software-properties-common rsync
以Debian 12為例,添加MariaDB 10.11的官方存儲庫(其他版本需調整URL):
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.11/debian bookworm main'
sudo apt update
MariaDB 10.1及以上版本已將Galera集成到mariadb-server
包中,直接安裝即可:
sudo apt install -y mariadb-server galera-4
安裝過程中會提示設置root密碼(若未提示,后續通過mysql_secure_installation
設置)。
在第一個節點(如192.168.1.11
)上,創建Galera配置文件/etc/mysql/conf.d/galera.cnf
,添加以下內容(替換為實際IP):
[mysqld]
# 基礎配置
bind-address = 0.0.0.0 # 允許遠程連接
default-storage-engine = InnoDB
innodb_autoinc_lock_mode = 2
binlog_format = ROW
# Galera集群配置
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "my_galera_cluster" # 集群名稱(所有節點一致)
wsrep_cluster_address = "gcomm://192.168.1.11,192.168.1.12,192.168.1.13" # 所有節點IP列表
wsrep_node_address = 192.168.1.11 # 當前節點IP
wsrep_node_name = "node1" # 當前節點名稱(可選,用于標識)
wsrep_sst_method = rsync # 狀態同步方法(可選:rsync/xtrabackup/mariabackup)
在其他節點(如192.168.1.12
、192.168.1.13
)上,修改galera.cnf
中的以下參數(保持其他配置一致):
wsrep_node_address = 192.168.1.12 # 替換為當前節點IP
wsrep_node_name = "node2" # 替換為當前節點名稱
注意:所有節點的wsrep_cluster_name
必須完全一致,wsrep_cluster_address
需包含所有節點IP。
在第一個節點上,使用--wsrep-new-cluster
參數啟動MariaDB,初始化集群:
sudo systemctl stop mariadb # 確保服務已停止
sudo mysqld_safe --wsrep-new-cluster --wsrep-cluster-address="gcomm://192.168.1.11" &
或使用systemd命令(部分版本支持):
sudo systemctl start mariadb --wsrep-new-cluster
在其他節點上,直接啟動MariaDB服務,自動加入集群:
sudo systemctl start mariadb
在任意節點上登錄MariaDB,執行以下命令檢查集群狀態:
mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
若輸出結果中的Value
等于節點數量(如3),則表示集群搭建成功。
初始化數據庫安全設置,刪除匿名用戶、禁止遠程root登錄等:
sudo mysql_secure_installation
按照提示設置root密碼、移除匿名用戶、禁止root遠程登錄、刪除test數據庫。
若需遠程訪問,修改/etc/mysql/mariadb.conf.d/50-server.cnf
,注釋bind-address
:
#bind-address = 127.0.0.1
然后授權遠程用戶:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
放通MariaDB與Galera所需端口:
sudo ufw allow 3306/tcp # MariaDB客戶端連接
sudo ufw allow 4444/tcp # 狀態快照轉移
sudo ufw allow 4567/tcp # Galera復制流量
sudo ufw allow 4568/tcp # 增量狀態轉移
sudo ufw reload
在任意節點上創建數據庫并插入數據:
CREATE DATABASE test_cluster;
USE test_cluster;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
在其他節點上查詢數據,確認同步成功:
USE test_cluster;
SELECT * FROM users;
若能查詢到Alice
和Bob
的記錄,則表示集群數據同步正常。
default-storage-engine=InnoDB
;mysqldump
或mariabackup
工具。