注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成实验室时,请将这些值替换为特定于云环境的值。
使用物理备用复制在 VM 上对 PostgreSQL 数据库实施跨区域灾难恢复
简介
pg_basebackup
是由 PostgreSQL 提供的命令行实用程序,用于对正在运行的 PostgreSQL 数据库集群执行完全备份。它用于创建数据库集群的二进制副本,可用于复制或恢复。
pg_basebackup
是由 PostgreSQL 提供的命令行实用程序,用于对正在运行的 PostgreSQL 数据库集群执行完全备份。它用于创建数据库集群的二进制副本,可用于复制或恢复。
pg_basebackup
实用程序的主要优点之一是它可以在不要求访问数据库所在的文件系统的情况下工作。相反,它使用流复制协议连接到 PostgreSQL 服务器,即使服务器正在运行时,也可以安全方便地使用。
pg_basebackup
实用程序通常与预写日志记录 (Write-ahead Logging,WAL) 归档结合使用,在设置流复制并确保虚拟机 (Virtual Machine,VM) 上运行的 PostgreSQL 环境的高可用性和灾难恢复方面发挥着关键作用。
主要特性:
-
易于用于设置备用服务器。
-
支持并行备份以提高性能。
-
允许备份压缩。
-
可以包括 WAL 文件以进行时间点恢复。
本教程概述了在计算 VM 上托管的两个 PostgreSQL 数据库之间设置跨区域流复制的任务。
目标
- 在具有 DR 区域中的物理备用数据库的 VM 上为 PostgreSQL 数据库设置跨区域灾难恢复 (Disaster Recovery,DR)。
先决条件
创建跨区域的 VCN 对等连接。要跨区域连接到计算 VM,必须设置 VCN 对等连接。有关详细信息,请参见以下主题:
-
实施 VCN 对等连接:使用动态路由网关对不同区域的 OCI VCN 进行对等连接。
-
管理动态路由通道 (Dynamic Routing Gateways,DRG): Dynamic Routing Gateways 。
确保已正确配置 VCN 对等连接,以便在不同区域的数据库之间建立无缝连接。
任务 1:设置主 PostgreSQL 数据库
-
在主 PostgreSQL 数据库中创建名为
replicator
的用户。CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD '*********';
-
验证角色/用户。
postgres=# \du List of roles Role name | Attributes | Member of ----------------+------------------------------------------------------------+----------- admin | Superuser | {} guest | | {} mytestdb | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} replicator | Replication
-
使用以下详细信息更新
postgresql.conf
文件。listen_addresses = '*'
-
更新
pg_hba.conf
文件。使用备用数据库 IP 地址。host replication replicator Standby_DB_IP/32 md5
-
重新启动 PostgreSQL 服务。
sudo systemctl restart PostgreSQL
任务 2:设置备用 PostgreSQL 数据库
-
停止 PostgreSQL 服务。
sudo systemctl stop PostgreSQL
-
删除现有二进制文件。
cp -R /var/lib/postgresql/13/main /var/lib/postgresql/13/main_old rm -rf /var/lib/postgresql/13/main
-
执行
pg_basebackup
命令以设置流复制。pg_basebackup -h PrimaryDB_IP -D /var/lib/postgresql/13/main -U replicator -P -v -R -X stream -C -S slaveslot1
-
启动 PostgreSQL 服务。
sudo systemctl start PostgreSQL
任务 3:验证主 PostgreSQL 数据库上的流复制
在主 PostgreSQL 数据库上运行以下命令以收集主数据库与 DR 数据库之间的同步状态。
SELECT * FROM pg_replication_slots;
SELECT * FROM pg_stat_replication;
确认
- 作者 — Snehaa Patnaik(提升实施专家—数据库)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Implement Cross Region Disaster Recovery for PostgreSQL Databases on VM Using Physical Standby Replication
G35553-01
Copyright ©2025, Oracle and/or its affiliates.