首页主机资讯MariaDB在Linux上的备份恢复方法

MariaDB在Linux上的备份恢复方法

时间2025-12-18 20:17:04发布访客分类主机资讯浏览813
导读:MariaDB在Linux上的备份恢复方法 一 备份恢复总览与选择 在Linux上,MariaDB常用两类备份方式: 逻辑备份:使用mysqldump导出为SQL脚本,便于跨平台与跨版本迁移,适合中小型库或需要按库/表选择性恢复的场景。...

MariaDB在Linux上的备份恢复方法

一 备份恢复总览与选择

  • 在Linux上,MariaDB常用两类备份方式:
    • 逻辑备份:使用mysqldump导出为SQL脚本,便于跨平台与跨版本迁移,适合中小型库或需要按库/表选择性恢复的场景。
    • 物理备份:使用mariabackup(MariaDB官方热备工具,源自Percona XtraBackup)直接拷贝数据文件,适合大体量、要求高可用与快速恢复的场景。
  • 二者对比要点:
    • 逻辑备份:输出为文本SQL,可移植性强在线可备,但备份/恢复速度相对较慢,且默认不包含配置与日志文件。
    • 物理备份:文件级拷贝,更紧凑、速度更快,可包含InnoDB日志,通常要求更严格的目录/权限一致性,恢复时要求数据目录为空并做“准备”。

二 使用mysqldump进行逻辑备份与恢复

  • 常用备份命令
    • 备份单个库:
      • mysqldump -u用户名 -p密码 db_name > /path/db.sql
    • 备份多个库:
      • mysqldump -u用户名 -p密码 --databases db1 db2 > /path/multi.sql
    • 备份所有库(含mysql系统库):
      • mysqldump -u用户名 -p密码 --all-databases > /path/all.sql
    • 压缩备份(节省空间):
      • mysqldump -u用户名 -p密码 db_name | gzip > /path/db.sql.gz
  • 常用恢复命令
    • 恢复单个库(需先建库):
      • mysql -u用户名 -p密码 -e “CREATE DATABASE IF NOT EXISTS db_name; ”
      • mysql -u用户名 -p密码 db_name < /path/db.sql
    • 恢复压缩备份:
      • gunzip < /path/db.sql.gz | mysql -u用户名 -p密码 db_name
    • 从“所有库”备份中仅恢复某一个库:
      • mysql -u用户名 -p密码 db_name < /path/all.sql
  • 实用选项与权限
    • 一致性/锁表:–single-transaction(InnoDB一致性快照,避免全表锁)、–lock-all-tables(所有库表锁,适合MyISAM/混合)
    • 结构/数据:–no-data(仅结构)、–add-drop-table(导入前DROP TABLE)
    • 需要的权限:至少具备对目标库的SELECT、SHOW VIEW、TRIGGER权限。

三 使用mariabackup进行物理热备与恢复

  • 安装与全量备份
    • 安装:yum install -y MariaDB-backup(或对应平台的mariadb-backup包)
    • 全量备份:mariabackup --backup --user root --password pwd --target-dir /backup/base
  • 增量备份
    • 第一次增量(基于全量):mariabackup --backup --user root --password pwd --target-dir /backup/inc1 --incremental-basedir /backup/base
    • 第二次增量(基于上一次增量):mariabackup --backup --user root --password pwd --target-dir /backup/inc2 --incremental-basedir /backup/inc1
  • 恢复步骤(示例:全量+若干增量)
    1. 准备全量:mariabackup --prepare --target-dir /backup/base
    2. 依次“准备”并合并增量:
      • mariabackup --prepare --target-dir /backup/base --incremental-dir /backup/inc1
      • mariabackup --prepare --target-dir /backup/base --incremental-dir /backup/inc2
    3. 停止数据库并清空数据目录(务必先备份原数据!),然后拷贝回数据:
      • mariabackup --copy-back --target-dir /backup/base
    4. 修正权限并启动:
      • chown -R mysql:mysql /var/lib/mysql
      • systemctl start mariadb
  • 说明
    • 物理恢复要求目标数据目录为空;–prepare阶段会回放redo日志,确保一致性;–copy-back将备份文件复制回数据目录。

四 自动化与定期备份示例

  • 示例脚本(按天全量,保留7天,压缩存储)
    • 备份脚本 /opt/mysql_backup.sh:
      • #!/bin/bash
        BACKUP_DIR=“/backup/mariadb”
        mkdir -p $BACKUP_DIR
        mysqldump -uroot -ppwd --all-databases | gzip > $BACKUP_DIR/full_$(date +%Y%m%d%H%M%S).sql.gz
        find $BACKUP_DIR -type f -name “*.sql.gz” -mtime +7 -delete
    • 赋权与定时:
      • chmod +x /opt/mysql_backup.sh
      • crontab -e 添加:0 2 * * * /opt/mysql_backup.sh
  • 提示
    • 生产环境建议将凭据写入配置文件(如.my.cnf)并使用凭据文件或专用备份账号,避免命令行明文密码;增量备份可按“上次备份目录”自动推导,减少维护成本。

五 实践注意事项与恢复验证

  • 一致性选择:InnoDB优先使用**–single-transaction获取一致性快照;MyISAM或需强一致时可用–lock-all-tables**(会阻塞写入)。
  • 权限与安全:mysqldump备份账号至少需SELECT/SHOW VIEW/TRIGGER;备份文件含敏感信息,注意传输与存储加密访问控制
  • 物理恢复要点:恢复前停止MariaDB备份原数据目录、确保目标目录为空,恢复后chown -R mysql:mysql并启动服务。
  • 时间点恢复(PITR):启用二进制日志(在/etc/my.cnf的[mysqld]中设置log_bin并重启),全量/增量备份后,利用mysqlbinlog对binlog进行回放至指定时间点或位置。
  • 验证:恢复后登录数据库检查库表数量、数据量、主外键约束与关键业务查询,必要时抽样校验。

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


若转载请注明出处: MariaDB在Linux上的备份恢复方法
本文地址: https://pptw.com/jishu/775445.html
MariaDB在Linux上的权限管理策略 如何配置Linux MariaDB的网络参数

游客 回复需填写必要信息