PostgreSQL数据库全局备份及免输密码

1、备份脚本

#!/bin/bash

# 设置本地备份目录
LOCAL_BACKUP_DIR="/pg_backup"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

# 设置远程服务器信息
REMOTE_SERVER="192.168.1.1"
REMOTE_USER="root"
REMOTE_BACKUP_DIR="/pg_backup"

# 创建本地备份目录
mkdir -p $LOCAL_BACKUP_DIR

# 使用pg_dumpall进行全局备份
/app/postgresql/bin/pg_dumpall --host=192.168.1.2 --port=18053 --username=yw --file=$LOCAL_BACKUP_DIR/pg_dumpall_$TIMESTAMP.sql

# 传输备份文件到远程服务器
scp -P 10022 $LOCAL_BACKUP_DIR/pg_dumpall_$TIMESTAMP.sql $REMOTE_USER@$REMOTE_SERVER:$REMOTE_BACKUP_DIR

# 清理本地15天以上的备份文件
#rm -rf $LOCAL_BACKUP_DIR
find $LOCAL_BACKUP_DIR -type f -name "*.sql" -mtime +15 -exec rm {} \;

2、免密配置文件

要使用 .pgpass 文件进行 pg_dumpall 的全局备份,你需要按照以下步骤进行操作:

打开文本编辑器,创建一个新的纯文本文件。

将以下内容复制并粘贴到文件中:

localhost:5432:*:your_username:your_password

请确保将 your_username 替换为你的 PostgreSQL 用户名,将 your_password 替换为你的密码。如果你使用的是主机名而不是本地主机,请将 localhost 替换为你的 PostgreSQL 服务器的主机名或 IP 地址。中间的*号表示PG库里面的所有的数据库。

保存文件,并将其命名为 .pgpass(注意,文件名以点开头)。

将 .pgpass 文件放置在你执行该脚本用户的家目录内
设置文件权限,确保只有所有者可以读取和写入该文件。你可以使用以下命令来设置权限(在 Linux/Unix 上):

chmod 0600 ~/.pgpass

然后执行你的shell脚本进行备份即可。