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


相关推荐
CopyLower5 分钟前
解决 Redis 缓存与数据库一致性问题的技术指南
数据库·redis·缓存
多多*8 分钟前
分布式ID设计 数据库主键自增
数据库·sql·算法·http·leetcode·oracle
我爱夜来香A10 分钟前
SQL进阶:如何把字段中的键值对转为JSON格式?
数据库·sql·json
micromicrofat11 分钟前
mongodb升级、改单节点模式
数据库·mongodb
爱编程的王小美1 小时前
本地MySQL连接hive
数据库·hive·mysql
珹洺1 小时前
数据库系统概论(七)初识SQL与SQL基本概念
数据库·sql
云计算DevOps-韩老师1 小时前
精品,架构师总结,MySQL 5.7 查询入门详解
数据库·mysql
Estrella-q1 小时前
解决 Ubuntu DNS 无法解析问题(适用于虚拟机 & 长期使用)
数据库·ubuntu·postgresql
TDengine (老段)2 小时前
TDengine 在智慧油田领域的应用
大数据·数据库·物联网·时序数据库·iot·tdengine·iotdb
二十雨辰2 小时前
[Spring]-认识Spring
java·数据库·spring