Sun Cluster Geographic Edition 数据复制指南(适用于 Oracle Data Guard)

第 3 章 迁移使用 Oracle Data Guard 数据复制的服务

本章介绍了维护中常用的服务迁移信息或群集故障所产生的服务迁移信息。

其中包含以下主题:

在使用 Oracle Data Guard 数据复制的系统上检测群集故障

本节介绍当在主群集或备用群集上检测到故障时所进行的内部处理。

检测主群集故障

当特定保护组的主群集出现故障时,伙伴关系中的备用群集会检测到此故障。如果出现故障的群集是多个伙伴关系的成员,则可能会进行多次故障检测。

当保护组的整体状态变为 Unknown 状态时,系统将会执行以下操作:

检测备用群集的故障

当特定保护组的备用群集出现故障时,同一伙伴关系中的另一个群集会检测到此故障。如果出现故障的群集是多个伙伴关系的成员,则可能会进行多次故障检测。

故障检测过程中,将会发生以下操作:

通过切换操作迁移使用 Oracle Data Guard 的服务

当您希望将服务依次迁移到伙伴群集上时,请对 Oracle Data Guard 保护组执行切换操作。切换操作包括以下具体操作:

本节提供了以下信息:

Procedure如何将 Oracle Data Guard 保护组从主群集切换到备用群集

开始之前

为使能够进行切换,主群集与备用群集之间的数据复制必须处于激活状态,即必须启用 Oracle Data Guard Broker 配置。此外,Oracle Data Guard Broker 的 show configuration 命令必须显示 SUCCESS 状态。此状态反映在该 Oracle Data Guard Broker 配置的 Sun Cluster Geographic Edition 复制资源的状态(显示 online 状态)中。

将保护组从主群集切换到备用群集前,请确保满足以下条件:

  1. 登录到一个群集节点。

    要完成此步骤,您需要分配有 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“Sun Cluster Geographic Edition 软件和 RBAC”

  2. 执行切换操作。

    在切换操作期间启动和停止属于该保护组的应用程序资源组。


    phys-node-n# geopg switchover [-f] -m newprimarycluster protectiongroupname
    
    -f

    强制命令在不经您确认的情况下执行该操作。

    -mnewprimarycluster

    指定将作为保护组主群集的群集的名称。

    protectiongroupname

    指定保护组的名称。


示例 3–1 强制从主群集切换到备用群集

本示例说明了如何执行到备用群集的切换。


phys-paris-1# geopg switchover -f -m cluster-newyork sales-pg

Sun Cluster Geographic Edition 软件在切换操作期间执行的操作

运行 geopg switchover 命令时,软件确认主群集确实保存了主数据库。此命令检查 Oracle Data Guard Broker 配置中的远程数据库是否处于 enabled 状态。此命令还发出 Oracle Data Guard 命令行界面 (dgmgrl) 的 show configuration 命令,确保此命令返回 SUCCESS 状态,以确认配置运行状况良好。如果此命令的输出指示 Oracle Data Guard Broker 正忙于执行它自己的运行状况检查,则 Oracle Data Guard 命令行界面将反复重试此命令,直到它收到 SUCCESS 响应或直到过去两分钟。如果命令行界面无法获得 SUCCESS 响应,此命令将失败。如果配置运行状况良好,软件将对原始主群集执行以下操作:

在原来的备用群集上,该命令进行以下操作:

如果命令成功完成,则备用群集 cluster-newyork 将成为保护组的新主群集。原来的主群集 cluster-paris 则成为新的备用群集。与保护组的 Oracle Data Guard Broker 配置相关联的数据库将根据本地群集上保护组的角色颠倒其角色。Oracle 阴影 RAC 服务器代理资源组以及其他所有应用程序资源组在新的主群集上联机。从新的主群集到新的备用群集的数据复制开始进行。

如果以前的任何操作失败,则此命令均会返回错误。运行 geoadm status 命令查看每个组件的状态。例如,保护组的 Configuration 状态可能设置为 Error,具体取决于故障的原因。保护组可以处于已激活或已取消激活的状态。

如果保护组的 Configuration 状态设置为 Error,请使用如何验证 Oracle Data Guard 保护组中所介绍的过程重新验证保护组。

如果每个伙伴群集上保护组的配置不相同,需要使用如何重新同步 Oracle Data Guard 保护组中所介绍的过程对配置进行重新同步。

在使用 Oracle Data Guard 的系统上强制执行接管操作

当需要在备用群集上使应用程序进入联机状态时,请执行接管操作(无论在主数据库和备用数据库之间数据是否完全一致)。在本节,假定保护组已启动。

启动接管后,将发生下面的操作:

有关主群集和备用群集在接管操作前后可能出现哪些状况的详细信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的附录 C “接管后的情况”

本节提供了以下信息:

Procedure如何强制备用群集立即接管 Oracle Data Guard 服务

开始之前

在强制备用群集承担主群集的活动前,请确保满足以下条件:

  1. 登录到备用群集中的一个节点。

    要完成此步骤,您需要分配有 Geo Management RBAC 权限配置文件。有关 RBAC 的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“Sun Cluster Geographic Edition 软件和 RBAC”

  2. 启动接管操作。


    phys-node-n# geopg takeover [-f] protectiongroupname
    
    -f

    强制命令在不经您确认的情况下执行该操作。

    protectiongroupname

    指定保护组的名称。


示例 3–2 强制备用群集执行接管操作

本示例说明如何强制备用群集 cluster-newyork 接管 sales-pg

节点 phys-newyork-1 是备用群集中的第一个节点。有关哪一个节点是 phys-newyork-1 的提示信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“Sun Cluster Geographic Edition 群集配置示例”


phys-newyork-1# geopg takeover -f sales-pg

接下来的操作

有关主群集和备用群集在接管操作完成后的状态信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的附录 C “接管后的情况”

执行接管操作期间由 Sun Cluster Geographic Edition 软件执行的操作

运行 geopg takeover 命令时,软件会确认备用群集(即将来的主群集)中的 Oracle Data Guard Broker 配置中的数据库是否已启用(因为不能由已禁用的数据库来接管)。软件还确认 Oracle Data Guard 命令行界面的 show configuration 命令不是显示 SUCCESS 状态,就是忙于执行运行状况检查 (ORA-16610)。如果 show configuration 命令返回其他任何 Oracle 错误代码,接管将会失败。

如果可以访问原来的主群集 cluster-paris,软件将使应用程序资源组脱机,并将它们置于 Unmanaged 状态。

在原来的备用群集 cluster-newyork 上,软件执行以下操作:

如果命令成功完成,则备用群集 cluster-newyork 将成为保护组的新主群集。与保护组的 Oracle Data Guard Broker 配置相关联的数据库将根据本地群集上保护组的角色颠倒其角色。Oracle 阴影 RAC 服务器代理资源组以及其他所有应用程序资源组在新的主群集上联机。如果可以访问原来的主群集,则它将成为保护组的新备用群集。与保护组的 Oracle Data Guard Broker 配置关联的所有数据库的复制操作将停止。


注意 – 注意 –

成功地执行接管操作后,数据复制将停止。如果您希望继续暂停复制,请在使用 -geopg start 命令时指定 n 选项。此选项可防止启动从新的主群集到新的备用群集的数据复制。


如果之前的操作失败,此命令将返回错误。使用 geoadm status 命令查看每个组件的状态。例如,保护组的 Configuration 状态可能设置为 Error 状态,具体取决于故障的原因。保护组可以处于已激活或已取消激活的状态。

如果保护组的 Configuration 状态设置为 Error 状态,请使用如何验证 Oracle Data Guard 保护组中所介绍的过程重新验证保护组。

如果每个伙伴群集上保护组的配置不相同,需要使用如何重新同步 Oracle Data Guard 保护组中所介绍的过程对配置进行重新同步。

执行接管操作后恢复 Oracle Data Guard 数据

成功执行接管操作后,备用群集 cluster-newyork 将成为保护组的主群集,并且服务将在备用群集上处于联机状态。恢复原来的主群集后,可使用名为故障恢复的过程使服务重新在原来的主群集上联机。

Sun Cluster Geographic Edition 软件支持以下两种故障恢复:

如果希望在原来的主群集再次启动后将新的主群集 cluster-newyork 保留为主群集,而将原来的主群集 cluster-paris 保留为备用群集,可以重新同步并重新验证保护组配置。可以在不执行切换或接管操作的情况下重新同步并重新验证保护组。

本节说明了如何执行下列过程:

Procedure如何重新同步和重新验证保护组的配置

可通过执行以下过程用当前主群集 cluster-newyork 上的数据重新同步和重新验证原来的主群集 cluster-paris 上的数据。

开始之前

重新同步和重新验证保护组的配置之前,cluster-newyork 上已执行了接管操作。这些群集现在具有以下角色:

  1. 如果原来的主群集 cluster-paris 已关闭,请确认是否已引导该群集以及是否已在该群集上启用 Sun Cluster Geographic Edition 基础结构。

    有关引导群集的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“引导群集”

  2. 将原来的主群集 cluster-paris 与当前主群集 cluster-newyork 重新同步。

    群集 cluster-paris 将不再使用它自己的配置并在本地复制 cluster-newyork 配置。重新同步伙伴关系和保护组配置。

    1. cluster-paris 上,取消激活本地群集上的保护组。


      phys-paris-1# geopg stop -e local protectiongroupname
      
      -e local

      指定命令的范围。

      指定 local 范围后,该命令将仅在本地群集上有效。


      注 –

      属性值(例如 globallocal区分大小写。


      protectiongroupname

      指定保护组的名称。

      如果保护组已处于取消激活状态,则保护组中资源组的状态可能为 Error,因为应用程序资源组处于受管和脱机状态。

      如果取消激活保护组,则应用程序资源组将不再处于受管状态,从而退出 Error 状态。

    2. cluster-paris 上重新同步伙伴关系。


      phys-paris-1# geops update partnershipname
      

      注 –

      此步骤只需执行一次即可,即使是要重新同步多个保护组亦是如此。


      有关对伙伴关系进行同步的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“重新同步伙伴关系”

    3. cluster-paris 上重新同步每个保护组。

      由于 cluster-newyork 上保护组的角色为 primary,因此此步骤可确保 cluster-paris 上保护组的角色为 secondary。


      phys-paris-1# geopg update protectiongroupname
      

      有关同步保护组的更多信息,请参见重新同步 Oracle Data Guard 保护组

  3. cluster-paris 上验证每个保护组的配置。


    phys-paris-1# geopg validate protectiongroupname
    

    有关更多信息,请参见如何验证 Oracle Data Guard 保护组

  4. cluster-paris 上激活每个保护组。

    激活保护组时,该保护组的应用程序资源组也会进入联机状态。


    phys-paris-1# geopg start -e global protectiongroupname
    
    -e global

    指定命令的范围。

    通过指定 Global 范围,该命令在保护组所在的两个群集上均生效。


    注 –

    属性值(例如 globallocal区分大小写。


    protectiongroupname

    指定保护组的名称。


    注意 – 注意 –

    请勿使用 -n 选项,因为数据需要从当前主群集 cluster-newyork 同步到当前备用群集 cluster-paris

    因为保护组的角色为 secondary,所以数据从当前主群集 cluster-newyork 同步到当前备用群集 cluster-paris

    有关 geopg start 命令的更多信息,请参见如何激活 Oracle Data Guard 保护组


  5. 确认所有数据均已同步。

    1. 确认 cluster-newyork 上的保护组的状态为 OK


      phys-newyork-1# geoadm status
      

      请参阅输出内容中的 Protection Group 部分。

    2. 确认复制资源组 ODGprotectiongroupname-odg-rep-rg 中的所有资源均报告状态 OK


      phys-newyork-1# clresource status -v ODGprotectiongroupname-odg-rep-rs
      

Procedure如何在使用 Oracle Data Guard 复制的系统上执行故障恢复切换操作

在使用当前主群集 cluster-newyork 上的数据重新同步原来的主群集 cluster-paris 上的数据后,可按照以下过程在原来的主群集上重新启动应用程序。

故障恢复过程仅适用于处在伙伴关系中的群集。对于每个伙伴关系而言,以下过程只需执行一次。

开始之前

执行故障恢复切换之前,cluster-newyork 上已执行了接管操作。这些群集现在具有以下角色:

  1. 如果原始主群集 cluster-paris 发生故障,请确认是否已重新启动群集以及是否在群集上启用了 Sun Cluster Geographic Edition 基础结构。

    有关重新启动群集的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“引导群集”

  2. 将发生故障的 Oracle Data Guard 主数据库恢复为新的备用数据库。

    请参阅介绍如何执行此步骤的 Oracle 文档

  3. 确定原始主群集 cluster-paris 作为 Oracle Data Guard 配置的一部分正确运行。


    oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svc
    DGMGRL> show configuration;
    

    如果原始主群集 cluster-paris 正确运行,show configuration 命令会显示 SUCCESS 状态。

    如果原始主群集在故障点关闭,它会标记为取消激活的主群集。如果原始主群集在故障点启动,它会标记为取消激活的辅助群集。

  4. 将原来的主群集 cluster-paris 与当前主群集 cluster-newyork 重新同步。

    群集 cluster-paris 将不再使用它自己的配置并在本地复制 cluster-newyork 配置。重新同步伙伴关系和保护组配置。

    1. cluster-paris 上重新同步伙伴关系。


      phys-paris-1# geops update partnershipname
      

      注 –

      对于每个伙伴关系而言,即使是要对该伙伴关系中的多个保护组执行故障恢复切换操作,也只需为该伙伴关系执行一次此步骤即可。


      有关对伙伴关系进行同步的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“重新同步伙伴关系”

    2. 确定原来的主群集 cluster-paris 上的保护组是否处于活动状态。


      phys-paris-1# geoadm status
      
    3. 如果原来的主群集上的保护组处于活动状态,则将其停止。


      phys-paris-1# geopg stop -e local protectiongroupname
      
      -e local

      指定命令的范围。

      指定 local 范围后,该命令将仅在本地群集上有效。


      注 –

      属性值(例如 globallocal区分大小写。


      protectiongroupname

      指定保护组的名称。

      如果保护组已处于取消激活状态,则保护组中资源组的状态可能为 Error,因为应用程序资源组处于受管和脱机状态。

      如果取消激活保护组,则应用程序资源组将不再处于受管状态,从而退出 Error 状态。

    4. 检验保护组是否已停止。


      phys-paris-1# geoadm status
      
    5. cluster-paris 上重新同步每个保护组。

      由于 cluster-newyork 群集上保护组的本地角色现在为 primary,因此此步骤可确保 cluster-paris 群集上保护组的角色变为 secondary。


      phys-paris-1# geopg update protectiongroupname
      

      有关同步保护组的更多信息,请参见重新同步 Oracle Data Guard 保护组

  5. cluster-paris 上验证每个保护组的配置。

    保护组处于 Error 状态时是无法启动的。因此,请确保保护组不处于 Error 状态。


    phys-paris-1# geopg validate protectiongroupname
    

    有关更多信息,请参见如何验证 Oracle Data Guard 保护组

  6. cluster-paris 上激活每个保护组。

    在激活保护组时,它的应用程序资源组也会进入联机状态。


    phys-paris-1# geopg start -e global protectiongroupname
    
    -e global

    指定命令的范围。

    通过指定 Global 范围,该命令在保护组所在的两个群集上均生效。


    注 –

    属性值(例如 globallocal区分大小写。


    protectiongroupname

    指定保护组的名称。

  7. 确认数据已完全同步。

    1. 确认 cluster-newyork 上的保护组的状态为 OK


      phys-newyork-1# geoadm status
      

      请参阅输出内容中的 Protection Group 部分。

    2. 确认复制资源组 ODGprotectiongroupname-odg-rep-rg 中的所有资源均报告状态 OK


      phys-newyork-1# clresource status -v ODGprotectiongroupname-odg-rep-rs
      
  8. 确保两个伙伴群集上的保护组处于激活状态。


    phys-paris-1# geoadm status
    …
    phys-newyork-1# geoadm status
  9. 对于任一群集上的每个保护组,执行从 cluster-newyorkcluster-paris 的切换。


    phys-node-n# geopg switchover [-f] -m cluster-paris protectiongroupname
    

    有关更多信息,请参见如何将 Oracle Data Guard 保护组从主群集切换到备用群集

    cluster-paris 群集恢复它保护组主群集的原有角色。

  10. 确保成功执行了切换操作。


    phys-node-n# geoadm status
    

    检验该保护组现在在 cluster-paris 上处于 primary 角色,在 cluster-newyork 上处于 secondary 角色,并且两个群集上 Data replication Resource groups 属性的状态均显示为 OK

  11. 检查每个 Oracle Data Guard 保护组的应用程序资源组和数据复制的运行时状态。


    phys-node-n# clresourcegroup status -v resourcegroupname
    # clresource status -v ODGConfigurationName-odg-rep-rs
    

    请参阅要检查的 Oracle Data Guard Broker 配置所对应的 StatusStatus Message 字段。有关这些字段的更多信息,请参见表 2–1

    有关数据复制的运行时状态的更多信息,请参见检查 Oracle Data Guard 数据复制的运行时状态

Procedure如何在使用 Oracle Data Guard 复制的系统上执行故障恢复接管操作

执行本过程可在原来的主群集 cluster-paris 上重新启动应用程序,并使用该群集上的当前数据。


注 –

备用群集 cluster-newyork 充当主群集时在它上面进行的任何更新都将被放弃。


故障恢复过程仅适用于处在伙伴关系中的群集。对于每个伙伴关系而言,以下过程只需执行一次。


注 –

在有些情况下,您可以继续使用原来的主群集 cluster-paris 上的数据。但是,在 cluster-newyork 上执行接管操作后,便不能再将新主群集 cluster-newyork 中的数据复制到原来的主群集 cluster-paris


开始之前

在开始故障恢复接管过程之前,群集必须具有下列角色:

  1. 如果原始主群集 cluster-paris 发生故障,请确认是否已重新启动群集以及是否在群集上启用了 Sun Cluster Geographic Edition 基础结构。

    有关重新启动群集的更多信息,请参见《Sun Cluster Geographic Edition 系统管理指南》中的“引导群集”

  2. 将新的 Oracle Data Guard 主数据库作为原始主数据库的备用数据库恢复到原始主数据库发生故障前那一刻。

    请参阅介绍如何执行此步骤的 Oracle 文档


    注 –

    您可能需要使用 dgmgrl 命令删除并重新创建 Oracle Data Guard Broker 配置。


  3. 确定原始主群集 cluster-paris 作为 Oracle Data Guard 配置的一部分重新以主群集身份正确运行。


    oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svc
    DGMGRL> show configuration;
    

    如果原始主群集 cluster-paris 正确运行,show configuration 命令会显示 SUCCESS 状态。

    如果原始主群集在故障点启动,它会标记为取消激活的辅助群集。此外,原始备用群集会标记为激活的主群集。

    如果原始主群集在故障点关闭,它会标记为取消激活的主群集。此外,原始备用群集会标记为激活的主群集。

  4. 原始主群集 cluster-paris 是否在故障点启动或关闭?

    • 如果原始主群集 cluster-paris 在故障点关闭,请将原始备用群集 &seconda y_cluster; 更新至辅助群集。

      1. 在原始备用群集(即已成为新的主群集的群集)上停止保护组。


        phys-newyork-1# geopg stop -e local protectiongroupname
        
      2. 在原始备用群集(即已成为新的主群集的群集)上更新保护组。


        phys-newyork-1# geopg update protectiongroupname
        

        现在,这些角色都是正确的,但两个群集均标记为取消激活。

        有关同步保护组的更多信息,请参见如何重新同步 Oracle Data Guard 保护组

      3. cluster-pariscluster-newyork 上,本地验证每个保护组的配置。

        请确保保护组不处于 Error 状态。当保护组处于 Error 状态时,无法启动该保护组。


        phys-paris-1# geopg validate protectiongroupname
        phys-newyork-1# geopg validate protectiongroupname
        

        有关更多信息,请参见如何验证 Oracle Data Guard 保护组

      4. 从其中一个群集中的任一节点,在两个群集上以全局方式激活保护组。


        # geopg start -e global protectiongroupname
        

        在两个群集上激活保护组后,即成功执行了故障恢复接管。

    • 如果原始主群集 cluster-paris 在故障点启动,请确定辅助群集(即原始主群集)配置的状态。


      phys-newyork-1# geoadm status
      
      • 如果 Configuration 的状态设置为 OK,请对配置执行同步操作。

        1. 对原始主群集 cluster-paris 上的每个保护组启动接管。


          phys-paris-1# geopg takeover [-f] protectiongroupname
          
        2. 如果原始备用群集 cluster-newyork 的配置标记为 Error,请验证每个保护组的配置。


          cluster-newyork# geopg validate protectiongroupname
          

          有关更多信息,请参见如何验证 Oracle Data Guard 保护组

        3. 在两个群集上以全局方式激活保护组。


          cluster-newyork# geopg start -e global protectiongroupname
          

          在两个群集上激活保护组后,即成功执行了故障恢复接管。

      • 如果 Configuration 的状态设置为 Error,请解决此问题。

        1. 取消激活处于 Error 状态的辅助配置(即原始主配置)。


          phys-newyork-1#  geopg stop -e local protectiongroupname
          
        2. 强制执行接管使辅助配置再次成为主配置,并与基础 Oracle dgmgrl 配置相匹配。


          phys-newyork-1# geopg takeover -f protectiongroupname
          
        3. cluster-pariscluster-newyork 群集上,本地验证每个保护组的配置。


          phys-paris-1# geopg validate protectiongroupname
          phys-newyork-1# geopg validate protectiongroupname
          

          有关更多信息,请参见如何验证 Oracle Data Guard 保护组

        4. 从其中一个群集的任一节点,在两个群集上以全局方式激活保护组。


          # geopg start -e global protectiongroupname
          

          在两个群集上激活保护组后,即成功执行了故障恢复接管。

从 Oracle Data Guard 数据复制错误中恢复

在数据复制级别发生错误时,该错误反映在相关 Oracle Data Guard Broker 配置的复制资源组内资源的状态中。

例如,假定 Oracle Data Guard Broker 配置 sales-pg(包含复制的数据库 sales)从保护模式 MaxAvailability 变为 MaxPerformanceFAULTED 的状态更改反映在以下资源状态中:


Resource Status = "FAULTED"
Resource status message = "FAULTED - Protection mode "MaxAvailability" given 
for local database sales does not match configured value "MaxPerformance""

注 –

Resource State 保持为 Online 是由于探测仍在正确运行。


由于资源的状态发生了更改,因此保护组的状态也会发生更改。在这种情况下,本地 Data Replication 状态、本地群集上的 Protection Group 状态以及整体的 Protection Group 状态都将变为 Error

要从错误状态中恢复,请执行以下过程。

Procedure如何从数据复制错误中恢复

  1. 使用 Oracle Data Guard 文档中的相应过程来确定导致 FAULTED 状态的原因。

  2. 通过执行相应的 Oracle Data Guard 过程从故障状态中恢复。

    如果恢复过程更改了 Oracle Data Guard Broker 配置的状态,则资源将会自动检测到此状态并将其作为新的保护组状态来报告。如果复制模式与 Sun Cluster Geographic Edition 设置不匹配,请键入:


    phys-paris-1# geopg modify-replication-component -p replication_mode=New-protection-mode \
    ODGConfigurationName protectiongroupname
    
  3. 重新验证保护组的配置


    phys-paris-1# geopg validate protectiongroupname
    

    其中 protectiongroupname 指定 Oracle Data Guard 保护组的名称。

  4. 查看保护组配置的状态。


    phys-paris-1# geopg list protectiongroupname
    

    其中 protectiongroupname 指定 Oracle Data Guard 保护组的名称。