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工具。