MariaDB在Linux上的高可用性保障方案
Galera Cluster是MariaDB原生支持的多主同步复制解决方案,核心特点是数据强一致性(所有节点数据实时同步)、多主写入(任意节点均可处理读写请求)和自动故障转移(节点宕机后,剩余节点仍能提供服务)。
/etc/mysql/conf.d/galera.cnf)中添加以下核心参数:
wsrep_provider:指定Galera插件路径(如/usr/lib/galera/libgalera_smm.so);wsrep_cluster_address:列出所有节点IP(如gcomm://node1_ip,node2_ip,node3_ip);wsrep_node_address:当前节点IP;wsrep_node_name:当前节点名称(如node1);wsrep_sst_method:数据同步方法(推荐xtrabackup-v2,支持热备份)。galera_new_cluster命令),后续节点通过修改wsrep_cluster_address(指向所有节点IP)并重启服务加入集群。innodb_buffer_pool_size等参数。主从复制是MariaDB经典的高可用方案,通过异步复制实现主库(Master)与从库(Slave)的数据同步,核心价值是读扩展(从库处理读请求,减轻主库压力)和故障恢复(主库宕机后,可将从库提升为主库)。
my.cnf(如/etc/mysql/my.cnf),开启二进制日志(log_bin=mysql-bin)、设置唯一server-id(如server-id=1)、调整自增参数(auto_increment_increment=2、auto_increment_offset=1);重启服务后,创建复制用户(CREATE USER 'replicator'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';)并记录二进制日志位置(SHOW MASTER STATUS;)。my.cnf(设置唯一server-id如server-id=2、开启中继日志relay_log=mysql-relay-bin、设置read_only=1);重启服务后,执行CHANGE MASTER TO命令(指定主库IP、复制用户、二进制日志文件及位置),最后启动复制(START SLAVE;)。SHOW SLAVE STATUS\G监控Seconds_Behind_Master参数(值为0表示无延迟)。结合第三方工具可实现负载均衡和自动故障转移,进一步提升高可用性:
keepalived和ipvsadm,编辑keepalived.conf(设置virtual_router_id、priority、virtual_ipaddress),通过ipvsadm配置LVS规则(如ipvsadm -A -t VIP:3306 -s rr -a Node1_IP:3306 -m -a Node2_IP:3306 -m)。proxysql,编辑proxysql.cnf(定义mysql_servers(主从节点列表)、mysql_query_rules(读写分离规则)、mysql_users(认证信息)),重启服务后通过mysql -u admin -p -h 127.0.0.1 -P 6032管理ProxySQL。MHA是专门针对MariaDB/MySQL设计的高可用管理工具,核心功能是自动故障检测(通过心跳机制监控主库状态)、自动故障转移(从库中选举新的主库)和数据一致性保障(故障转移前同步最新数据)。
masterha_default.cnf(设置主库IP、节点列表、SSH免密认证)和app1.cnf(指定集群名称、主库IP、节点IP);启动MHA Manager(masterha_manager --conf=/etc/masterha/app1.cnf),通过masterha_check_status --conf=/etc/masterha/app1.cnf查看集群状态。高可用性不仅依赖复制和集群,还需定期备份和实时监控:
mysqldump(逻辑备份,适合小数据量)或xtrabackup(物理备份,适合大数据量)定期备份数据库,建议采用增量备份+全量备份策略(如每周全量备份,每天增量备份),并将备份文件存储至异地(如云存储)。Prometheus+Granafa监控MariaDB关键指标(如CPU使用率、内存占用、磁盘I/O、复制延迟、连接数),设置告警阈值(如复制延迟超过1分钟、磁盘空间剩余10%),及时通知运维人员处理。