MariaDB数据库备份及恢复

`mariadb-backup` 是 MariaDB 提供的官方备份工具,用于执行全量备份和增量备份。以下是使用 `mariadb-backup` 备份的文件进行恢复的步骤:


**1. 准备工作**

  • 确保目标 MariaDB 实例已停止。

  • 确保备份文件完整且可用。

  • 确保恢复的目标目录(如数据目录)是空的,或者备份文件可以覆盖现有数据。


**2. 恢复全量备份**

**步骤:**

  1. 停止 MariaDB 服务:

```bash

systemctl stop mariadb

```

  1. 清空目标数据目录(通常为 `/var/lib/mysql`):

```bash

rm -rf /var/lib/mysql/*

```

  1. 使用 `mariadb-backup` 恢复备份文件:

```bash

mariadb-backup --copy-back --target-dir=/path/to/backup

```

其中:

  • `--copy-back`:将备份文件恢复到数据目录。

  • `--target-dir`:指定备份文件的路径。

  1. 确保数据目录的权限正确:

```bash

chown -R mysql:mysql /var/lib/mysql

```

  1. 启动 MariaDB 服务:

```bash

systemctl start mariadb

```

  1. 验证恢复是否成功:

```bash

mysql -u root -p -e "SHOW DATABASES;"

```


**3. 恢复增量备份**

如果使用了增量备份,需要先恢复全量备份,再依次应用增量备份。

**步骤:**

  1. 停止 MariaDB 服务:

```bash

systemctl stop mariadb

```

  1. 清空目标数据目录:

```bash

rm -rf /var/lib/mysql/*

```

  1. 恢复全量备份:

```bash

mariadb-backup --copy-back --target-dir=/path/to/full-backup

```

  1. 应用增量备份:

```bash

mariadb-backup --copy-back --incremental-dir=/path/to/incremental-backup --target-dir=/path/to/full-backup

```

其中:

  • `--incremental-dir`:指定增量备份的路径。
  1. 确保数据目录的权限正确:

```bash

chown -R mysql:mysql /var/lib/mysql

```

  1. 启动 MariaDB 服务:

```bash

systemctl start mariadb

```

  1. 验证恢复是否成功:

```bash

mysql -u root -p -e "SHOW DATABASES;"

```


**4. 恢复压缩备份**

如果备份文件是压缩的(如 `.xbstream` 或 `.gz`),需要先解压,再恢复。

**步骤:**

  1. 解压备份文件:

```bash

mbstream -x -C /path/to/backup < backup.xbstream

```

```bash

gunzip -c backup.gz | mbstream -x -C /path/to/backup

```

  1. 使用 `mariadb-backup` 恢复:

```bash

mariadb-backup --copy-back --target-dir=/path/to/backup

```

  1. 确保数据目录的权限正确:

```bash

chown -R mysql:mysql /var/lib/mysql

```

  1. 启动 MariaDB 服务:

```bash

systemctl start mariadb

```


**5. 注意事项**

  • **备份文件完整性**:确保备份文件未被损坏。

  • **数据目录权限**:恢复后确保数据目录的权限为 `mysql:mysql`。

  • **测试恢复**:在生产环境恢复前,建议在测试环境中验证恢复流程。

  • **日志文件**:恢复后可能需要清理或重新生成日志文件(如 `ib_logfile0` 和 `ib_logfile1`)。


相关推荐
周胡杰11 分钟前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj00114 分钟前
navicate如何设置数据库引擎
数据库·mysql
赵渝强老师17 分钟前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle
暖暖木头19 分钟前
Oracle注释详解
数据库·oracle
御控工业物联网36 分钟前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
GJCTYU2 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
MicroTech20252 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
Code季风2 小时前
SQL关键字快速入门:CASE 实现条件逻辑
javascript·数据库·sql
weixin_478689762 小时前
操作系统【2】【内存管理】【虚拟内存】【参考小林code】
数据库·nosql
九皇叔叔3 小时前
【7】PostgreSQL 事务
数据库·postgresql