PostgreSQL 备份、传输与恢复指南

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

1. 备份数据库

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

1.1. 设置数据库连接信息

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

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

1.2. 执行备份命令

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

# 创建备份目录
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

scp /home/trizhi2/zhanghengrui/backup/db_*.backup [email protected]:/home/zhanghengrui/psql_backup/

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

3. 恢复数据库

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

3.1. 连接到目标服务器

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

3.2. 恢复数据库

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

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. 执行恢复命令

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

# 导出数据库密码
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_dumppg_restore 工具已在两台服务器上正确安装。

  • 如果数据库恢复失败,请检查日志信息以定位问题,并确保目标数据库处于空闲状态或已正确初始化。

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

Last updated