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