Ubuntu環境下搭建MariaDB集群的常見方法
Galera Cluster是MariaDB原生支持的多主同步復制集群方案,提供高可用性、數據一致性及線性擴展能力,適用于需要強一致性的場景。
核心配置步驟:
sudo apt update && sudo apt install mariadb-server mariadb-client安裝MariaDB。/etc/mysql/conf.d/galera.cnf(或/etc/mysql/mariadb.conf.d/99-cluster.cnf)中添加以下內容(替換為實際IP):[mysqld]
bind-address = 0.0.0.0
default-storage-engine = InnoDB
innodb_autoinc_lock_mode = 2
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "galera_cluster" # 集群名稱(需一致)
wsrep_cluster_address = "gcomm://node1_ip,node2_ip,node3_ip" # 所有節點IP
wsrep_node_address = "當前節點IP" # 如192.168.1.111
wsrep_node_name = "node1" # 節點名稱(唯一標識)
wsrep_sst_method = xtrabackup-v2 # 數據同步方法(推薦xtrabackup)
wsrep_sst_auth = sst_user:your_password # SST用戶及密碼(需提前創建)
galera_new_cluster啟動集群;其他節點執行sudo systemctl restart mariadb加入集群。mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';",若wsrep_cluster_size等于節點數量,則集群搭建成功。主從復制是MariaDB經典的單主多從異步復制方案,適用于讀擴展(將讀請求分發到從節點),提升讀取性能。
核心配置步驟:
/etc/mysql/mariadb.conf.d/50-server.cnf,添加:[mysqld]
server-id = 1 # 主節點ID(唯一)
log_bin = /var/log/mysql/mysql-bin.log # 啟用二進制日志
binlog_do_db = your_database # 指定復制的數據庫(可選)
sudo systemctl restart mariadb。CREATE USER 'replicator'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;。SHOW MASTER STATUS;(記錄File和Position,如mysql-bin.000001、123)。/etc/mysql/mariadb.conf.d/50-server.cnf,添加:[mysqld]
server-id = 2 # 從節點ID(需與主節點不同)
relay_log = /var/log/mysql/mysql-relay-bin.log # 啟用中繼日志
log_bin = /var/log/mysql/mysql-bin.log
replicate_do_db = your_database # 指定復制的數據庫(可選)
sudo systemctl restart mariadb。CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replicator', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123; START SLAVE;。SHOW SLAVE STATUS\G,若Slave_IO_Running和Slave_SQL_Running均為Yes,則復制正常;在主節點插入數據,從節點可查詢到同步的數據。