Ubuntu上MariaDB备份策略是什么
小樊
43
2025-11-24 22:59:43
Ubuntu 上 MariaDB 备份策略
一 策略总览
- 备份方式选型:优先采用逻辑备份(mariadb-dump/mysqldump)满足跨平台与灵活恢复;对大容量、低停机场景采用物理在线备份(Mariabackup);在停机窗口或只读维护时可用文件系统快照/rsync;若已启用二进制日志(Binlog),建议配合做时间点恢复(PITR)。下表对比要点:
- 逻辑备份:输出为 SQL,便于迁移与选择性恢复;可在服务运行时执行;不包含日志与配置文件;适合小中型库与频繁迁移。
- 物理备份:直接拷贝数据文件,体积更小、速度更快;支持热备;需“准备(prepare)”后恢复;适合大体量、低 RPO/RTO。
- 文件系统级:快照/rsync 简单高效;需一致性保证(停机或锁表/冻结);适合配合其他策略使用。
二 推荐备份方案
- 方案A 逻辑备份(mariadb-dump/mysqldump)
- 适用:跨版本/跨平台迁移、部分库表恢复、开发与测试环境。
- 关键命令:
- 全库:mysqldump -u root -p --all-databases > /backup/all_$(date +%F).sql
- 单库:mysqldump -u root -p mydb > /backup/mydb_$(date +%F).sql
- 压缩:mysqldump … | gzip > …sql.gz
- 恢复:mysql -u root -p < backup.sql
- 建议选项:–single-transaction(InnoDB 一致性)、–routines --triggers --events(含存储过程/触发器/事件)、–hex-blob(BLOB 安全)、–set-gtid-purged=OFF(如非 GTID 环境)。
- 方案B 物理在线备份(Mariabackup)
- 适用:生产环境大库、要求热备与快速恢复。
- 关键步骤:
- 安装:sudo apt install mariadb-backup -y
- 全量:mariabackup --backup --target-dir=/var/backups/mariadb/full-$(date +%F) --user=root --password=xxx
- 准备:mariabackup --prepare --target-dir=/var/backups/mariadb/full-$(date +%F)
- 恢复(灾难恢复演练):停库→备份旧数据目录→mariabackup --copy-back→修正权限 chown -R mysql:mysql /var/lib/mysql→启动→校验
- 说明:Mariabackup 为 MariaDB 官方物理备份工具,支持 InnoDB 的在线热备与一致性保证。
- 方案C 文件系统级备份(快照/rsync)
- 适用:有 LVM/ZFS 等快照能力或可接受短暂停机。
- 关键做法:停库→rsync -a --delete /var/lib/mysql /backup/mysql_$(date +%F)→启动;或使用快照后离线拷贝。注意一致性窗口与权限保留。
三 自动化与保留
- 定时任务(cron)
- 例:每日 02:00 全库备份并压缩
- 0 2 * * * mysqldump -u backup -p’YOUR_PASS’ --single-transaction --routines --triggers --events --all-databases | gzip > /backup/mariadb/full_$(date +%F).sql.gz
- 例:每周一次全量 + 每日增量(配合 Binlog 做 PITR)
- 每周日 02:00 全量;其余每日 03:00 仅备份当日 Binlog(mysqlbinlog 导出新增事件)。
- 异地与权限
- 使用 rsync/scp 将备份同步到远程主机/对象存储;备份目录与传输链路做好最小权限与访问控制;定期校验与清理过期备份。
- 保留与轮换
- 建议“日增/周全/月归档”与“祖父-父-子”轮换;本地保留如7–30 天,异地/归档保留数月–1 年;对关键库增加离线/异地副本。
四 时间点恢复与验证
- 启用与保留 Binlog
- 配置 my.cnf:在 [mysqld] 中启用 log_bin,并设定 expire_logs_days(如 7–30);重启后生效。
- PITR 基本流程
- 选择最近的全量备份并“准备(prepare)”;恢复到该时间点;使用 mysqlbinlog 重放全量备份之后的二进制日志至目标时刻:
- mysqlbinlog --start-datetime=“2025-11-24 02:00:00” --stop-datetime=“2025-11-24 10:00:00” /var/log/mysql/mysql-bin.00000* | mysql -u root -p
- 定期演练与校验
- 每季度做一次恢复演练与校验和/行数对比;记录 RPO/RTO;对加密/压缩备份验证可恢复性与密钥可用性。