MariaDB 物理热备
MariaDB 官方的物理备份工具:支持全量与增量备份、可选加密与压缩,备份期间无需长时间锁表,流程与 Percona XtraBackup 类似。它与 MariaDB 版本严格配套,用错版本会直接拒绝运行。恢复时需要先停止服务并清空数据目录,再把备份文件复制回去并修正属主。
基本信息
| 适用平台 | MariaDB(工具版本必须与数据库版本配套) |
|---|---|
| 名称演变 | 早期称 mariabackup,现为 mariadb-backup |
| 备份类型 | 全量、增量、可选加密与压缩 |
| 恢复流程 | prepare → 停服务 → 清空 datadir → copy-back → 修属主 → 启动 |
典型使用场景
- 大库物理备份:数据量大、逻辑备份窗口不够时使用
- 热备不停机:备份期间业务可继续读写
- 增量备份:全量后按增量备份,缩短每日窗口
- 物理级恢复:整实例恢复到某个时间点后配合 binlog 补齐
- 从库搭建:用物理备份初始化新的复制节点
备份准备与恢复
备份准备与恢复
# 全量备份
mariadb-backup --backup --target-dir=/backup/mdb/full --user=root --password=***
# 增量备份(基于上一次备份目录)
mariadb-backup --backup --target-dir=/backup/mdb/inc1 \
--incremental-basedir=/backup/mdb/full --user=root --password=***
# 准备阶段:回放日志,使备份可用于恢复
mariadb-backup --prepare --target-dir=/backup/mdb/full
# 恢复:先停服务并清空数据目录
systemctl stop mariadb && rm -rf /var/lib/mysql/*
mariadb-backup --copy-back --target-dir=/backup/mdb/full
chown -R mysql:mysql /var/lib/mysql && systemctl start mariadb步骤与风险
| 步骤 | 作用 | 风险 |
|---|---|---|
| --backup | 复制数据文件并记录位点 | 并发写入多时可能产生较多 redo 日志 |
| --prepare | 回放 redo 使数据一致 | 跳过该步会得到不可用的备份 |
| --copy-back | 把文件复制回数据目录 | datadir 非空时启动异常 |
| chown | 修正属主与权限 | 属主错误导致服务无法启动或权限报错 |
不要用 MySQL 版 XtraBackup 备份 MariaDB,反之亦然,兼容性不被官方支持。工具与数据库版本不匹配时会直接拒绝执行。
copy-back 前 datadir 必须为空:残留的旧文件会让实例启动异常,且可能把旧数据与新数据混在一起造成难以定位的问题。
增量备份的恢复是把增量逐层叠加到全量上:先对全量执行 --prepare --apply-log-only,再对每个增量目录执行 --prepare --incremental-dir=,顺序或参数写错会让增量数据被直接忽略,最终恢复出的是全量时点的数据。叠加完成后要再核对一次位点与数据量。