安装与设计
LTS 版本选择、存储引擎与字符集标准、参数标准、软件包仓库管理。
MariaDB
MariaDB 源自 MySQL,如今已独立发展。我们按引擎特性运维基于 Galera Cluster 的同步复制、MaxScale 路由、mariadb-backup 备份与 LTS 版本管理。
Architecture
Galera 在提交时对写集(write-set)进行认证(certification),实现虚拟同步复制,构成所有节点数据一致的多主集群。
节点故障时,只要剩余节点保持法定人数(quorum),服务即可继续。在前端放置 MaxScale(或 ProxySQL),将写入集中到一个节点并分散读取,可减少写冲突导致的回滚。
异地灾备通常通过 Galera 集群之间的异步复制实现。
Scope
LTS 版本选择、存储引擎与字符集标准、参数标准、软件包仓库管理。
Galera Cluster、GTID 异步/半同步复制、MaxScale 故障检测与自动切换。
mariadb-backup 全量/增量备份、mariadb-dump 逻辑备份、binlog 时间点恢复。
InnoDB 缓冲池与日志、线程池、优化器设置、慢查询与索引改进。
wsrep_* 状态(流控、队列)、复制延迟、PMM 与 Grafana 仪表盘。
LTS 之间升级(如 10.6 → 10.11/11.4/11.8)、mariadb-upgrade、滚动升级。
账户与角色整理、TLS、server_audit 插件审计日志、静态数据加密。
评估版本间兼容性差异(GTID 格式、系统表、认证插件)后再切换。
Replication
| 方式 | 特点 | 适用场景 | 注意事项 |
|---|---|---|---|
| Galera Cluster | 基于认证的虚拟同步复制,多主 | RPO 最小化、节点故障容忍 | 不是写扩展手段,对广域网延迟敏感 |
| 异步/半同步复制 | MariaDB 特有 GTID(domain-server-seq) | 读扩展、灾备 | 与 MySQL GTID 格式不同,混合部署需注意 |
| MaxScale | readwritesplit 路由、监控与自动故障切换 | Galera/复制前端代理 | 使用前确认 BSL 许可条件 |
| ProxySQL | 基于规则的查询路由 | 偏好开源代理时 | 需配置 Galera 节点状态健康检查 |
Backup & PITR
# 备份
mariadb-backup --backup --target-dir=/backup/full_20261020 \
--user=bkuser --password='***'
# 准备(prepare)后恢复
mariadb-backup --prepare --target-dir=/backup/full_20261020
systemctl stop mariadb # 数据目录必须为空
mariadb-backup --copy-back --target-dir=/backup/full_20261020
chown -R mysql:mysql /var/lib/mysql && systemctl start mariadbSHOW GLOBAL STATUS WHERE Variable_name IN (
'wsrep_cluster_size', -- 集群节点数
'wsrep_cluster_status', -- 应为 Primary
'wsrep_local_state_comment', -- 应为 Synced
'wsrep_flow_control_paused', -- 因流控暂停的时间比例
'wsrep_local_recv_queue_avg' -- 接收队列平均值
);mariabackup。我们会以所用版本的文档为准确定命令。Tuning
Lifecycle
FAQ
不能。每个节点都要应用所有写入,因此它是可用性与数据保护手段,而非写扩展手段。需要写扩展时应采用分片等其他设计。
早期兼容性很高,但随着版本分化,GTID 格式、系统表、JSON 处理、认证方式等差异变大。需要制定导出/复制切换计划并做兼容性测试。
仅两个节点时,一个节点故障就会失去法定人数。建议增加 Galera Arbitrator(garbd)作为第三个投票者。
ProxySQL,或 HAProxy(配合健康检查脚本)。MaxScale 为 BSL 许可,请先确认使用条件。
告诉我们您使用的云、数据库版本、架构与困扰,我们将提出评估范围与实施方式。