GPG 密钥配置与常见问题解决指南(适用于 WAL-G 加密备份)
WAL-G 支持使用 GPG(GNU Privacy Guard)对备份进行对称或非对称加密。本教程采用的是 非对称加密,即使用公钥加密,私钥解密。 WAL-G 依赖系统环境中的 gpg
工具,因此必须正确生成并加载 GPG 密钥,确保 WAL-G 能调用 GPG 实现加解密。
一、安装前准备:
确保你的 PostgreSQL 安装完成,并设置好数据目录如 /home/postgres/data1
。
1. 安装GPG
sudo apt update
sudo apt install gnupg
2. 安装 WAL-G v3.0.7(PostgreSQL 专用版本)
curl -L https://github.com/wal-g/wal-g/releases/download/v3.0.7/wal-g-pg-ubuntu-20.04-amd64 -o wal-g-pg
chmod +x wal-g-pg
-o wal-g-pg
:把下载下来的二进制文件保存为本地文件名 wal-g-pg
chmod +x
:为 wal-g-pg
文件添加可执行权限,使其可以作为程序运行。
确认版本:
./wal-g-pg --version
二、生成 GPG 密钥(用于加密)
gpg --full-generate-key
建议设置如下:
生成成功后查看 Key ID:
gpg --list-keys
你会看到如下结构:
pub rsa3072 2025-07-02 [SC]
BC353D29892B2F939FD634FBEB0BB36541BB0ABC
uid [ultimate] postgres <postgres@example.com>
sub rsa3072 2025-07-02 [E]
三、配置 WAL-G 参数文件(JSON)
{
"WALG_FILE_PREFIX": "/home/postgres/walg_backup",
"PGHOST": "localhost",
"PGPORT": "5432",
"PGUSER": "postgres",
"PGPASSWORD": "your_password",
"PGDATABASE": "postgres",
"WALG_COMPRESSION_METHOD": "lz4",
"WALG_ENCRYPTION_METHOD": "gpg",
"WALG_GPG_KEY_ID": "BC353D29892B2F939FD634FBEB0BB36541BB0ABC"
}
注意事项:
四、执行加密备份
./wal-g-pg backup-push /home/postgres/data1 --config ~/gpg.json
成功标志:
Wrote backup with name base_000000010000000000000004 to storage default
接着推送当前所有 WAL 文件(以当前为例):
./wal-g-pg wal-push /home/postgres/data1/pg_wal/000000010000000000000004
五、恢复流程
1. 创建恢复目录
mkdir -p ~/data_restore
2. 拉取备份
./wal-g-pg backup-fetch ~/data_restore LATEST --config ~/gpg.json
3. 创建恢复信号文件
touch ~/data_restore/recovery.signal
4. 修改端口配置,避免冲突
编辑 ~/data_restore/postgresql.conf
,修改端口为未被占用的,例如:port = 5436
5. 启动 PostgreSQL 恢复实例
~/pg17.5/bin/pg_ctl -D ~/data_restore -l restore.log start
六、验证恢复结果
ps -ef | grep postgres
连接数据库检查数据:
psql -p 5436 -U postgres