首页主机资讯mariadb在ubuntu上的备份恢复策略

mariadb在ubuntu上的备份恢复策略

时间2025-12-17 00:25:05发布访客分类主机资讯浏览867
导读:MariaDB 在 Ubuntu 的备份与恢复策略 一 策略总览 备份方式选型 逻辑备份:使用 mysqldump 导出为 SQL,适合大多数场景,便于跨版本迁移、选择性恢复与审计。 物理/热备:使用 Percona XtraBacku...

MariaDB 在 Ubuntu 的备份与恢复策略

一 策略总览

  • 备份方式选型
    • 逻辑备份:使用 mysqldump 导出为 SQL,适合大多数场景,便于跨版本迁移、选择性恢复与审计。
    • 物理/热备:使用 Percona XtraBackup 进行 InnoDB 热备,适合大库、低停机要求的场景。
  • 备份内容
    • 数据:全库或按库/表导出;InnoDB 建议一致性快照。
    • 结构:建库、建表、视图、存储过程、触发器、事件等。
    • 用户与权限:建议导出 mysql 库中的相关授权信息(谨慎操作)。
    • 配置与密钥:如 server.cnf、SSL/TLS 证书、keyring 文件等。
  • 频率与保留
    • 全量:每日一次(如 02:00),保留 7–30 天
    • 增量:开启 二进制日志(binlog),按小时/天保留,用于点时间恢复(PITR)。
  • 存储与传输
    • 本地保留一份,异地/对象存储保留一份;使用 gzip 压缩与 scp/rsync 传输。
  • 验证与演练
    • 每周抽样恢复演练;校验 md5/sha256;记录恢复步骤与时长。

二 逻辑备份与恢复步骤

  • 全量与按库备份
    • 单库:
      • mysqldump -u root -p mydb > mydb_$(date +“%F”).sql
    • 多库:
      • mysqldump -u root -p --databases db1 db2 > multi_$(date +“%F”).sql
    • 全库:
      • mysqldump -u root -p --all-databases > all_$(date +“%F”).sql
    • 压缩备份:
      • mysqldump -u root -p mydb | gzip > mydb_$(date +“%F”).sql.gz
  • 远程传输
    • scp mydb_2025-12-16.sql.gz user@remote:/backup/
    • 或 rsync -avz mydb_2025-12-16.sql.gz user@remote:/backup/
  • 恢复
    • 单库:先建库(若不存在)再导入
      • mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS mydb; ”
      • mysql -u root -p mydb < mydb_2025-12-16.sql
    • 多库/全库:
      • mysql -u root -p < multi_2025-12-16.sql
      • mysql -u root -p < all_2025-12-16.sql
  • 定时任务
    • 每天 2 点全量备份并压缩:
      • 0 2 * * * mysqldump -u root mydb | gzip > /backup/mydb_$(date +%F).sql.gz
  • 注意事项
    • 大表建议按表导出/恢复;避免锁表影响业务。
    • 恢复前确认目标库字符集/排序规则一致;必要时在 dump 文件中加入 –set-gtid-purged=OFF(如涉及 GTID)。

三 增量备份与点时间恢复

  • 启用二进制日志
    • 编辑配置文件(Ubuntu 常见路径:/etc/mysql/mariadb.conf.d/50-server.cnf/etc/mysql/my.cnf
      • [mysqld] 下添加或取消注释:log_bin = /var/log/mysql/mysql-bin.log
    • 重启服务:
      • sudo systemctl restart mariadb
  • 增量备份
    • 按时间点拷贝 binlog(示例保留近 7 天)
      • mysqladmin -u root -p flush-logs
      • mysql-bin.00000X 拷贝至备份目录(如 /backup/binlog/)
  • 点时间恢复
    • 全量恢复到最近一次全备:mysql -u root -p < all_2025-12-15.sql
    • 回放增量(按时间顺序):
      • mysqlbinlog --start-datetime=“2025-12-16 10:00:00
        –stop-datetime=“2025-12-16 10:15:00
        /backup/binlog/mysql-bin.00000X | mysql -u root -p
  • 建议
    • 定期清理过期 binlog;保留窗口与恢复目标相匹配。

四 物理热备与恢复步骤

  • 适用场景
    • 大容量 InnoDB 库、要求接近零停机的迁移/升级/恢复。
  • 备份
    • 安装工具:sudo apt-get update & & sudo apt-get install percona-xtrabackup-24
    • 完整备份:
      • xtrabackup --backup --target-dir=/backup/full_2025-12-16
        –user=root --password
  • 准备与恢复
    • 准备(回滚未提交事务,确保一致性):
      • xtrabackup --prepare --target-dir=/backup/full_2025-12-16
    • 传输到目标主机(如需要)
      • tar czvf full_2025-12-16.tar.gz -C /backup/full_2025-12-16 .
      • scp full_2025-12-16.tar.gz user@target:/backup/
      • 在目标主机解压:tar xzvf full_2025-12-16.tar.gz -C /backup/full_2025-12-16
    • 停库并拷贝回数据目录(示例默认 datadir:/var/lib/mysql
      • sudo systemctl stop mariadb
      • sudo rm -rf /var/lib/mysql/*
      • xtrabackup --copy-back --target-dir=/backup/full_2025-12-16
        –datadir=/var/lib/mysql
      • sudo chown -R mysql:mysql /var/lib/mysql
      • sudo systemctl start mariadb
  • 提示
    • 增量热备可用 –incremental–incremental-basedir;恢复时按顺序 preparecopy-back

五 自动化与运维实践

  • 备份脚本示例(全量 + 压缩 + 远程)
    • #!/usr/bin/env bash set -e USER=“root”; PASS=“”; HOST=“localhost”; DB=“mydb” BACKUP_DIR=“/backup/mariadb”; DATE=$(date +“%F”) mkdir -p “$BACKUP_DIR/binlog” mysqldump -u “$USER” -p"$PASS" --single-transaction --routines --triggers --default-character-set=utf8mb4 “$DB”
      | gzip > “$BACKUP_DIR/${ DB} _${ DATE} .sql.gz” mysqladmin -u “$USER” -p"$PASS" flush-logs cp /var/log/mysql/mysql-bin.* “$BACKUP_DIR/binlog/” 2> /dev/null || true find “$BACKUP_DIR” -name “.sql.gz" -mtime +7 -delete find “$BACKUP_DIR/binlog” -name "mysql-bin.” -mtime +7 -delete
  • 校验与演练
    • 校验:sha256sum mydb_2025-12-16.sql.gz;抽样导入测试库验证表数量与数据量。
    • 演练:每季度执行一次 PITR 演练,记录 RPO/RTO 指标。
  • 安全与合规
    • 备份文件权限 600;传输使用 scp/rsync over SSH;异地/对象存储加密保存。
    • 保留 审计日志 与备份清单;变更窗口内执行恢复演练并留痕。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: mariadb在ubuntu上的备份恢复策略
本文地址: https://pptw.com/jishu/773410.html
ubuntu mariadb如何进行版本迁移 mariadb在ubuntu上的资源占用多少

游客 回复需填写必要信息