注意:

使用 Oracle Cloud Infrastructure Full Stack Disaster Recovery 自动切换和故障转移 PostgreSQL 数据库

简介

Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 只需单击一下即可协调全球各地 Oracle Cloud Infrastructure (OCI) 区域之间的计算、数据库和应用迁移。客户可以自动执行恢复一个或多个业务系统所需的步骤,而无需重新设计或重新设计现有基础设施、数据库或应用,也不需要专门的管理或转换服务器。

OCI Full Stack DR 是一项高度灵活的服务,我们可以利用灾难恢复 (Disaster Recovery,DR) 计划中的用户定义计划组来处理 OCI Object Storage 存储桶 DR 操作。

部署体系结构

对象存储体系结构

注:主要区域是 Frankfurt ,DR 区域是 London

目标

先决条件

任务 1:安装和配置 PostgreSQL

  1. 要安装 PostgreSQL,请使用您喜爱的 SSH 客户机连接到主机并运行以下命令。

    sudo dnf install -y postgresql postgresql-server postgresql-contrib
    sudo /usr/bin/postgresql-setup initdb
    sudo systemctl enable postgresql
    sudo systemctl start postgresql
    
  2. 启用 Linux 防火墙以接收连接。

    sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
    sudo firewall-cmd --reload
    
  3. 编辑 postgresql.conf(位于 xxxxx)文件以允许连接并按如下方式更改 wal 参数。

    ...
    listen_addresses = '*'
    ...
    wal_level = logical
    wal_log_hints = on
    ...
    
  4. 连接到数据库,然后创建复制用户。

    sudo su postgres
    psql
    
    CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
    
  5. 将此用户添加到 pg_hba.conf(位于 xxxxx)文件。

    host    all             all             all                    md5
    host    replication     replica_user    <IP Host 1>            md5
    host    replication     replica_user    <IP Host 2>            md5
    
  6. 重新启动 PostgreSQL 数据库以应用更改。

    sudo systemctl restart postgresql
    
  7. 在第二个服务器中重复此过程。

任务 2:复制 PostgreSQL 数据库

在此任务中,我们将配置本机 PostgreSQL 数据库复制。

  1. 连接到主数据库并创建副本插槽。

    sudo su postgres
    psql
    
    select pg_create_physical_replication_slot('replica_0');
    
  2. 连接到辅助数据库并运行以下命令来创建复制。

    sudo systemctl stop postgresql
    sudo rm -rv /var/lib/pgsql/data/
    sudo pg_basebackup -d "host=<IP Host 1> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password
    sudo chown postgres -R /var/lib/pgsql/data/
    sudo systemctl start postgresql
    
  3. 检查复制是否在主数据库上流动。

    select * from pg_stat_replication;
    

    您应该能够看到包含流处理的一行。

任务 3:创建切换计划

任务 3.1:创建和关联灾难恢复保护组 (Disaster Recovery Protection Groups,DRPG)

  1. 在主区域(法兰克福)中,单击汉堡菜单,导航到迁移和灾难恢复灾难恢复灾难恢复保护组创建灾难恢复保护组

    在阿什本创建灾难恢复保护组

  2. 在备用区域(伦敦)中,单击 Hamburger 菜单,导航到 Migration & Disaster RecoveryDisaster RecoveryDisaster Recovery Protection GroupCreate Disaster Recovery Protection Group

    在阿什本创建灾难恢复保护组

  3. 在主要区域(法兰克福)中,输入以下信息,然后单击关联

    • 角色:Primary
    • 对等区域:UK South (London)
    • 对等 DR 保护组:postgresql-lon

    关联主数据库和备用数据库

任务 3.2:将成员添加到主数据库和备用数据库 DRPG

  1. 在主 DRPG (postgresql-fra) 中,选择成员并添加计算 VM (postgresql01) 作为成员。

    添加主要成员

    注:在将计算添加为成员时,请在计算实例类型中选择非移动实例,因为我们为 PostgreSQL 数据库设置了主动 - 被动设置。

  2. 在备用 DRPG (postgresql-lon) 中,选择成员,然后将计算 VM (postgresql02) 添加为成员。

    添加备用成员

    注:在将计算添加为成员时,请在计算实例类型中选择非移动实例,因为我们为 PostgreSQL 数据库设置了主动 - 被动设置。

任务 3.3:在备用 DRPG(伦敦)中创建切换计划

切换计划:一种 DR 计划,用于执行服务从主 DRPG 到备用 DRPG 的计划转换。

  1. 在备用 DRPG postgresql-lon 中创建切换计划。

  2. 选择价格计划,然后单击创建价格计划

  3. 输入名称作为 postgresql-switchover-frankfurt-london,然后选择计划类型作为 Switchover (planned)

  4. 单击创建

切换计划

注:请确保从备用 DRPG(伦敦)创建切换计划。

任务 3.4:使用各种用户定义的计划组自定义切换计划

我们已在两个 DR 保护组中添加了计算(非移动实例)作为成员。我们需要使用其他用户定义的计划组自定义切换计划。我们还需要创建以下 bash 脚本并将其上载到 OCI 对象存储,以便可以在切换期间调用这些脚本。

注:这些脚本应上载到伦敦地区的存储桶。

计划组

DR 切换的典型工作流如下所示:

  1. 在法兰克福地区停止 PostgreSQL 数据库:计划组将具有在法兰克福地区停止 PostgreSQL 数据库的步骤。

  2. 在伦敦地区推广 PostgreSQL 数据库: Plan 组将具有在伦敦地区推广 PostgreSQL 数据库的步骤。

  3. 更改 PostgreSQL 数据库复制方向:计划组将具有更改 PostgreSQL 数据库复制方向 (LON-FRA) 的步骤。

注:确保按相同顺序执行步骤。

创建以下用户定义的计划组

  1. 创建在法兰克福地区停止 PostgreSQL 数据库计划组。

    1. 计划组下,单击添加组以创建自定义计划组,以停止法兰克福区域中的 PostgreSQL 数据库。输入 Group name(组名)作为 Stop PostgreSQL Database at Frankfurt Region

      停止 FRA 中的 PostgreSQL 数据库

    2. 单击添加步骤并输入以下信息。我们将在计划组中添加一个步骤。

      • 确保选择区域作为 Frankfurt,选择目标实例作为 postgresql01。选择运行对象存储脚本,脚本的位置将选择 OCI 对象存储桶 posgres-dr-lon

      • 输入脚本位置的脚本 stop_postgresql.sh 详细信息。该脚本将关闭 FRA 区域中的 PostgreSQL 数据库。

      • 单击添加步骤并验证添加的步骤。

      停止 PostgreSQL 数据库步骤

  2. 创建提升伦敦地区的 PostgreSQL 数据库计划组。

    1. 计划组下,单击添加组以创建定制计划组以在伦敦提升 PostgreSQL 数据库。输入 Group name(组名)作为 Promote PostgreSQL Database at London Region

      在 LON 中提升 PostgreSQL 数据库

    2. 单击添加步骤并输入以下详细信息。我们将在计划组中添加一个步骤。

      • 确保选择区域作为 London目标实例作为 postgresql02。选择运行对象存储脚本,脚本的位置将选择 OCI 对象存储桶 posgres-dr-lon

      • 输入脚本位置的脚本 promote_postgresql.sh 详细信息。该脚本将关闭 FRA 区域中的 PostgreSQL 数据库。

      • 单击添加步骤并验证添加的步骤。

      提升 PostgreSQL 数据库步骤

  3. 创建更改 PostgreSQL 数据库复制方向计划组。

    1. 计划组下,单击添加组以创建定制计划组以更改 PostgreSQL 数据库复制方向。输入 Group name(组名)作为 Promote PostgreSQL Database at London Region

      更改 PostgreSQL 数据库复制 directionN

    2. 单击添加步骤并输入以下信息。我们将在计划组中添加一个步骤。

      • 确保选择区域作为 Frankfurt,选择目标实例作为 postgresql01。选择运行对象存储脚本,脚本的位置选择 OCI 对象存储桶 posgres-dr-lon

      • 输入脚本位置的脚本 change_replication_direction.sh 详细信息。该脚本将关闭 FRA 区域中的 PostgreSQL 数据库。

      • 单击添加步骤并验证添加的步骤。

      更改 PostgreSQL 数据库复制方向步骤

计划组伦敦

任务 4:执行预检查并运行切换计划

运行预检查选项对 DR 计划中的所有步骤以及与这些步骤关联的成员执行快速验证。

  1. 在切换计划 postgresql-switchover-frankfurt-london 中,单击运行预检查以运行预检查。

    切换预检查

    检验是否成功完成。

    切换预检查状态

  2. 在切换计划 postgresql-switchover-frankfurt-london 中,单击执行灾难恢复计划以执行该计划。

    运行灾难恢复计划

  3. 检查计划状态并确保计划中的所有步骤都成功。

    运行灾难恢复计划状态

  4. 切换计划按特定顺序执行所有计划组。成功执行计划后,PostgreSQL 数据库将提升为伦敦地区的主数据库。

  5. 自动更改 DRPG 中的角色。现在,伦敦将主场,法兰克福将担任备用角色。

  6. 验证伦敦的 PostgreSQL 数据库。

任务 5:在备用 DRPG(法兰克福)中创建切换计划以进行切换

任务 5.1:在备用 DRPG 中创建切换计划(伦敦)

  1. 在备用 DRPG postgresql-fran 中创建切换计划。

  2. 选择价格计划,然后单击创建价格计划

  3. 输入名称作为 postgresql-switchover-london-frankfurt,然后选择计划类型作为 Switchover (planned)

  4. 单击创建

计划组

注:请确保从备用 DRPG(法兰克福)创建切换计划。

任务 5.2:使用各种用户定义的计划组自定义切换计划

我们需要使用其他用户定义的计划组自定义切换计划。我们还需要创建以下 bash 脚本并上载到 OCI 对象存储,以便能够在切换期间调用这些脚本。

注:这些脚本应上载到法兰克福地区的存储桶。

DR 切换的典型工作流如下所示:

  1. 重绕 PostgreSQL 数据库:计划组以重绕数据库。法兰克福将同步伦敦数据库的内容。

  2. 重新建立到伦敦的 PostgreSQL 数据库复制: Plan 组将有步骤开始将 PostgreSQL 数据库从法兰克福复制到伦敦区域。

注:确保按相同顺序执行步骤。

创建以下两个用户定义的计划组

  1. 创建回绕 PostgreSQL 数据库计划组。

    1. 计划组下,单击添加组以创建定制计划组,以在法兰克福地区中重绕 PostgreSQL 数据库。输入 Group name(组名)作为 Rewind PostgreSQL Databases at Frankfurt Region

      在 FRA 中重绕 PostgreSQL 数据库

    2. 单击添加步骤并输入以下信息。我们将向计划组添加一个步骤。

      • 确保选择区域作为 Frankfurt,选择目标实例作为 postgresql01。选择运行对象存储脚本,脚本的位置将选择 OCI 对象存储桶 posgres-dr-lon

      • 输入脚本位置的脚本 rewind_postgresql.sh 详细信息。该脚本将关闭 FRA 区域中的 PostgreSQL 数据库。

      • 单击添加步骤并验证添加的步骤。

      重绕 PostgreSQL 数据库步骤

  2. 创建重新建立到伦敦的 PostgreSQL 数据库复制计划组。

    1. 计划组下,单击添加组以创建定制计划组,以重新建立到伦敦的 PostgreSQL 数据库复制。输入 Group name(组名)作为 Promote PostgreSQL Database at London Region

      在 LON 中重新建立 PostgreSQL 数据库复制

    2. 单击添加步骤并输入以下信息。我们将在计划组中添加一个步骤。

      • 确保选择区域作为 London,选择目标实例作为 postgresql02。选择运行对象存储脚本,脚本的位置将选择 OCI 对象存储桶 posgres-dr-lon

      • 输入脚本位置的脚本 replicate_postgresql.sh 详细信息。该脚本将关闭 FRA 区域中的 PostgreSQL 数据库。

      • 单击添加步骤并验证添加的步骤。

      重新建立 PostgreSQL 数据库复制步骤

任务 6:执行预检查并运行切换计划

运行预检查对 DR 计划中的所有步骤以及与这些步骤关联的成员执行快速验证。

  1. 在切换计划 postgresql-switchover-london-frankfurt 中,单击运行预检查以运行预检查。

    切换预检查

    检验是否成功完成。

    切换预检查状态

  2. 在切换计划 postgresql-switchover-london-frankfurt 中,单击执行灾难恢复计划以执行该计划。

    运行灾难恢复计划

  3. 检查计划状态并确保计划中的所有步骤都成功。

    运行灾难恢复计划状态

  4. 切换计划按特定顺序执行所有计划组。成功执行计划后,PostgreSQL 数据库将提升为法兰克福地区的主数据库。

  5. 自动更改 DRPG 中的角色。现在,法兰克福将主场,伦敦将担任备用角色。

  6. 验证法兰克福的 PostgreSQL 数据库。

后续步骤

您已了解如何使用 OCI 全栈灾难恢复服务自动执行 PostgreSQL 数据库切换并切换回灾难恢复操作。有关详细信息,请参阅相关链接部分中的 OCI 全栈灾难恢复文档。

确认

更多学习资源

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

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