原 【异地备份】如何让pg_rman支持异地备份?
Tags: 原创PGPostgreSQL异地备份S3sshfspg_rmanrclones3fs-fuse
要让 pg_rman
支持异地备份,可以通过以下方式实现:
方法 1:使用 NFS 挂载远程存储
在目标服务器上配置 NFS 服务:
- 确保远程存储服务器上安装并启用了 NFS 服务。
- 配置共享目录,例如
/backup
。 - 在
/etc/exports
中添加导出配置,例如:1/backup 192.168.1.0/24(rw,sync,no_root_squash) - 重启 NFS 服务:1sudo systemctl restart nfs-server
在 PostgreSQL 服务器上挂载 NFS:
- 在 PostgreSQL 服务器上安装 NFS 客户端:12sudo apt install nfs-common # 对于 Debian/Ubuntusudo yum install nfs-utils # 对于 CentOS/Red Hat
- 创建挂载点并挂载远程目录:12sudo mkdir -p /mnt/backupsudo mount -t nfs 192.168.1.100:/backup /mnt/backup
- 在
/etc/fstab
中配置自动挂载:1192.168.1.100:/backup /mnt/backup nfs defaults 0 0
- 在 PostgreSQL 服务器上安装 NFS 客户端:
配置 pg_rman:
- 将备份路径设置为 NFS 挂载点:1pg_rman init -B /mnt/backup
- 将备份路径设置为 NFS 挂载点:
方法 2:通过 SSHFS 远程挂载
安装 SSHFS:
- 在 PostgreSQL 服务器上安装 SSHFS:12sudo apt install sshfs # 对于 Debian/Ubuntusudo yum install fuse-sshfs # 对于 CentOS/Red Hat
- 在 PostgreSQL 服务器上安装 SSHFS:
挂载远程存储:
- 创建挂载点并挂载远程目录:12sudo mkdir -p /mnt/backupsshfs -o allow_other -p 922 root@192.16.7.162:/minio/data/pgbk/pg16 /bk
- 如果需要在启动时自动挂载,可以使用
sshfs
配合fstab
或autofs
。
- 创建挂载点并挂载远程目录:
配置 pg_rman:
将备份路径设置为 SSHFS 挂载点:
12345678910111213141516171819202122232425262728mkdir /bkchmod 777 /bk/pg_rman init -B /bkmore /bk/pg_rman.ini-- 全量pg_rman backup --backup-mode=full -B /bkpg_rman show -B /bkpg_rman show '2024-07-08 15:24:04' -B /bk/pg_rman validate -B /bk-- 增量pg_rman backup --backup-mode=incremental -B /bkpg_ctl stoprm -rf /pg16/pgdata/-- 还原到最新状态pg_rman restore -B /bk-- 增量还原pg_rman restore -B /bk --recovery-target-time="2024-07-08 15:18:10"pg_ctl startcreate table t(id int, col2 text);insert into t select n, 'test123' || n || md5(random()::varchar) from generate_series(1, 6000000) as n;
方法 3:使用对象存储,将S3挂载为本地盘(使用 s3fs-fuse或 rclone)
如果希望直接使用对象存储(如 Amazon S3 或 MinIO),需要通过工具实现对对象存储的挂载或同步:
1、使用 s3fs-fuse 挂载对象存储: