Ubuntu MariaDB备份与恢复方法是什么
导读:Ubuntu 上 MariaDB 的备份与恢复 一 备份与恢复总览 常用方式分为两类: 逻辑备份:使用 mysqldump 导出为 SQL 脚本,跨平台、可选择性恢复,适合常规与中小规模库。 物理备份:使用 Mariabackup(Ma...
Ubuntu 上 MariaDB 的备份与恢复
一 备份与恢复总览
- 常用方式分为两类:
- 逻辑备份:使用 mysqldump 导出为 SQL 脚本,跨平台、可选择性恢复,适合常规与中小规模库。
- 物理备份:使用 Mariabackup(MariaDB 官方热备工具,源自 Percona XtraBackup),接近崩溃一致,适合大库与需要更高恢复效率的场景。
- 选择建议:日常与跨版本迁移优先 mysqldump;超大 InnoDB 库、追求快速恢复与时间点恢复能力优先 Mariabackup。
二 使用 mysqldump 进行逻辑备份与恢复
- 备份
- 单库:
- 命令:
mysqldump -u root -p 数据库名 > 备份.sql
- 命令:
- 多库:
- 命令:
mysqldump -u root -p --databases 库1 库2 > 多库.sql
- 命令:
- 全库(含 mysql 系统库):
- 命令:
mysqldump -u root -p --all-databases > 全库.sql
- 命令:
- 压缩备份(节省空间):
- 命令:
mysqldump -u root -p 数据库名 | gzip > 备份.sql.gz
- 命令:
- 常用一致性选项:
--single-transaction(InnoDB 一致性快照,避免全表锁)--routines --triggers --events(含存储过程、触发器、事件)--hex-blob(二进制字段安全导出)
- 单库:
- 恢复
- 单库:先建库再导入
- 命令:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS 数据库名; " - 导入:
mysql -u root -p 数据库名 < 备份.sql
- 命令:
- 多库/全库:
- 命令:
mysql -u root -p < 多库.sql或mysql -u root -p < 全库.sql
- 命令:
- 单库:先建库再导入
- 远程备份与传输
- 备份后传至远端:
scp 备份.sql.gz 用户@主机:/路径/或rsync -avz 备份.sql.gz 用户@主机:/路径/
- 备份后传至远端:
- 定时备份示例(crontab)
- 每天 02:00 备份并压缩:
0 2 * * * mysqldump -u root -p'密码' --single-transaction --routines --triggers --events 数据库名 | gzip > /backup/mariadb/数据库_$(date +\%F).sql.gz
- 保留 7 天:
0 3 * * * find /backup/mariadb -name "*.sql.gz" -mtime +7 -delete
- 每天 02:00 备份并压缩:
- 权限提示:执行 mysqldump 的账户至少需 SELECT、SHOW VIEW、TRIGGER 权限。
三 使用 Mariabackup 进行物理热备与恢复
- 安装与准备
- 安装:
sudo apt install mariadb-backup -y - 备份目录:
sudo mkdir -p /var/backups/mariadb
- 安装:
- 全量备份
- 命令:
sudo mariabackup --backup --target-dir=/var/backups/mariadb/full-$(date +%F) --user=root --password='密码'
- 命令:
- 准备备份(恢复前必需)
- 命令:
sudo mariabackup --prepare --target-dir=/var/backups/mariadb/full-$(date +%F)
- 命令:
- 恢复步骤
- 停止服务:
sudo systemctl stop mariadb - 备份并移走旧数据目录:
sudo mv /var/lib/mysql /var/lib/mysql.bak - 拷回备份:
- 保留备份:
sudo mariabackup --copy-back --target-dir=/var/backups/mariadb/full-$(date +%F) - 或移动备份:
sudo mariabackup --move-back --target-dir=/var/backups/mariadb/full-$(date +%F)
- 保留备份:
- 修正权限:
sudo chown -R mysql:mysql /var/lib/mysql - 启动服务:
sudo systemctl start mariadb
- 停止服务:
- 注意
- 目标目录在备份时必须为空;恢复前必须执行
--prepare;恢复会覆盖现有数据目录。
- 目标目录在备份时必须为空;恢复前必须执行
四 迁移与时间点恢复
- 迁移场景
- 逻辑迁移:源库
mysqldump→ 传输到目标 → 目标库mysql导入;适合跨版本与跨平台。 - 物理迁移:源库
mariabackup全量 → 目标库停库 →--copy-back→ 启动;适合大体量、快速拉起。
- 逻辑迁移:源库
- 时间点恢复(Point-in-Time Recovery,PITR)
- 启用二进制日志:编辑
/etc/mysql/mariadb.conf.d/50-server.cnf,在[mysqld]加入log_bin = /var/log/mysql/mysql-bin.log- 重启:
sudo systemctl restart mariadb
- 备份策略:定期做全量(如每日),并持续保留二进制日志。
- 恢复流程:
- 先恢复到最近一次全量(按上文 Mariabackup 恢复步骤);
- 使用
mysqlbinlog回放全量之后的二进制日志到指定时间点:- 示例:
mysqlbinlog --start-datetime="2025-12-02 10:00:00" --stop-datetime="2025-12-02 10:15:00" /var/log/mysql/mysql-bin.000001 | mysql -u root -p
- 示例:
- 启用二进制日志:编辑
五 实践建议与注意事项
- 一致性:InnoDB 优先使用
--single-transaction;MyISAM 或需强一致时可用--lock-all-tables(会锁库)。 - 安全:避免在命令行暴露密码,可使用
~/.my.cnf凭据文件(权限 600)。 - 远程与存储:备份完成后用
scp/rsync同步至异地;定期校验与演练恢复流程。 - 版本兼容:跨大版本恢复前先小范围验证;字符集与排序规则保持一致可减少隐患。
- 监控与告警:对备份结果、磁盘空间与恢复演练结果设置监控与告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB备份与恢复方法是什么
本文地址: https://pptw.com/jishu/762581.html
