首页/数据/数据库速查/mariadb-backup(MariaDB 物理备份)
备份与恢复56 条

mariadb-backup(MariaDB 物理备份)

MariaDB 对应的物理热备工具:命令与 XtraBackup 同源(--backup/--prepare/--copy-back),不支持跨家族用于 MySQL。

数据库速查数据更新于 2026-10-13

MariaDB 的物理热备工具

mariadb-backup 是 MariaDB 官方的物理热备工具,与 Percona XtraBackup 同源(早期为 xtrabackup 分支),保留备份、准备、回写三段式流程。它在备份期间复制数据文件与 redo 日志,因此可以不长时间阻塞写入。它只服务 MariaDB,备份产物与 MySQL 不通用。

基本信息

适用平台MariaDB 10.x 全系列,随发行版包提供
三段式流程--backup 备份,--prepare 应用日志,--copy-back 回写
与 PXB 关系同源分支,参数名高度相似但行为有差异
权限要求RELOAD、PROCESS、LOCK TABLES、REPLICATION CLIENT 及数据目录读权限
流式备份--stream=mbstream,可配合管道与压缩做远程备份
产物兼容不能被 MySQL 使用,反之亦然

典型使用场景

  • MariaDB 实例的大体量全量备份,要求备份期间不停机
  • 用增量备份与压缩控制备份存储成本
  • 从备份快速拉起测试实例做回归验证
  • 定期恢复演练,核对备份是否真的可用
  • 同版本迁移 MariaDB 实例到新主机

全备加增量

全备加增量
# 全备(每周)
mariadb-backup --backup --target-dir=/data/backup/full \
  --user=backup --password='占位口令'

# 增量(每日):基于全备或上一次增量
mariadb-backup --backup --target-dir=/data/backup/inc1 \
  --incremental-basedir=/data/backup/full --user=backup --password='占位口令'

# 准备:全备与中间增量加 --apply-log-only,最后一个增量不加
mariadb-backup --prepare --apply-log-only --target-dir=/data/backup/full
mariadb-backup --prepare --target-dir=/data/backup/full --incremental-dir=/data/backup/inc1

# 恢复:停库、回写到空目录、修正属主、启动
systemctl stop mariadb
mariadb-backup --copy-back --target-dir=/data/backup/full
chown -R mysql:mysql /var/lib/mysql && systemctl start mariadb

# 备份账号最小授权示例
# GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backup'@'localhost';

四个阶段要点

阶段命令要点
备份--backup --target-dir在线复制数据文件与 redo 日志
增量--backup --incremental-basedir依赖上一次备份目录作为基准
准备--prepare [--apply-log-only]应用 redo 使数据达到一致状态
回写--copy-back目标目录必须为空,之后修正属主
流式--stream=mbstream管道传给压缩或远程存储
MariaDB 与 MySQL 8 的数据字典、临时表与权限模型差异很大,备份参数的经验可以借鉴,但结论不能照搬:目录结构、恢复步骤与权限设置都以 MariaDB 官方文档为准。
跨机器备份用流式模式最省事:--stream=mbstream 把备份写到标准输出,管道交给压缩程序或直接送到远端主机,避免先在本地落盘再搬运;恢复端同样用 --extract 解包。备份用户的口令建议通过 mysql_config_editor 或配置文件的 [client] 段提供,避免出现在命令行历史与进程列表里。

易错点

  • 增量准备阶段漏掉 --apply-log-only:后续增量无法继续应用,只能重做全备
  • copy-back 前数据目录非空或属主不对:实例启动失败,需清空目录并改成运行账号
  • 把 MySQL 的 xtrabackup 经验直接套用:部分参数行为在 MariaDB 上不同,按官方文档核对
  • 把 MariaDB 备份产物恢复到 MySQL 实例:数据字典不兼容,导入即失败
  • 备份账号按最小授权时漏了 REPLICATION CLIENT:备份无法记录二进制日志位点,后续增量链路在需要定位恢复点时断裂

数据来源与参考

  • MariaDB 官方文档: mariadb-backup

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌