PostgreSQL 数据库备份与恢复全攻略
1. pg_dump 命令备份
pg_dump 及其相关命令随 PostgreSQL 一同发布。它能在不干扰数据库读写操作的情况下,将指定数据库中的所有数据进行转储。一旦开始执行 pg_dump,之后对数据库所做的任何更改都不会出现在转储文件中,但转储文件的数据是一致的。数据可以以多种格式进行转储,并且可以使用 pg_restore 命令进行恢复。默认情况下,会创建一个包含 SQL 语句的文件,不过也能以 PostgreSQL 特定格式转储数据,或者创建数据的 tar 归档文件。
这种方法特别适合较小的数据库(小于 5GB),因为生成的转储文件可以直接传输到 S3。以下是一个示例脚本,用于转储 my_db 数据库并将其存储在名为 my-db-backups 的 S3 存储桶中:
#!/bin/bash -e
DB_NAME="my_db"
BUCKET_NAME="my-db-backups"
DATE=`date -u +"%Y%m%d%H%M"`
BACKUP_DIR="/var/backups"
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.tar"
mkdir -p $BACKUP_DIR
# Dump the database as a tar archive
pg_dump ${DB_NAME} --file="${BACKUP_FILE}" --format=tar
# Copy the tar file to S3
s3cmd put "${BACKUP_FILE}" s3://${BUCKET_NAME}
# De