注:

使用 OCI 控制台设置 PostgreSQL 主数据库和两个备用数据库并验证数据复制

简介

PostgreSQL 是一个开源对象关系数据库管理系统。它具有高度可扩展性、高度可扩展性和多种功能。PostgreSQL 支持跨多个数据中心进行数据复制。

可以修改数据的服务器称为主服务器或主服务器。跟踪主服务器更改的服务器称为备用服务器。在将备用服务器提升到主服务器之前无法连接的备用服务器称为热备用服务器,可以接受连接并提供只读查询的备用服务器称为热备用服务器。

资源管理器是 Oracle Cloud Infrastructure (OCI) 服务,允许您自动执行 OCI 资源预配过程。使用 Terraform,资源管理器可帮助您通过“基础设施即代码”模型安装、配置和管理资源。

Oracle Cloud Infrastructure 专为需要稳定高性能的负载而设计,包括到数据库的有状态连接、通过 CPU 或 GPU 的原始处理、数百万次的存储 IOPS 以及 GB/秒的吞吐量。它以零信任体系结构开始。在设计 Oracle Cloud 的过程中,我们想要一款针对每个应用效果更佳的云,但性价比更高。

目标

使用 OCI 资源管理器中的 Terraform 代码配置 1 个主服务器和 2 个热备用服务器。它将部署在 3 个不同可用性域中的 3 个计算实例上。

部署后,我们将检查表从主服务器到备用服务器的复制,我们将连接到热备用数据库来查询数据。

  1. 使用 terraform 堆栈,我们将部署网络、PostgreSQL 主服务器和 2 个备用服务器。

  2. 我们将在“主要”中创建示例表,并在表中插入少量记录。

  3. 然后,我们将验证这些示例表和行是否已复制到两个备用服务器。

任务 1:创建堆栈

  1. 在浏览器中打开以下链接:部署到 Oracle Cloud

  2. 如果尚未登录,请输入租户和用户凭据。

  3. 选择要部署堆栈的区域。

  4. 在“堆栈信息”页面上,选中我已查看并接受 Oracle 使用条款复选框。堆栈信息部分将显示详细信息。

  5. 单击下一步

  6. 配置变量页面上,配置以下设置:

    :在本教程中,我们将在公共子网中部署 PostgreSQL 版本 12。

    变量:

    1. 选择所需的可用性域和 PostgreSQL 版本。

    2. 清除在专用子网中创建复选框。

    3. 选中显示高级选项复选框并指定网络、计算、存储、备用和其他设置的详细信息。

      变量:

      Variables3:

    4. 指定所需的 OS、备份策略和其他详细信息。

      变量:

    5. 指定 OCPU 和内存的必需值。

      1. 选择主节点配置和复制用户。

        变量:

      2. 提供 Hotstandby1 的详细信息(选择 AD-2)。

        变量:

      3. 提供 Hotstandby2 的详细信息(选择 AD-3)。

        变量:

    6. 单击下一步

  7. 在“复查”页上验证您的详细信息,并确保选中运行应用复选框以立即预配资源。

    堆栈复查

  8. 单击创建

    作业日志

  9. 监视堆栈作业的日志(转至开发人员服务资源管理器堆栈),如以下屏幕截图中所示。

    堆栈导航

    堆栈页

    堆栈作业状态

    堆栈作业日志

:对于本教程中使用的测试设置,在 11 分钟内为所选配置应用并成功配置了资源。这可能会因您选择的配置设置而异。

堆栈作业成功

以下屏幕截图显示了已完成的主服务器和备用服务器配置。

PG 计算正在运行

任务 2:验证连接和复制

  1. ssh 以 opc 用户身份访问您的主节点并运行以下命令:

    sudo su - postgres

    pgprimary 登录

  2. 在主节点中创建表 order_details

    CREATE TABLE order_details (order_detail_id integer CONSTRAINT order_details_pk PRIMARY KEY, order_id integer NOT NULL, order_date date, qty integer, ACCEPTED_QUANTITY integer);

  3. 描述创建的表。

    \dt order_details

  4. 查询数据,并返回 0 行:

    select * from order_details;

    主表

  5. 登录到 standby1 服务器并验证 order_details 表是否已复制。

    备用表

  6. 登录到 standby2 服务器并验证 order_details 表是否已复制。

    pgstandby2 表

  7. 在主数据库表 order_details 中插入 2 行。

    BEGIN; INSERT INTO order_details (order_detail_id,order_id,order_date,qty,ACCEPTED_QUANTITY) values (101,1,'2022-07-14',10,5); INSERT INTO order_details (order_detail_id,order_id,order_date,qty,ACCEPTED_QUANTITY) values (102,2,'2022-07-14',100,100); COMMIT;

    主要插入

  8. 验证 standby1 服务器中的行,它应该已复制。

    pgstandy1 验证

  9. 验证 standby2 服务器中的行,它也应在此处复制。

    pgstandy2 验证:

确认

更多学习资源

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

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