MariaDB数据库备份及恢复

发布于:2025-03-28 ⋅ 阅读:(32) ⋅ 点赞:(0)

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

---