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


相关推荐
一只专注api接口开发的技术猿23 分钟前
如何处理淘宝 API 的请求限流与数据缓存策略
java·大数据·开发语言·数据库·spring
_oP_i25 分钟前
oracle 免费安装版本
数据库·oracle
Excel工作圈28 分钟前
凭证助手一键匹配已勾选抵扣发票与全量发票明细
数据库·excel
齐鲁大虾39 分钟前
SQL Server 和 MySQL的区别
数据库·mysql
川石课堂软件测试1 小时前
Android和iOS APP平台测试的区别
android·数据库·ios·oracle·单元测试·测试用例·cocoa
Codeking__2 小时前
Redis的value类型介绍——list
数据库·redis·缓存
香气袭人知骤暖2 小时前
MVCC为什么不能完全解决幻读问题
数据库·oracle
东方巴黎~Sunsiny2 小时前
mysql大表空间整理注意点
数据库·mysql
難釋懷2 小时前
Redis简单介绍
数据库·redis·缓存
lifejump2 小时前
Pikachu | SQL-inject
数据库·sql