# PostgreSQL 备份、传输与恢复指南

#### PostgreSQL 数据库备份、传输与恢复指南

**1. 备份数据库**

在源服务器上执行以下步骤来备份 PostgreSQL 数据库。

1.1. **设置数据库连接信息**：

将以下变量替换为你的实际数据库信息：

```bash
DB_NAME="patentinfer_8004"          # 数据库名称
DB_USER="root"                      # 数据库用户名
DB_PASSWORD="rootroot"              # 数据库密码
DB_HOST="localhost"                 # 数据库主机地址
DB_PORT="5432"                      # 数据库端口
BACKUP_DIR="/home/trizhi2/zhanghengrui/backup" # 备份文件存储目录
```

1.2. **执行备份命令**：

运行以下命令进行数据库备份，并将备份文件存储在指定的目录中：

```bash
# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 导出数据库密码
export PGPASSWORD="$DB_PASSWORD"

# 执行备份
pg_dump -h "$DB_HOST" -U "$DB_USER" -p "$DB_PORT" -F c -b -v -f "$BACKUP_DIR/db_$(date +"%Y%m%d%H%M%S").backup" "$DB_NAME"
```

备份完成后，备份文件将以 `db_YYYYMMDDHHMMSS.backup` 的格式存储在 `/home/trizhi2/zhanghengrui/backup` 目录中。

**2. 传输备份文件到目标服务器**

在备份完成后，使用 `scp` 命令将备份文件传输到目标服务器。

2.1. **传输命令**：

假设目标服务器的内网地址是 `172.17.157.30`，用户名为 `root`，目标目录为 `/home/zhanghengrui/psql_backup`，并且目标服务器的用户密码为 `xxx`。

```bash
scp /home/trizhi2/zhanghengrui/backup/db_*.backup root@172.17.157.30:/home/zhanghengrui/psql_backup/
```

在执行该命令时，系统会提示输入目标服务器 `root` 用户的密码。输入正确的密码以完成文件传输。

**3. 恢复数据库**

在目标服务器上，执行以下步骤来恢复数据库。

3.1. **连接到目标服务器**：

通过 SSH 连接到目标服务器：

```bash
ssh root@172.17.157.30
```

3.2. **恢复数据库**：

在目标服务器上，设置数据库连接信息：

```bash
DB_NAME="patentinfer_8004"          # 目标数据库名称
DB_USER="root"                      # 数据库用户名
DB_PASSWORD="rootroot"              # 数据库密码
DB_HOST="localhost"                 # 数据库主机地址
DB_PORT="5432"                      # 数据库端口
BACKUP_PATH="/home/zhanghengrui/psql_backup/db_*.backup" # 备份文件路径
```

3.3. **执行恢复命令**：

在目标服务器上执行以下命令来恢复数据库：

```bash
# 导出数据库密码
export PGPASSWORD="$DB_PASSWORD"

# 恢复数据库
pg_restore -h "$DB_HOST" -U "$DB_USER" -p "$DB_PORT" -d "$DB_NAME" -v "$BACKUP_PATH"

# 例如
pg_restore -h localhost -U root -p 5432 -d patentinfer_8004 -v /home/zhanghengrui/psql_backup/db_20240917022405.backup > restore_log.txt 2>&1
```

这个命令会将备份文件中的数据恢复到指定的数据库中。

***

**注意事项**：

* 请确保在执行这些命令时具有足够的权限。
* 确保 `pg_dump` 和 `pg_restore` 工具已在两台服务器上正确安装。
* 如果数据库恢复失败，请检查日志信息以定位问题，并确保目标数据库处于空闲状态或已正确初始化。

以上是 PostgreSQL 数据库备份、传输和恢复的完整步骤。根据你的具体环境和需求，可以调整变量和路径。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.rui-nnovation.cool/postgresql-bei-fen-chuan-shu-yu-hui-fu-zhi-nan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
