注意:

使用物理备用复制在 VM 上对 PostgreSQL 数据库实施跨区域灾难恢复

简介

pg_basebackup 是由 PostgreSQL 提供的命令行实用程序,用于对正在运行的 PostgreSQL 数据库集群执行完全备份。它用于创建数据库集群的二进制副本,可用于复制或恢复。

pg_basebackup 是由 PostgreSQL 提供的命令行实用程序,用于对正在运行的 PostgreSQL 数据库集群执行完全备份。它用于创建数据库集群的二进制副本,可用于复制或恢复。

pg_basebackup 实用程序的主要优点之一是它可以在不要求访问数据库所在的文件系统的情况下工作。相反,它使用流复制协议连接到 PostgreSQL 服务器,即使服务器正在运行时,也可以安全方便地使用。

pg_basebackup 实用程序通常与预写日志记录 (Write-ahead Logging,WAL) 归档结合使用,在设置流复制并确保虚拟机 (Virtual Machine,VM) 上运行的 PostgreSQL 环境的高可用性和灾难恢复方面发挥着关键作用。

主要特性:

本教程概述了在计算 VM 上托管的两个 PostgreSQL 数据库之间设置跨区域流复制的任务。

目标

先决条件

创建跨区域的 VCN 对等连接。要跨区域连接到计算 VM,必须设置 VCN 对等连接。有关详细信息,请参见以下主题:

确保已正确配置 VCN 对等连接,以便在不同区域的数据库之间建立无缝连接。

任务 1:设置主 PostgreSQL 数据库

  1. 在主 PostgreSQL 数据库中创建名为 replicator 的用户。

    CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD '*********';
    
  2. 验证角色/用户。

    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  
    
  3. 使用以下详细信息更新 postgresql.conf 文件。

    listen_addresses = '*'
    
  4. 更新 pg_hba.conf 文件。使用备用数据库 IP 地址。

    host    replication     replicator      Standby_DB_IP/32       md5
    
  5. 重新启动 PostgreSQL 服务。

    sudo systemctl restart PostgreSQL
    

任务 2:设置备用 PostgreSQL 数据库

  1. 停止 PostgreSQL 服务。

    sudo systemctl stop PostgreSQL
    
  2. 删除现有二进制文件。

    cp -R /var/lib/postgresql/13/main /var/lib/postgresql/13/main_old
    rm -rf /var/lib/postgresql/13/main
    
  3. 执行 pg_basebackup 命令以设置流复制。

    pg_basebackup -h PrimaryDB_IP -D /var/lib/postgresql/13/main -U replicator -P -v -R -X stream -C -S slaveslot1 
    
  4. 启动 PostgreSQL 服务。

    sudo systemctl start PostgreSQL
    

任务 3:验证主 PostgreSQL 数据库上的流复制

在主 PostgreSQL 数据库上运行以下命令以收集主数据库与 DR 数据库之间的同步状态。

SELECT * FROM pg_replication_slots;
SELECT * FROM pg_stat_replication;

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心