在Linux下搭建MariaDB集群,通常可以使用MariaDB Galera Cluster。Galera Cluster是一个多主复制解决方案,支持同步复制和自动节点加入。以下是搭建MariaDB Galera Cluster的基本步骤:
确保所有节点上都安装了MariaDB,并且版本一致。
sudo apt-get update
sudo apt-get install mariadb-server mariadb-client
在每个节点上进行以下配置:
/etc/mysql/my.cnf文件[mysqld]
# 基本配置
server-id = 1 # 每个节点的唯一ID
wsrep_cluster_address = gcomm://<node1_ip>,<node2_ip>,<node3_ip> # 集群地址
wsrep_node_name = <node_name> # 节点名称
wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera提供者路径
wsrep_sst_method = rsync # SST方法
wsrep_sst_auth = sstuser:sstpassword # SST认证信息
binlog_format = ROW # 行格式
default_storage_engine = innodb # 默认存储引擎
innodb_autoinc_lock_mode = 2 # 自增锁模式
# 性能优化
innodb_buffer_pool_size = 70% # 缓冲池大小
innodb_log_file_size = 256M # 日志文件大小
innodb_log_buffer_size = 16M # 日志缓冲区大小
innodb_flush_log_at_trx_commit = 1 # 事务提交时刷新日志
在每个节点上创建一个用于SST的用户:
CREATE USER 'sstuser'@'%' IDENTIFIED BY 'sstpassword';
GRANT ALL PRIVILEGES ON *.* TO 'sstuser'@'%';
FLUSH PRIVILEGES;
在每个节点上启动MariaDB服务:
sudo systemctl start mariadb
sudo systemctl enable mariadb
在第一个节点上,启动集群:
sudo mysql -u root -p
在MySQL shell中执行:
SHOW STATUS LIKE 'wsrep_cluster_size';
如果显示wsrep_cluster_size为0,说明集群还没有节点加入。在第一个节点上执行:
SET GLOBAL wsrep_cluster_address = gcomm://<node1_ip>,<node2_ip>,<node3_ip>;
然后重启MariaDB服务:
sudo systemctl restart mariadb
在其他节点上,启动MariaDB服务后,它们会自动加入集群。
在任意一个节点上,登录MySQL并检查集群状态:
SHOW STATUS LIKE 'wsrep_cluster_size';
如果显示的集群大小大于1,说明集群已经成功搭建。
可以使用HAProxy或Keepalived等工具来配置负载均衡和故障转移。
通过以上步骤,你可以在Linux下搭建一个基本的MariaDB Galera Cluster。根据具体需求,可能还需要进行更多的配置和优化。