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`)。


相关推荐
Full Stack Developme2 小时前
SQL 版本历史
数据库·sql
杰克逊的日记4 小时前
mysql数据实时全量+增量迁移
数据库·mysql·数据迁移
linuxxx1105 小时前
centos7 升级MariaDB 到 10.5 或更高版本
数据库·mariadb
换个网名有点难5 小时前
django怎么配置404和500
数据库·django
Adellle6 小时前
MySQL
数据库·后端·mysql
就是有点傻6 小时前
C# 中实现一个线程持续读取,另一个线程负责写入,且写入时读取线程暂停
数据库·c#
云观秋毫7 小时前
试试智能体工作流,自动化搞定运维故障排查
运维·数据库·自动化
是沫沫子耶7 小时前
mysql实例
数据库
比钻石还闪亮的nan人7 小时前
CentOS 7下安装PostgreSQL 15
数据库·postgresql
Full Stack Developme7 小时前
SQL 集合运算
数据库·sql