# PITR 时间点恢复

URL: https://caijiao.org/mariadb/admin/restore/pitr
Source: docs/mariadb/admin/restore/pitr.md
Description: 本节讲解 MariaDB 利用二进制日志实现时间点恢复（PITR），通过恢复备份及应用日志，精确恢复到指定时间点。

## 1. 什么是 PITR（Point-In-Time Recovery）

PITR 指通过恢复完整备份加上应用指定时间段的二进制日志，实现将数据库恢复到某个具体时间点的技术，常用于恢复误操作或数据损坏。

## 2. PITR 基本步骤

### 2.1 准备工作

- 定期使用 mariabackup 备份数据。
- 保留 MariaDB 的二进制日志（binlog），确保能覆盖恢复时间段。

### 2.2 恢复备份

停止 MariaDB，准备并恢复最近一次完整备份：

```bash
systemctl stop mariadb

mariabackup --prepare --target-dir=/path/to/backup

mariabackup --copy-back --target-dir=/path/to/backup

chown -R mysql:mysql /var/lib/mysql
````

### 2.3 启动 MariaDB 并应用二进制日志

启动数据库，但先不要对外开放：

```bash
systemctl start mariadb
```

使用 `mysqlbinlog` 工具从二进制日志中导出指定时间点之前的日志：

```bash
mysqlbinlog --start-datetime="2025-05-18 10:00:00" --stop-datetime="2025-05-18 12:30:00" /var/lib/mysql/binlog.[数字] > /tmp/binlog.sql
```

根据需要调整开始和结束时间，导出的 SQL 文件包含了这段时间内的所有事务。

### 2.4 导入二进制日志

将导出的日志导入 MariaDB，完成时间点恢复：

```bash
mysql -u root -p < /tmp/binlog.sql
```

导入完成后，数据库即恢复到指定时间点。

## 3. 注意事项

* 备份和 binlog 文件路径及命名根据实际情况调整。
* 保证备份和二进制日志的完整性，避免数据缺失。
* 恢复前请在测试环境确认流程，防止误操作导致数据丢失。

---

PITR 技术是保障数据库数据安全的重要手段，能灵活恢复到任意时间点，适合关键业务场景。
