首页主机资讯Ubuntu MariaDB备份与恢复方法是什么

Ubuntu MariaDB备份与恢复方法是什么

时间2025-12-03 18:07:04发布访客分类主机资讯浏览410
导读: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 < 多库.sqlmysql -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
  • 权限提示:执行 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
    • 备份策略:定期做全量(如每日),并持续保留二进制日志。
    • 恢复流程:
      1. 先恢复到最近一次全量(按上文 Mariabackup 恢复步骤);
      2. 使用 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
ubuntu k8s版本怎么选 Debian进程如何进行安全隔离

游客 回复需填写必要信息