在数据爆炸的时代,你的数据库还在单打独斗?别让性能瓶颈拖垮你的业务!
本文将详细介绍基于两台OEC-turbo服务器各配备480G SSD固态硬盘的MariaDB 10.6集群搭建方案。通过Galera集群技术,我们能够实现真正多主同步的数据库架构,确保服务高可用性和数据一致性,同时享受SSD带来的极致I/O性能提升。
一、环境规划与准备
1. 硬件与软件环境
硬件配置:
- 两台OEC-turbo服务器
- 每台服务器配备一块480G SSD固态硬盘
- 千兆以太网互联(建议使用双网卡绑定提升带宽和可靠性)
软件环境:
- 操作系统:OpenCloudOS 9或其他Linux发行版(如CentOS 7+、Ubuntu 16.04+)
- 数据库:MariaDB 10.6
- 集群组件:Galera Cluster
2. 网络规划
为保障集群通信,需开放以下端口:
- 3306: MariaDB数据库服务端口
- 4567: Galera集群通信端口(TCP/UDP)
- 4568: 增量状态传输(IST)端口
- 4444: 快照状态传输(SST)端口
建议为集群节点配置静态IP地址,并确保节点间网络低延迟、高带宽。
二、系统与软件安装配置
1. 系统优化与更新
首先在所有节点上执行系统更新和基础软件安装:
sudo dnf update -y # 对于OpenCloudOS/CentOS/RHEL # 或者 # sudo apt update && sudo apt upgrade -y # 对于Ubuntu/Debian sudo dnf install -y tar mariadb-server mariadb-server-galera rsync ntp ntpdate bash-completion gcc gcc-c++ socat
SSD特性优化: 针对SSD硬盘,建议在/etc/fstab中设置挂载选项,添加noatime,discard
参数以启用TRIM功能,提升SSD寿命和性能。
2. 安装MariaDB 10.6
如果默认仓库中没有MariaDB 10.6,需要添加官方仓库:
# 对于OpenCloudOS/CentOS/RHEL sudo curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.6 sudo dnf install MariaDB-server MariaDB-client galera-4
三、MariaDB集群配置
1. 核心配置文件编辑
编辑所有节点的MariaDB配置文件(通常是/etc/my.cnf.d/mariadb-server.cnf
或/etc/mysql/conf.d/galera.cnf
),添加以下集群配置:
[galera] log_bin=mysql-bin binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0 # 节点特定配置(每个节点需修改) wsrep_node_name="node1" # 节点唯一名称,如node1, node2 wsrep_node_address="192.168.0.11" # 节点IP地址 # 集群通用配置(所有节点保持一致) wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so # 路径可能因系统而异 wsrep_cluster_name="mariadb_galera_cluster" wsrep_cluster_address="gcomm://192.168.0.11,192.168.0.12" # 所有节点IP wsrep_sst_method=rsync # 对于生产环境,建议使用xtrabackup-v2 # 如果使用xtrabackup-v2,需添加以下配置 # wsrep_sst_auth="sst_user:your_secure_password" # SSD优化配置 innodb_flush_log_at_trx_commit = 2 innodb_buffer_pool_size = 总内存的70-80% # 根据服务器实际内存调整 innodb_log_file_size = 256M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT
注意: 每个节点的wsrep_node_name
和wsrep_node_address
必须唯一。
2. 创建SST用户(可选)
如果使用xtrabackup-v2作为SST方法,需要在所有节点上创建SST用户:
GRANT ALL PRIVILEGES ON *.* TO 'sst_user'@'localhost' IDENTIFIED BY 'your_secure_password'; FLUSH PRIVILEGES;
四、集群启动与验证
1. 防火墙配置
在所有节点上配置防火墙,开放必要端口:
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --permanent --add-port=4567/tcp firewall-cmd --permanent --add-port=4567/udp firewall-cmd --permanent --add-port=4568/tcp firewall-cmd --permanent --add-port=4444/tcp firewall-cmd --reload
2. 关闭SELinux
为避免权限问题,建议临时禁用SELinux或配置适当策略:
setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
3. 启动集群
在第一个节点上启动:
sudo systemctl stop mariadb sudo galera_new_cluster sudo systemctl start mariadb
在第二个节点上启动:
sudo systemctl stop mariadb sudo systemctl start mariadb
4. 验证集群状态
登录任意节点的MariaDB,执行以下命令验证集群状态:
SHOW STATUS LIKE 'wsrep_cluster_size'; -- 应返回2,表示有两个节点 SHOW STATUS LIKE 'wsrep_ready'; -- 应返回ON,表示节点就绪 SHOW STATUS LIKE 'wsrep_connected'; -- 应返回ON,表示连接正常
还可以检查集群节点的状态:
SHOW STATUS LIKE 'wsrep%';
五、性能优化与SSD特调
针对SSD硬盘和MariaDB 10.6的特性,建议以下优化:
- InnoDB缓冲池调整:
innodb_buffer_pool_size
设置为系统总内存的70-80% - I/O调度器调整:建议使用deadline或noop调度器,更适合SSD
echo 'deadline' > /sys/block/sda/queue/scheduler
- 文件系统优化:推荐使用XFS或EXT4文件系统,并启用TRIM支持
- Galera缓存调整:适当增加
wsrep_slave_threads
数量(建议为CPU核心数的2-4倍)
六、高可用与故障处理
1. 集群重启流程
完全关闭集群后重新启动时,需要选择最后一个离开集群的节点作为引导节点:
# 在选择的引导节点上执行 sudo galera_new_cluster # 在其他节点上执行 sudo systemctl start mariadb
2. 常见问题处理
- 节点加入失败:检查防火墙设置和网络连通性
- SST失败:确认SST方法配置正确,认证信息正确
- 脑裂情况:确保网络稳定,考虑使用奇数节点或仲裁器
七、数据备份与监控
1. 备份策略
尽管集群提供冗余,仍需要定期备份:
# 使用mysqldump进行逻辑备份 mysqldump -u root -p --all-databases > full_backup.sql # 使用Percona XtraBackup进行物理备份(推荐)
2. 监控指标
建议监控以下集群健康指标:
- 集群节点数量(wsrep_cluster_size)
- 节点状态(wsrep_ready, wsrep_connected)
- 流控次数(wsrep_flow_control_paused)
- 复制延迟(wsrep_local_recv_queue_avg)
结语:SSD加速的双节点MariaDB集群价值
通过两台OEC-turbo服务器各配备480G SSD搭建MariaDB 10.6 Galera集群,你获得的不仅是数据安全性和高可用性,更有SSD带来的极致I/O性能提升。这种方案特别适合中小型企业需要高性能数据库解决方案但预算有限的场景。
记住:集群不是万能的,它解决了可用性和扩展性问题,但也带来了新的复杂性。定期监控、测试和维护仍然是保证数据库健康运行的关键。
本文由万事屋创作,转载请保留出处:https://www.rei3.com
关注万事屋获取更多数据库优化与架构设计干货内容!
没有回复内容