`mariadb-backup` 是 MariaDB 提供的官方备份工具,用于执行全量备份和增量备份。以下是使用 `mariadb-backup` 备份的文件进行恢复的步骤:
**1. 准备工作**
-
确保目标 MariaDB 实例已停止。
-
确保备份文件完整且可用。
-
确保恢复的目标目录(如数据目录)是空的,或者备份文件可以覆盖现有数据。
**2. 恢复全量备份**
**步骤:**
- 停止 MariaDB 服务:
```bash
systemctl stop mariadb
```
- 清空目标数据目录(通常为 `/var/lib/mysql`):
```bash
rm -rf /var/lib/mysql/*
```
- 使用 `mariadb-backup` 恢复备份文件:
```bash
mariadb-backup --copy-back --target-dir=/path/to/backup
```
其中:
-
`--copy-back`:将备份文件恢复到数据目录。
-
`--target-dir`:指定备份文件的路径。
- 确保数据目录的权限正确:
```bash
chown -R mysql:mysql /var/lib/mysql
```
- 启动 MariaDB 服务:
```bash
systemctl start mariadb
```
- 验证恢复是否成功:
```bash
mysql -u root -p -e "SHOW DATABASES;"
```
**3. 恢复增量备份**
如果使用了增量备份,需要先恢复全量备份,再依次应用增量备份。
**步骤:**
- 停止 MariaDB 服务:
```bash
systemctl stop mariadb
```
- 清空目标数据目录:
```bash
rm -rf /var/lib/mysql/*
```
- 恢复全量备份:
```bash
mariadb-backup --copy-back --target-dir=/path/to/full-backup
```
- 应用增量备份:
```bash
mariadb-backup --copy-back --incremental-dir=/path/to/incremental-backup --target-dir=/path/to/full-backup
```
其中:
- `--incremental-dir`:指定增量备份的路径。
- 确保数据目录的权限正确:
```bash
chown -R mysql:mysql /var/lib/mysql
```
- 启动 MariaDB 服务:
```bash
systemctl start mariadb
```
- 验证恢复是否成功:
```bash
mysql -u root -p -e "SHOW DATABASES;"
```
**4. 恢复压缩备份**
如果备份文件是压缩的(如 `.xbstream` 或 `.gz`),需要先解压,再恢复。
**步骤:**
- 解压备份文件:
```bash
mbstream -x -C /path/to/backup < backup.xbstream
```
或
```bash
gunzip -c backup.gz | mbstream -x -C /path/to/backup
```
- 使用 `mariadb-backup` 恢复:
```bash
mariadb-backup --copy-back --target-dir=/path/to/backup
```
- 确保数据目录的权限正确:
```bash
chown -R mysql:mysql /var/lib/mysql
```
- 启动 MariaDB 服务:
```bash
systemctl start mariadb
```
**5. 注意事项**
-
**备份文件完整性**:确保备份文件未被损坏。
-
**数据目录权限**:恢复后确保数据目录的权限为 `mysql:mysql`。
-
**测试恢复**:在生产环境恢复前,建议在测试环境中验证恢复流程。
-
**日志文件**:恢复后可能需要清理或重新生成日志文件(如 `ib_logfile0` 和 `ib_logfile1`)。