OCI Full Stack DRおよびカスタム・スクリプトを使用した、OCI Database Servicesで手動で構成されたOracle Data Guardのデータベース・ロールの変更の自動化
はじめに
Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR)は、世界中のOracle Cloud Infrastructure(OCI)リージョン間のコンピュート、データベース、およびアプリケーションの移行をワンクリックで調整します。お客様は、既存のインフラストラクチャ、データベースまたはアプリケーションを再設計または再設計することなく、また特殊な管理サーバーや変換サーバーを必要とせずに、1つ以上のビジネス・システムをリカバリするために必要なステップを自動化できます。
OCI Full Stack DRは、OCI上のさまざまなOracle Databaseサービスの完全な統合サポートを提供します。これらのデータベースは、OCI Full Stack DR保護グループのメンバーとして追加できるため、調整されたディザスタ・リカバリ操作が可能になります。
OCIのOracle Databasesマネージド・サービスの場合、OCIコンソール、Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)またはOCI SDKを使用してOracle Data Guardを構成することを強くお薦めします。これにより、OCI Full Stack DRは、Data Guard構成を自動的に検出し、DR計画の一部としてロール・トランジションの組込みプラン・グループを生成できるようになります。
ただし、次のような特定の技術要件または運用要件のために、手動のOracle Data Guard構成(OCIのネイティブ・インタフェースの外部)が必要となるシナリオがあります。
- アプリケーション固有の制約。
- カスケード・スタンバイ構成。
- アプリケーションの互換性のために、古いデータベース・バージョンを使用します。
そのような場合、OCI Databaseサービス・コントロール・プレーンでOracle Data Guardの設定が認識されない場合がありますが、OCI Full Stack DRは依然として柔軟性を提供します。カスタム・スクリプトを作成し、DR計画内のユーザー定義のプラン・グループに統合することで、ロール推移を処理できます。
このソリューションは、Data Guard構成がOCIコンソール、SDKまたはAPIを介して管理されるOracle Database Cloudサービスと互換性がないことに注意してください。
このチュートリアルでは、Oracle Data Guardが手動で構成されているOCI Databaseサービスのカスタム・データベース・ハンドラ・スクリプトを使用して、Oracle Data Guardロール・トランジションを管理するための標準化されたアプローチについて説明します。
ノート:このカスタム・スクリプト・ソリューションは、次のOCIデータベース・サービスに適用されます。
- Oracle Base Database Service
- Oracle Exadata Database Service on Dedicated Infrastructure
- Oracle Exadata Database Service on Exascale Infrastructure
- Oracle Exadata Database Service on Cloud@Customer
アーキテクチャの説明
このチュートリアルでは、2つのOCIリージョン(Oracle Data Guardが手動で構成されている)にデプロイされた2つのDBシステムでOracle Base Database Serviceを使用します。
図A: Oracle Base Database Serviceを使用したカスタムData Guard構成
チュートリアル全体での定義と仮定
-
リージョン:
-
リージョン1 (アッシュバーン):アッシュバーンは、最初はプライマリ・リージョンとして機能します。
-
リージョン2 (フェニックス):フェニックスは、最初はスタンバイ・リージョンとして機能します。
-
-
コンパートメント:このデプロイメントおよびOCI Full Stack DRは、ITガバナンスの標準内で動作する任意のコンパートメント・スキームに自由に編成できます。このチュートリアルのすべてのOCIリソースを1つのコンパートメントに編成することを選択しました。
目的
このチュートリアルでは、次のタスクについて説明します。
- タスク1: Oracle Data Guard構成を確認し、タグを更新します。
- タスク2: DR保護グループを作成して関連付けます。
- タスク3: DR保護グループにメンバーを追加します。
- タスク4:リージョン2でDR計画を作成およびカスタマイズします。
- タスク5:リージョン2でDR計画の事前チェックを実行します。
- タスク6:リージョン2でスイッチオーバー計画を実行します。
- タスク7:リージョン2でDR計画を作成およびカスタマイズします。
前提条件
チュートリアルを開始するには、次のリソースを使用します。
| リソース | リージョン1 - アッシュバーン | リージョン2 - フェニックス |
|---|---|---|
| コンパートメント | アプリケーション | アプリケーション |
| DB System | アドゴル-12345 | アドゴル-12345 |
| DB名 | アドゴール | アドゴール |
| 一意のデータベース名 | アドゴルsite0 | アドゴルsite1 |
| DB役割 | 主 | スタンバイ |
| コンピュートVM | 脚本 | スクリプト-phx |
| バケット | IAD | PHX |
ノート:続行する前に、必要な前提条件をすべて完了してください。これらのステップにより、スムーズで成功するOCI Full Stack DRセットアップの基盤が整います。
-
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)ポリシーの管理アクセスまたは必要なポリシー。
管理者権限があることを確認するか、OCI Full Stack DRを使用するために必要なOCI IAMポリシーおよび動的グループを構成します。このソリューションでは、データベース・ハンドラ・スクリプトによってOCIコンテナ・インスタンスが内部的に起動されるため、それに応じてポリシーを追加する必要があります。
ノート:
<compartment_ocid>および<compartment_name>のすべての出現箇所を、実際のOCIコンパートメントOCIDおよび名前に置き換えます。-
動的グループの作成:例名(
FullStackDR_Database_DG)を使用して動的グループを作成し、次の一致ルールを追加します。Any {instance.compartment.id = '<compartment_ocid>'} Any {resource.type = 'instance', resource.compartment.id = '<compartment_ocid>'} Any {resource.type = 'computecontainerinstance', resource.compartment.id = '<compartment_ocid>'} Any {resource.type = 'drprotectiongroup', resource.compartment.id = '<compartment_ocid>'} -
OCI IAMポリシーの作成:例名(
FullStackDR_Database_Group_Policies)のポリシーを作成し、次の許可文を追加します:Allow dynamic-group FullStackDR_Database_DG to read secret-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage virtual-network-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-execution-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage objects in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage database-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage compute-container-family in compartment <compartment_name>
詳細は、OCIディザスタ・リカバリ・ポリシー – 公式ドキュメントおよびIAMポリシーの構成(Oracleブログ)を参照してください。
-
-
両方のリージョンでのOCIコンピュート・インスタンスのプロビジョニング:各リージョンでOCIコンピュート・インスタンスを作成し、scripts.Forの詳細なステップをホストおよび実行するためのJumphostとして機能します(OCIインスタンスの作成を参照)。簡単にするために、このOCIコンピュート・インスタンスを、すでにJumphostとして機能する既存のOCIコンピュート・インスタンスがあるtutorial.If全体でJumphostと呼びます。このステップはスキップできます。JumphostにOracle Cloud Agentが実行中であり、コマンド・プラグインが実行中であることを確認します。詳細は、Oracle Cloud Agentを参照してください。
-
OCIコンピュート・インスタンスで実行コマンドへのアクセス: DR操作中にスクリプトを実行するためにユーザー定義のプラン・グループを使用しているため、実行コマンドの前提条件をjumphostで設定してください。詳細は、インスタンスでのコマンドの実行を参照してください。
-
両方のリージョンでOCI CLIをjumphostにインストールする: jumphostのオペレーティング・システムに基づいて、両方のリージョンにOCI CLIをインストールし、OCI CLIコマンドを起動できることを確認します。スクリプトでは、インスタンス・プリンシパルを使用します。詳細は、OCI CLIのインストールを参照してください。
-
リモートVCNピアリングを使用する両方のリージョンでのVCNsの設定:プライマリ・リージョンとスタンバイ・リージョンの両方にVCNsを作成し、リモートVCNピアリングを設定します。これは、クロス・リージョンOracle Data Guardの設定に必要です。詳細は、OCIベースDBネットワーキング構成を参照してください。
-
手動Oracle Data Guard構成: Oracle Data Guard Brokerの要件に基づいて、Oracle Data Guard設定を手動で構成します。詳細は、「Oracle Data Guard BrokerとOracle Clusterware」を参照してください。
-
Jumphostのデータベース・ハンドラ・スクリプトのダウンロード:スクリプトをダウンロードして、両方のリージョンのjumphostに保持する必要があります。
-
Oracle Data Guardデータベース・ハンドラ・スクリプトをData Guard DBハンドラ・スクリプトのリポジトリからダウンロードします。
-
スクリプトを両方のリージョンのjumphostの
/home/opc/ディレクトリ(または他の任意の優先パス)にコピーします。 -
スクリプト・ファイルに実行可能権限があることを確認します。
-
full_stack_dr_non_std_db_handler.pyは、Oracle Data Guardロールtransitions.Theに関連付けられたbashスクリプトの処理を担当するPythonスクリプトで、テンプレートとして提供され、特定の要件にあわせて変更できます。Pythonロール変更スクリプト自体は変更しないでください。
-
-
OCI Vaultおよびシークレットの作成: OCI Vaultを作成し、データベース資格証明をシークレットとして両方のリージョンに格納する必要があります。
- OCIコンソールまたはCLIを使用して、各リージョンにOCI Vaultを作成します。
- ボールト内にシークレットを作成し、データベースの
SYSユーザー・パスワードを格納します。
詳細は、「OCIボールト」を参照してください。
-
ジャンフォストからの接続性チェック: OCI Databaseサービス、OCI VaultサービスおよびOCIコンテナ・インスタンス・サービスがコンピュート・インスタンスからアクセスできることを確認します。これは、OCI Full Stack DRスクリプトがイントロスペクションを実行してプライマリ・リージョンとスタンバイ・リージョンの両方からデータベース詳細をフェッチするため必要です。
-
接続性はジャンフォストから機能する必要があります。jumphostから次のコマンドを実行します。
# Primary Region curl -v telnet://database.<primary_region>.oraclecloud.com:443 curl -v telnet://secrets.vaults.<primary_region>.oci.oraclecloud.com:443 curl -v telnet://iaas.<primary_region>.oraclecloud.com:443 curl -v telnet://compute-containers.<primary_region>.oci.oraclecloud.com:443 # Standby Region curl -v telnet://database.<standby_region>.oraclecloud.com:443 curl -v telnet://secrets.vaults.<standby_region>.oci.oraclecloud.com:443 curl -v telnet://iaas.<standby_region>.oraclecloud.com:443 curl -v telnet://compute-containers.<standby_region>.oci.oraclecloud.com:443ノート:
<primary_region>および<standby_region>を実際のOCIリージョン識別子に置き換えます。
次に例を示します。- アッシュバーンの場合は
us-ashburn-1 us-phoenix-1(フェニックス)
完全なリストは、OCIリージョン識別子を参照してください。
予想される出力:各コマンドは、
Connected to ...のようなメッセージを返す必要があります。接続が失敗した場合は、ジャンフォストのVCN/サブネットのセキュリティ・リスト、ルート表およびサービス・ゲートウェイ構成を確認します。
- アッシュバーンの場合は
-
-
オブジェクト・ストレージ・バケットの作成:プライマリ・リージョンとスタンバイ・リージョンにOCIオブジェクト・ストレージ・バケットを作成し、リカバリ操作中にOCIフル・スタックDRによって生成されたログを格納します(操作ログのログの場所の準備を参照)。
-
データベース・ハンドラ・スクリプトの使用方法およびカスタマイズ:前述のGitHubリポジトリからデータベース・ハンドラ・スクリプトをダウンロードできます。データベース・ハンドラ・スクリプトの使用方法および必須パラメータを次に示します。
図B: DBハンドラ・スクリプトの使用方法サポートされている
--db_operationオプションは次のとおりです。- スイッチオーバー
- SWITCHOVER_PRECHECK
- フェイルオーバー
- FAILOVER_PRECHECK
- CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY
- CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY_PRECHECK
- REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY_PRECHECK
- REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY
OCI Full Stack DRでは、データベース・ハンドラ・スクリプトの実行時に必要なすべてのパラメータが渡されることを想定しています。使いやすさと再現性を高めるために、次のラッパーbashスクリプトを作成することをお薦めします。
- 必須パラメータを指定します。
- 監査およびトラブルシューティングのロギングを有効にします。
サンプル例:データベース・スイッチオーバー・スクリプト(
db-switchover-iad-phx.sh)。#!/bin/bash # Define log file with date and time LOG_FILE="db-switchover-iad-phx-$(date +%Y%m%d_%H%M%S).log" # Define Python script and argument PYTHON_SCRIPT="full_stack_dr_non_std_db_handler.py" ARGUMENT="--database_ocid="ocid1.database.oc1.phx.xxxxxxxx" --vault_ocid="ocid1.vaultsecr et.oc1.phx.xxxxx" --region="us-phoenix-1" --primary_db_unique_name="adghol_site0" --st andby_db_unique_name="adghol_site1" --drpg_ocid="ocid1.drprotectiongroup.oc1.phx.axxxxxxax " --db_operation="SWITCHOVER" --auth_type=INSTANCE_PRINCIPAL" # Execute Python script and log output echo "Executing Python script: $PYTHON_SCRIPT with argument: $ARGUMENT" | tee -a $LOG_FILE /usr/bin/python3 $PYTHON_SCRIPT $ARGUMENT 2>&1 | tee -a $LOG_FILE echo "Execution completed. Logs saved in $LOG_FILE"ノート:このラッパー・スクリプトは、データベース・ハンドラ・スクリプトと同じ場所に格納し、実行可能であることを確認します。OCIDはスクリプトで匿名化されます。
chmod +x db-switchover-wrapper.shリージョン1 (アッシュバーン)で実行されているDBがプライマリで、リージョン2 (フェニックス)がスタンバイであるDR計画スクリプト・マッピング
DR計画タイプ ターゲット・インスタンス スクリプト名 コメント Switchoverscript-phxdb-prechk-switchover-iad-phx.shIADからPHXへの事前チェックDBスイッチオーバー Switchoverscript-phxdb-switchover-iad-phx.shIADからPHXへのDBスイッチオーバー Failoverscript-phxdb-prechk-failover-iad-phx.shIADからPHXへの事前チェックDBフェイルオーバー Failoverscript-phxdb-failover-iad-phx.shIADからPHXへのDBフェイルオーバー Start drillscript-phxdb-prechk-startdrill-phx.shPHXでの事前チェック開始DRドリル Start drillscript-phxdb-startdrill-phx.shPHXでのDRドリルの開始 Stop drillscript-phxdb-prechk-stopdrill-phx.shPHXでの事前チェック停止DRドリル Stop drillscript-phxdb-stopdrill-phx.shPHXでのDRドリルの停止 リージョン2 (フェニックス)で実行されているDBがプライマリで、リージョン2 (アッシュバーン)がスタンバイであるDR計画スクリプト・マッピング
DR計画タイプ ターゲット・インスタンス スクリプト名 コメント Switchoverscript-iaddb-prechk-switchover-phx-iad.shPHXからIADへの事前チェックDBスイッチオーバー Switchoverscript-iaddb-switchover-phx-iad.shPHXからIADへのDBスイッチオーバー Failoverscript-iaddb-prechk-failover-phx-iad.shPHXからIADへの事前チェックDBフェイルオーバー Failoverscript-iaddb-failover-phx-iad.shPHXからIADへのDBフェイルオーバー Start drillscript-iaddb-prechk-startdrill-iad.shIADでの事前チェック開始DRドリル Start drillscript-iaddb-startdrill-iad.shIADでのDRドリルの開始 Stop drillscript-iaddb-prechk-stopdrill-iad.shIADでのDRドリルの停止の事前確認 Stop drillscript-iaddb-stopdrill-iad.shIADでのDRドリルの停止
ノート:明確さと使いやすさを向上させるために、特定のDR計画タイプおよびリージョンに合せた複数のbashラッパー・スクリプトを作成しました。これらのスクリプトは、データベース・ロールの推移に共有Pythonスクリプトを使用します。このスクリプトは、独自の要件および環境に応じてカスタマイズできます。
タスク1: Oracle Data Guard構成の確認およびタグの更新
このタスクでは、Oracle Base Database Serviceを使用して、Oracle Data Guardの手動構成を確認します。データベースに*タグ**を作成して、非標準のOracle Data Guard設定を示します。これにより、OCI Full Stack DRは、組込みの計画グループに依存することなくDR計画を作成できます。
-
OCIコンソールにログインし、「Oracle Database」に移動して「Oracle Base Database Service」をクリックします。
-
OCIリージョン・コンテキストがリージョン1 (アッシュバーン)に設定されていることを確認します。
-
DBシステムを選択します。この例では、
adghol0-12345です。
図1.1:リージョン1のDBシステム -
「データベース」タブに移動し、データベース
adgholを選択します。
図1.2:リージョン1のデータベース -
「Data Guardステータス」が「使用不可」であることを確認します。これにより、OCIコンソールを使用してOracle Data Guardが設定されていないことが確認されます。
図1.3:リージョン1のData Guardコントロール・プレーンのステータス -
「タグ」タブにナビゲートし、フリーフォーム・タグを作成します。設定に基づいて、
Peer DB OCIDの値を置換する必要があります。この例では、フェニックス・リージョンのデータベースOCIDを追加する必要があります。タグ・キー Value FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
図1.4:リージョン1のDBタグ -
「DBシステム」に移動して、「ノード」を選択します。
図1.5:リージョン1のDBノード注意:これはRAC以外の設定であるため、1つのデータベース・ノードが表示されます。これがOracle Real Application Clusters設定の場合、2つのノードが表示されます。
-
データベース・ノードに接続し、
oracleユーザーに切り替えます。Oracle Data Guard Brokerを使用して、ロールを確認します。dgmgrl show configuration
図1.6:リージョン1のData Guardステータス予想される出力:
adghol_site0は、プライマリ・データベースとして表示されます。adghol_site1は、フィジカル・スタンバイ・データベースとして表示されます。Configuration Statusは「成功」と表示されます。
エラーがあり、データベース・ロールが予期したとおりでない場合は、Oracle Data Guardのドキュメントを使用してエラーを修正する必要があります。
-
OCIコンソールにログインし、「Oracle Database」に移動して「Oracle Base Database Service」をクリックします。
-
OCIリージョン・コンテキストがリージョン2 (フェニックス)に設定されていることを確認します。
-
DBシステムを選択します。この例では、
adghol1-12345です
図1.7:リージョン2のDBシステム -
「データベース」タブに移動し、データベース
adgholを選択します。
図1.8:リージョン2のデータベース -
「Data Guardステータス」が「使用不可」であることを確認します。これにより、OCIコンソールを使用してOracle Data Guardが設定されていないことが確認されます。
図1.9:リージョン2のData Guardコントロール・プレーンのステータス -
「タグ」タブにナビゲートし、フリーフォーム・タグを作成します。設定に基づいて、
Peer DB OCIDの値を置換する必要があります。この例では、アッシュバーン・リージョンのデータベースOCIDを追加する必要があります。タグ・キー Value FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
図1.10:リージョン2のDBタグ -
ステップ7と8を繰り返しますが、今回はリージョン2 (スタンバイ・リージョン)のデータベース・ノードに接続します。
- Region 2データベース・ノードで
oracleユーザーとしてログインしていることを確認します。 - ステップ8と同様に、
dgmgrlを使用してOracle Data Guardロールを確認します。
- Region 2データベース・ノードで
タスク2: DR保護グループの作成および関連付け
このアプリケーション・スタックの保護グループがまだ存在しない場合は、リージョン1およびリージョン2でDR保護グループを作成します。
タスク2.1: リージョン1での保護グループの作成
-
図2.1に示すように、OCIコンソールに移動し、「DR保護グループ」に移動します。
- OCIリージョン・コンテキストがリージョン1 (アッシュバーン)に設定されていることを確認します。
- 「移行とディザスタ・リカバリ」をクリックします。
- 「DR保護グループ」をクリックします。
図2.1: DR保護グループに移動します。 -
図2.2に示すように、リージョン1に基本的なDR保護グループを作成します。ピア、ロールおよびメンバーは、後のステップで割り当てられます。
- DR保護グループを作成するコンパートメントを選択します。
- 「DR保護グループの作成」をクリックします。
- DR保護グループにはわかりやすい名前を使用します。
- OCI Full Stack DRログの場合は、「OCI Object Storageバケット」を選択します。
- 「作成」をクリックします。
図2.2:リージョン1でDR保護グループを作成するために必要なパラメータ
タスク2.2: リージョン2での保護グループの作成
-
OCIコンソールに移動し、図2.3に示すように「DR保護グループ」に移動します。
- OCIリージョン・コンテキストがリージョン2 (フェニックス)に設定されていることを確認します。
- 「移行とディザスタ・リカバリ」をクリックします。
- 「DR保護グループ」をクリックします。
図2.3: DR保護グループに移動します。 -
図2.4に示すように、リージョン2で基本的なDR保護グループを作成します。ピア、ロールおよびメンバーは、後のステップで割り当てられます。
- DR保護グループを作成するコンパートメントを選択します。
- 「DR保護グループの作成」をクリックします。
- DRPGにわかりやすい名前を使用します。
- OCI Full Stack DRログの場合は、「OCI Object Storageバケット」を選択します。
- 「作成」をクリックします。
図2.4:リージョン2でDR保護グループを作成するために必要なパラメータ
タスク2.3: リージョン1およびリージョン2での保護グループの関連付け
各リージョンのDRPGを互いのピアとして関連付け、プライマリおよびスタンバイのピア・ロールを割り当てます。プライマリおよびスタンバイのロールは、DR操作/DR計画実行の一部としてOCI Full Stack DRによって自動的に変更されます。ロールをいつでも手動で管理する必要はありません。
-
「DR保護グループの詳細」ページに移動します。
- OCIリージョン・コンテキストがリージョン1 (アッシュバーン)に設定されていることを確認します。
- 「アクション」ドロップダウン・メニューをクリックし、「関連付け」をクリックしてプロセスを開始します。
図2.5: DRPGアソシエーションの開始 -
次の情報を入力します
- ロール: 「プライマリ」ロールを選択します。OCI Full Stack DRは、スタンバイ・ロールをリージョン2に自動的に割り当てます。
- ピア・リージョン:他のDR保護グループが作成されたリージョン2 (フェニックス)を選択します。
- ピアDR保護システム・グループ:作成されたピアDR保護システムを選択します。
- 「関連付け」をクリックします。
図2.6: DRPGを関連付けるために必要なパラメータ
OCI Full Stack DRは、アソシエーションが完了すると、次のイメージに示すように表示されます。
- 現在のプライマリ・ピアDRPGはアッシュバーン(リージョン1)です。
- 現在のスタンバイ・ピアDRPGはフェニックス(リージョン2)です。
図2.7:個々のDRPGの観点からピア関係を表示しています。
コンテキスト/ビューがグローバルな観点から見ると、次の図に示すようにすべてのDR保護グループを示す場合でも、同じ情報を確認できます。
- 現在のプライマリ・ピアDRPGはアッシュバーン(リージョン1)です。
- 現在のスタンバイ・ピアDRPGはフェニックス(リージョン2)です。
図2.8:グローバルDRPGの観点からピア関係を表示しています
タスク3: DR保護グループへのメンバーの追加
このタスクでは、次のOCIリソースをリージョン1のプライマリDR保護グループに追加します。
- データベース・ハンドラ・スクリプトをホストするOCIコンピュート・インスタンスは、移動しないVMとして追加されます。
- プライマリDBシステム。
タスク3.1: リージョン1のDR保護グループへのメンバーの追加
-
次の図に示すように、リージョン1でDR保護グループを選択します。
- OCIリージョン・コンテキストがリージョン1 (アッシュバーン)であることを確認します。
- リージョン1でDR抗議グループを選択します。
- 「メンバー」タブにナビゲートします。
- 「メンバーの管理」をクリックします。
図3.1:リージョン1のDR保護グループへのメンバーの追加を開始する方法 -
データベース・ハンドラ・スクリプトのコンピュート・インスタンスを追加します。
- 「メンバーの追加」を選択します
- メンバーのリソース・タイプとして、「コンピュート」の下の「インスタンス」を選択します。
- データベース・ハンドラ・スクリプトをホストするコンピュート・インスタンスを選択します。
- 「非移動インスタンス」を選択します。
- 「追加」をクリックします。
図3.2:コンピュート・インスタンスがリージョン1のDRPGに追加されました追加されたコンピュート・インスタンスを確認します。
図3.2:コンピュート・インスタンスがリージョン1のDRPGに追加されました -
プライマリ・データベースを追加します。「メンバーの追加」をクリックします
- 「メンバーの追加」を選択します
- 「Oracle Database」→「データベース(Base DB、ExaDB-D、ExaCC、ExaXS)」をメンバー「リソース・タイプ」として選択します。
- 「データベース・タイプ」として「Oracleベース・データベース」を選択します。
- 「データベース・システム」を選択します。
- 「データベース・ホーム」を選択します。
- 「データベース」を選択します。
- 「データベース・パスワード・シークレット」を選択します
- 「追加」をクリックします
図3.3:プライマリDBの追加に必要なパラメータ追加したプライマリ・データベースを確認し、両方のメンバーを公開します。
図3.4:プライマリDBがリージョン1のDRPGに追加されました
図3.5:リージョン1のDRPGへのメンバーの公開数分後、両方のメンバーがメンバーの下で使用可能になります。
図3.6:リージョン1のDRPGに追加されたメンバー
タスク3.2: リージョン2のDR保護グループへのメンバーの追加
-
次の図に示すように、リージョン2でDR保護グループを選択します。
- OCIリージョン・コンテキストがリージョン2 (フェニックス)であることを確認します。
- リージョン2でDR抗議グループを選択します。
- 「メンバー」タブにナビゲートします。
- 「メンバーの管理」をクリックします。
図3.7:リージョン2のDR保護グループへのメンバーの追加を開始する方法 -
データベース・ハンドラ・スクリプトのコンピュート・インスタンスを追加します。
- 「メンバーの追加」を選択します
- メンバーのリソース・タイプとして、「コンピュート」の下の「インスタンス」を選択します。
- データベース・ハンドラ・スクリプトをホストするコンピュート・インスタンスを選択します。
- 「非移動インスタンス」を選択します。
- 「追加」をクリックします。
図3.8:コンピュート・インスタンスをリージョン2のDRPGに追加追加されたコンピュート・インスタンスを確認します。
図3.9:コンピュート・インスタンスがリージョン2のDRPGに追加されました -
スタンバイデータベースを追加します。「メンバーの追加」をクリックします
- 「メンバーの追加」を選択します
- 「Oracle Database」→「データベース(Base DB、ExaDB-D、ExaCC、ExaXS)」をメンバー「リソース・タイプ」として選択します。
- 「データベース・タイプ」として「Oracleベース・データベース」を選択します。
- 「データベース・システム」を選択します。
- 「データベース・ホーム」を選択します。
- 「データベース」を選択します。
- 「データベース・パスワード・シークレット」を選択します
- 「追加」をクリックします
図3.10:スタンバイDBを追加するために必要なパラメータ追加したスタンバイ・データベースを確認し、両方のメンバーを公開します。
図3.11:スタンバイDBがリージョン2のDRPGに追加されました
図3.12:リージョン2のDRPGへのメンバーの公開数分後、両方のメンバーがメンバーの下で使用可能になります。
図3.13:リージョン2のDRPGに追加されたメンバー
タスク4: リージョン2でのDR計画の作成およびカスタマイズ
このタスクでは、リージョン2 (フェニックス)のスタンバイDR保護グループに関連付けられた初期スイッチオーバー、フェイルオーバーおよびドリルの開始計画を作成します。
これらの計画は、ワークロードをプライマリ・リージョン(リージョン1)からスタンバイ・リージョン(リージョン2)にシームレスに移行するように設計されています。
- OCI Full Stack DRでは、以前に追加したメンバー・リソースに基づいて、これらのプランに組込みのステップが事前移入されます。
- ただし、このチュートリアルでは、Oracle Data Guardは(データベース・コントロール・プレーンの外部で)手動で構成されているため、Oracleデータベース・ロールの推移では組込みプラン・グループを使用できません。
- したがって、次のことを行います。
- ユーザー定義計画グループを使用してDR計画をカスタマイズします。
- 各プラン・タイプ(スイッチオーバー、フェイルオーバー、ドリル)でロール推移を処理するためのデータベース・ハンドラ・スクリプトを追加します。
DR計画は、スタンバイ・ロールを保持する保護グループに常に作成されます。
リージョン2 (フェニックス)は現在スタンバイであるため、ここではすべての初期DR計画を作成します。
タスク4.1: DR計画の作成
-
リージョン2 (フェニックス)でDRPGを選択してDR計画を作成します
- OCIリージョン・コンテキストがリージョン2 (フェニックス)であることを確認します。
- リージョン2でスタンバイDRPGを選択します。
- 「プラン」タブにナビゲートします。
- 「計画の作成」をクリックします
図4.1:リージョン2での基本的なDR計画の作成を開始する方法 -
スイッチオーバー計画を作成します。
- スイッチオーバー・プランの単純でわかりやすい名前を入力します。名前はできるだけ短くする必要がありますが、危機時の混乱や人的ミスを軽減するために一目で理解しやすい名前にする必要があります。
- 「プラン・タイプ」に「スイッチオーバー(計画済)」を選択します。
図4.2: DRスイッチオーバー計画の作成に必要なパラメータ -
フェイルオーバー計画を作成します。
次の図に示すように、同じプロセスに従って基本的なフェイルオーバー計画を作成します。
- 単純で意味のあるフェイルオーバー計画の「名前」を入力します。
- 「プラン・タイプ」に「フェイルオーバー(計画外)」を選択します。
図4.3: DRフェイルオーバー計画の作成に必要なパラメータ -
開始ドリル計画を作成します。
次の図に示すように、同じプロセスに従って基本的なフェイルオーバー計画を作成します。
- 開始ドリル・プランの「名前」に単純でわかりやすい名前を入力します。
- 「プラン・タイプ」に「フェイルオーバー(計画外)」を選択します。
図4.4: DRスタート・ドリル計画の作成に必要なパラメータ次の図に示すように、リージョン2のスタンバイDR保護グループに3つのDR計画が含まれるようになりました。これらは、リージョン1からリージョン2へのワークロードの移行を処理します。同様の計画をリージョン1で作成し、後のタスクでワークロードをリージョン2からリージョン1に戻します。
図4.5:続行する前にリージョン2に存在する必要がある3つのDR計画を表示しています
ノート: OCI Full Stack DRでは、開始ドリル計画が正常に実行され、DR保護グループが非アクティブ(ドリル進行中)状態になった後にのみ、ストップ・ドリル計画を作成できます。
タスク4.2: ユーザー定義計画グループを使用したDR計画のカスタマイズ
タスク4.1で作成されたDR計画では、Oracle Data Guard設定が手動で行われたため、Oracleデータベース・ロール遷移の組込みプラン・グループは生成されません。
このタスクでは、次のことを行います。
- カスタムのユーザー定義DR計画グループを追加する方法を学習します。
- Oracle Data Guardロールの推移を管理するために必要なステップを定義します。
これにより、DR計画で、手動で構成されたData Guard環境を含むフェイルオーバー、スイッチオーバーおよびドリル・シナリオを完全に処理できます。
-
タスク4.1で作成したスイッチオーバー・プランにナビゲートし、「プラン・グループ」を選択します。
図4.6:リージョン2でのスイッチオーバー計画のカスタマイズを開始する方法 -
まず、カスタムのユーザー定義のDR計画グループを追加して、Oracleデータベース・ロールの変更の特定のニーズに合わせてDRワークフローを調整します。このプラン・グループは、リージョン1のジャンフォスト
script-iadから必要なスクリプトを起動します。 -
DBスイッチオーバーにユーザー定義プラン・グループを追加します。
- 「グループの追加」をクリックします。
- 単純でわかりやすいプラン・グループの名前を入力します。この例では、
DB Switchoverを使用します。 -
「ステップの追加」をクリックしてダイアログを開き、DBロール変更を実行するスクリプトを指定します。
図4.7: dbロール変更を実行するプラン・グループを作成するためのパラメータ「プラン・グループの追加」ステップで、次の情報を入力します。
- 単純でわかりやすいステップ名を入力します。この例では、
DB Switchover from IAD to PHXを使用します。 - このステップが実行されるインスタンスを含む「インスタンス・リージョン」を選択します。この例では、スクリプトがリージョン2のジャンフォストで実行されるため、
Phoenixを選択します。 - 「ローカル・スクリプトの実行」を選択します。
- 「ターゲット・インスタンス」を選択します。これは、リージョン2のジャンフォスト
script-phxです。 - 「スクリプト・パラメータ」に、パラメータを含むスクリプトのフルパスを入力します。たとえば:
/home/opc/db-switchover-iad-phx.sh。 - 「ユーザーとして実行」に、
opcと入力します。 -
「ステップの追加」をクリックします。
図4.8: dbロール変更のステップを追加するパラメータ -
追加されたステップを確認します。
図4.9: dbロール変更のために追加されました -
「追加」をクリックします。
図4.10: DBロール変更グループの追加プラン・グループが現在使用可能になります。
図4.11: DBスイッチオーバー・プラン・グループ
-
スイッチオーバーDR計画にユーザー定義事前チェック・ステップを追加します。ユーザー定義の事前チェックは、組込みの事前チェック・ステップとともに実行されます。
-
「プラン・グループ」に移動し、「事前チェック作成済」の前面にある「…」をクリックして、「ユーザー定義事前チェックの追加」を選択します。
図4.12: DBスイッチオーバーのカスタム事前チェックを追加します - 単純でわかりやすいステップ名を入力します。この例では、
DB Switchover precheck from IAD to PHXを使用します。 - このステップが実行されるインスタンスを含む「インスタンス・リージョン」を選択します。この例では、スクリプトがリージョン2のジャンフォストで実行されるため、
Phoenixを選択します。 - 「ローカル・スクリプトの実行」を選択します。
- 「ターゲット・インスタンス」を選択します。これは、リージョンのジャンフォスト
script-phxです。 - 「スクリプト・パラメータ」に、パラメータを含むスクリプトのフルパスを入力します。たとえば:
/home/opc/db-prechk-switchover-iad-phx.sh。 - 「ユーザーとして実行」に、
opcと入力します。 -
「ステップの追加」をクリックします。
図4.13: dbロール変更のカスタム事前チェック・ステップを追加するパラメータ -
追加されたステップを確認します。
図4.14: dbロール変更のカスタム事前チェック・ステップを追加しましたスイッチオーバー・プランのカスタマイズが正常に完了しました。
図4.15:最終スイッチオーバー計画
-
-
同様に、フェイルオーバー、開始ドリル・プランをカスタマイズし、前提条件(DBハンドラ・スクリプトの使用方法およびカスタマイズ)で使用可能な表形式の詳細を使用して、正しいターゲット・インスタンス、スクリプトを使用します。
-
ユーザー定義プラン・グループおよびカスタム事前チェック・ステップが追加されると、「フェイルオーバー」および「ドリルの開始」プランは次のようになります。
図4.16:最終フェイルオーバー計画
図4.17:最終開始ドリル計画
タスク5: リージョン2でのDR計画の事前チェックの実行
スイッチオーバー、フェイルオーバー、開始ドリルDR計画がスタンバイ・リージョン2に正常に作成されました。これらの計画により、OCI Full Stack DRは、リージョン1からリージョン2にワークロードを移行したり、DRドリルを実行したりできます。後続のタスクでは、DR計画に対する事前チェックを実行して、準備状況を確認し、移行プロセスを検証します。
タスク5.1: スイッチオーバー計画の事前チェックの開始
スイッチオーバーDR計画の事前チェックを実行します。
- リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
- リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
- 「処理」ドロップダウン・メニューをクリックします。
- 「事前確認の実行」をクリックします。
- 「IADからPHXへのDBスイッチオーバー」プランを選択します。
- 計画実行名を入力します(入力しない場合、自動生成されます)。
-
「事前確認の実行」をクリックします。
図5.1:スイッチオーバー計画の事前チェックを実行する方法を示しています。 -
「計画実行」タブから「成功」ステータスを確認します。
図5.2:スイッチオーバー計画の「完了」事前チェックの表示
タスク5.2: フェイルオーバー計画の事前チェックの開始
フェイルオーバーDR計画の事前チェックを実行します。
- リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
- リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
- 「処理」ドロップダウン・メニューをクリックします。
- 「事前確認の実行」をクリックします。
- 「IADからPHXへのDBフェイルオーバー」プランを選択します。
- 計画実行名を入力します(入力しない場合、自動生成されます)。
-
「事前確認の実行」をクリックします。
図5.3:フェイルオーバー計画の事前チェックの実行方法を示します。 -
「計画実行」タブから「成功」ステータスを確認します。
図5.4:フェイルオーバー計画の完了済事前チェックの表示
タスク5.3: ドリル計画の開始の事前チェックの開始
開始ドリルDR計画の事前チェックを実行します。
- リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
- リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
- 「処理」ドロップダウン・メニューをクリックします。
- 「事前確認の実行」をクリックします。
- 「PHXでドリルを開始」プランを選択します。
- 計画実行名を入力します(入力しない場合、自動生成されます)。
-
「事前確認の実行」をクリックします。
図5.5:開始ドリル・プランの事前チェックの実行方法を示しています -
「計画実行」タブから「成功」ステータスを確認します。
図5.6:フェイルオーバー計画の完了済事前チェックの表示
タスク6: リージョン2でのスイッチオーバー計画の実行
スイッチオーバーDR計画を実行して、リージョン1 (プライマリ)からリージョン2 (スタンバイ)へのOracleデータベース・ロールの移行を開始します。
- リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
- リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
- 「処理」ドロップダウン・メニューをクリックします。
-
「計画の実行」をクリックします。
図6.1:スイッチオーバー計画の実行方法を示します。 - 「IADからPHXへのDBスイッチオーバー」プランを選択します。
- このタスクでは、リージョン2でスイッチオーバー計画が実行されます。
- 事前チェックはすでにタスク5で実行されているため、「事前チェックの有効化」の選択を解除します。再度実行する場合は、有効にできます。
- 計画実行名を入力します(入力しない場合、自動生成されます)。
-
「計画の実行」をクリックします。
図6.2:スイッチオーバー計画の実行方法を示しています。 -
「計画実行」タブにナビゲートし、スイッチオーバー計画実行を選択します。
図6.3:進行中のスイッチオーバー計画の表示 -
完全なワークロードがリージョン1からリージョン2に完全に移行されるまで、スイッチオーバー計画を監視すること。スイッチオーバー計画の実行は約8分で正常に完了しました。
図6.4:完了したスイッチオーバー計画の実行を表示しています。 -
タスク1.8で提供される詳細を使用して、データベース・ロールのステータスを確認できます。
図6.5:スイッチオーバー後のData Guardステータス予想される出力:
adghol_site1は、プライマリ・データベースとして表示されます。adghol_site0は、フィジカル・スタンバイ・データベースとして表示されます。Configuration Statusは「成功」と表示されます。
-
DR保護グループのロールがスワップされ、リージョン2は「プライマリ」として表示され、リージョン1は「スタンバイ」として表示されます。
図6.6:スイッチオーバー後のDR保護ロールの変更
タスク7: リージョン1でのDR計画の作成およびカスタマイズ
リージョン1からリージョン2へのスイッチオーバーDR計画が正常に実行されたことで、リージョン2はプライマリのロールを引き受け、リージョン1はスタンバイ・ロールに移行しました。
タスク4で説明した同じアプローチに従って、リージョン1のDR保護グループ内でスイッチオーバー、フェイルオーバーおよびDRドリル・プランを作成およびカスタマイズします。このプランはスタンバイ・ピア・リージョンとして機能します。
これらのプランがユーザー定義プラン・グループおよびカスタム事前チェック・ステップで作成および更新されると、次のイメージのようになります。
図7.1:リージョン1に作成されたDR計画
図7.2:リージョン1のスイッチオーバー計画
図7.3 :リージョン1のフェイルオーバー計画
図7.4 :リージョン1でドリル・プランを開始します。
必要に応じて、スイッチオーバー・プランを実行して、リージョン1のデータベースをプライマリ・ロールに戻し、リージョン2のデータベースがスタンバイになります。
同様に、スタート・ドリル計画を実行してディザスタ・リカバリ・イベントをシミュレートしてから、ストップ・ドリル計画を作成して実行し、システムを元の状態に戻すことができます。
-
開始ドリル計画中に、データベースはフィジカル・スタンバイからスナップショット・スタンバイに変換されます。これにより、アプリケーションは、テスト目的でスタンバイ・データベースに一時的にアクセスして対話できます。
-
ストップ・ドリル計画中に、データベースはスナップショット・スタンバイからフィジカル・スタンバイに変換され、プライマリ・データベースと再同期されます。
次のステップ
詳細は、「関連リンク」の項で、OCI Full Stack DR、Oracle Base Database Service、Oracle Data Guardのドキュメントを参照してください。
関連リンク
-
Oracle Cloud Infrastructure (OCI) Full Stack Disaster Recoveryドキュメンテーション
-
Oracle Live Labs: Full Stack Disaster Recoveryを使用したOCI上のディザスタ・リカバリの自動化
-
#full-stack-drスラックチャネルに参加する
確認
- 作成者 - Suraj Ramesh (OCI Full Stack DRのシニア・プリンシパル・プロダクト・マネージャー)
- 貢献者 - Santhosh Shankaramanchi (OCI Full Stack DRのテクニカル・スタッフ・コンサルティング・メンバー)
その他の学習リソース
docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Automate Role Changes for Manually Configured Oracle Data Guard in OCI Database Services Using OCI Full Stack DR and Custom Scripts
G45727-03