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,则复制正常;在主节点插入数据,从节点可查询到同步的数据。