Oracle Cloud: Cross-Region Autonomous Data Guard on VCN を構成してみてみた

Oracle Autonomous Database (ADB)では、Autonomous Data Guardと呼ばれる機能を使用して、スタンバイ(ピア)データベースを有効にし、Autonomous Databaseインスタンスにデータ保護およびディザスタ・リカバリを提供します。 
ADB は、Oracle Database の Multitenantアーキテクチャと Oracle Data Guard 機能を組み合わせて利用することで、自動化された高い可用性と回復力を可能な限り提供します。
ということで、東京-大阪間で Cross-Region Autonomous Data Guard を 構成してみてみます。

#■ 構成
![ADG-RPC01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0b472af9-6e31-4e5b-f387-5e7ae45d787a.jpeg)



#■ 事前準備
On-Premises の ADB Client が 東京と大阪の ADB へ FQDN でアクセスできるように Remote Peering, Private DNS, Service Gateway,Route Table, Security List, Network Security Group, VPN 等を設定しておきます

##● Remote Peering と VPN接続 設定
・[DRGで東京リージョンを経由して、オンプレミスと 大阪リージョンを接続してみてみた](https://qiita.com/shirok/items/90cff318816fbf2a802d)
・[Oracle Cloud: リージョン間を Remote VCN Peering してみてみた](https://qiita.com/shirok/items/192674aa6e903ea6694a)

##● Private DNS 設定
・[Oracle Cloud: オンプレミスとOCIをVPN接続してPrivate DNSで名前解決してみてみた](https://qiita.com/shirok/items/ac97cf48154c59c9a87e)
・[Private DNSで PeeringしたVCNどうしホスト名(FQDN)で通信できるようにしてみてみた](https://qiita.com/shirok/items/4197e09dc2bfd7db82f3)


#■ Autonomous Database 作成
前提条件などDocumentを参考に設定
・[Autonomous Database: プライベート・エンドポイントを使用するAutonomous Database](https://docs.oracle.com/ja-jp/iaas/Content/Database/Concepts/adbsprivateaccess.htm)
・[プライベート・エンドポイントで必要なネットワークの前提条件](https://docs.oracle.com/ja-jp/iaas/Content/Database/Concepts/adbsprivateaccess.htm)

1) OCI コンソール
[Oracle Database] > [Autonomous Database]をクリック
![00_ADB-Tokyo01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/cb836f7a-552e-04a5-975e-e53666ef2fcc.jpeg)


2) Autonomous Database画面
[Autonomous Database]をクリック
![01_ADB作成(日本語)01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d618ea99-c77e-46ac-e00b-9d45333fd8bd.jpeg)


3) Autonomous Databaseの作成画面
以下内容を設定し、[Autonomous Database の作成]をクリック

	・表示名: 任意の名前を設定
	・データベース名: 任意の名前を設定 ＊英字と数字のみを含めて、英字で始める必要があります。最大14文字です。
	・ワークロード・タイプの選択: 任意の任意の名前を設定を設定
	・デプロイメント・タイプの選択: [共有インフラストラクチャ]を選択
	・データベース・バージョンの選択: 任意のバージョンを設定
	・OCPU 数: 任意のOCPU数を設定
	・自動スケーリング: 任意に設定
	・ストレージ(TB): 必要なストレージ容量を設定
	・ユーザー名: ADMIN
	・パスワード: ADMINパスワードを設定
	・アクセスタイプ: ここではVCN内に配置するため[仮想クラウド・ネットワーク]を設定
	・ライセンス・タイプ: ライセンスBOYLでは無い場合は、[ライセンス込み]を設定
	・暗号化キー: 顧客管理キーを別途使用する場合は、[顧客管理キーを使用した暗号化]を選択

![01_ADB作成(日本語)02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/7548b22f-ccb6-308a-ecf0-588582a4acce.jpeg)


4) 作成完了
![01_ADB作成(日本語)05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3fa213e3-db4d-da2f-717f-751edf6523a7.jpeg)



#■ Autonomous Data Guard有効化

1) Autonomous Data Guard 画面
リソース欄 > Autonomous Data Guardを選択し、[スタンバイ・データベースの追加]をクリック
![01_DG設定01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/962f6e94-3b69-a5ba-abf7-61f8bdddaa4b.jpeg)


2) スタンバイ・データベースの追加
以下内容を設定し、[Autonomous Database の作成]をクリック

	・リージョン: Standby Databaseのリーションを千駄ｋジュ
	・コンパートメントの選択: Standby Databaseのコンパートメントを選択
	・仮想クラウド・ネットワーク: Standby DatabaseのVCNを選択
	・サブネット: Standby Database の Subnet を選択
	・ホスト名接頭辞: 任意の名前を設定
	・ネットワーク・セキュリティ・グループ(NSG): Standby Database のNSGを選択

![01_DG設定02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/01b78b4d-6660-30e5-2689-78f6dc297cef.jpeg)

3) 追加中
![01_DG設定03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e9493003-e838-e8ca-5bc3-c5ecd372ec27.jpeg)


4) スタンバイ・データベース追加完了
Cross-Region Standby を有効にすると、リモートリージョンに作成されたスタンバイデータベースの表示名はプライマリデータベースと同じになり、拡張子は「_Remote」になります。 「リソース」の下の[Autonomous Data Guard]をクリックすると、「Peer Autonomous Database」列の下に、スタンバイ・データベースの表示名とスタンバイ・データベースへのリンクが表示されます。 
![01_DG設定04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d55e193e-64aa-9096-07df-fa14a73d8f1c.jpeg)


5) スタンバイ・データベース追加時間確認
リソース > [作業リクエスト]クリックから、Enable Autonomous Data Guardをクリック
![02_DG設定-作業リクエスト05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c49a1123-fb8b-6df8-2396-8ab1b01561e0.jpeg)



6) 大阪側 スタンバイ・データベース確認
![03_大阪Standby01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/741591e8-9155-5552-d114-5ea800a367b3.jpeg)

 

#■ Autonomous Database への Clientアクセス
##● Download the Client Credentials
Autonomous Databaseに接続するための資格証明のzipファイルを作成したDatabase画面からダウンロードします

1) Autonomous Database画面
OCIコンソールから、作成したAutonomous Database画面にある [DB接続]をクリック
![01_DB接続02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d4dfdb28-fb7a-0b0f-8e50-20ecaba79345.jpeg)

2) クライアント資格証明(ウォレット)のダウンロード画面
[ウォレットのダウンロード]ボタンをクリックして、Client Credentialsをダウンロード
![01_DB接続02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4f82a2c0-3f09-47fc-66c9-700c05544c3d.jpeg)


##● Client PC設定
1) 環境変数設定

```shell
export ORACLE_HOME=/home/opc/oracle/instantclient_19_3
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME
```

2) ダウンロードしたライアント資格証明(ウォレット)ZIPファイル配置
$TNS_ADMINディレクトリへZIPファイル配置して回答

```shell
[user@onp-inst01 ~]$ cd $ORACLE_HOME/netwok/admin
[user@onp-inst01 admin]$ ls -l
	total 128
	-rw-r--r--@ 1 shiro  staff   3074  9 19 14:18 README
	-rw-rw-rw-@ 1 shiro  staff  21677  9 19 23:18 Wallet_adb01.zip
	-rw-r--r--@ 1 shiro  staff   6701  9 19 14:18 cwallet.sso
	-rw-r--r--@ 1 shiro  staff   6656  9 19 14:18 ewallet.p12
	-rw-r--r--@ 1 shiro  staff   3190  9 19 14:18 keystore.jks
	-rw-r--r--@ 1 shiro  staff    691  9 19 14:18 ojdbc.properties
	-rw-r--r--@ 1 shiro  staff    133  9 19 23:49 sqlnet.ora
	-rw-r--r--@ 1 shiro  staff   2326  9 19 14:18 tnsnames.ora
	-rw-r--r--@ 1 shiro  staff   3378  9 19 14:18 truststore.jks
```

3) tnsnames.ora確認
description項目が２つあり、東京ADBへ接続できなかった場合大阪ADBへ接続できるよう以下東京と大阪の ADB へ接続する記述がされています。
　　東京用: adbtokyo.adb.ap-tokyo-1.oraclecloud.com
　　大阪用: adbosaka.adb.ap-osaka-1.oraclecloud.com 


```shell
[user@onp-inst01 admin]$ cat tnsnames.ora
	adb01_high = (description_list= (failover=on) (load_balance=off) 
		(description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adbtokyo.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=sya6vphk3pzlkhq_adb01_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com, OU=Oracle ADB TOKYO, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) 
		(description= (retry_count=15)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adbosaka.adb.ap-osaka-1.oraclecloud.com))(connect_data=(service_name=sya6vphk3pzlkhq_adb01_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-osaka-1.oraclecloud.com, OU=Oracle ADB OSAKA, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))))
```

##● Client PC の DNS 設定
Clientが東京と大阪のADBへFQDN接続できるようOCI Private DNSを使用するように設定

1) Client PC へ OCI Private DNSのアドレスを登録
![02_MACBook設定01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b96d90a6-c9b8-5535-5882-5ff0030ebd8b.jpeg)


2) DNS設定確認: ADB 東京と大阪 名前解決確認
On-Premises から 東京と大阪のADBのFQDNでアクセスできることを確認
 
・On-Premises -> Tokyo 名前解決確認

```shell
[user@onp-inst01 ~]$ nslookup adbtokyo.adb.ap-tokyo-1.oraclecloud.com
	Server:		10.10.0.251
	Address:	10.10.0.251#53

	Name:	adbtokyo.adb.ap-tokyo-1.oraclecloud.com
	Address: 10.10.0.19
```

・On-Premises -> Osaka 名前解決確認

```shell
[user@onp-inst01 ~]$ nslookup adbosaka.adb.ap-osaka-1.oraclecloud.com
	Server:		10.10.0.251
	Address:	10.10.0.251#53

	Name:	adbosaka.adb.ap-osaka-1.oraclecloud.com
	Address: 10.20.0.19
```

##● Client 接続確認

```shell
[user@onp-inst01 ~]$ sqlplus admin/password@adb01_high

	SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 20 00:21:29 2021
	Version 19.3.0.0.0

	Copyright (c) 1982, 2019, Oracle.  All rights reserved.

	Last Successful login time: Mon Sep 20 2021 00:17:42 +09:00

	Connected to:
	Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
	Version 19.12.0.1.0
```



#■ Switchover
##● スタンバイ Autonomous Database 画面
1) リソースからAutonomous Data Guardをクリック
2) ピアAutonomous Data Guard右端にある[アクション]メニュー > [スイッチオーバー]をクリック
![02_大阪画面SwitchOver(Tokyo->Osaka)01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8bbe9680-fa49-db63-80fe-7e81ad9aee2d.jpeg)


##● スタンバイへのスイッチオーバーの確認画面
1) データベース名を入力してスイッチオーバーすることを確認
2) [スタンバイへの手動スイッチオーバーの確認]をクリックして、スイッチオーバーを実行
![02_大阪画面SwitchOver(Tokyo->Osaka)02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8aa68274-25aa-64a5-21a8-1491e63b0be6.jpeg)


##● スイッチオーバー中
![02_大阪画面SwitchOver(Tokyo->Osaka)03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/11927a0a-241e-4682-98b6-ef9264f47482.jpeg)



##● スイッチオーバー完了画面
1) Autonomous Data Guardロール項目: ロールがプライマリへ変更されたことを確認
2) Autonomous Data Guard欄: ピア・Autonomous Databaseのロールがスタンバイへ変更されたことを確認
![02_大阪画面SwitchOver(Tokyo->Osaka)04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/ae2741e8-063c-acb4-dd87-6c746b0a573f.jpeg)



#■ Failover
・Autonomous Data Guardがローカル・スタンバイ・データベースに自動的にフェイルオーバーできない場合、ローカル・スタンバイ・データベースが使用可能な場合は、手動フェイルオーバーを実行してローカル・スタンバイ・データベースをプライマリ・データベースにすることができます。
・リージョン間のスタンバイが使用可能な場合は、スイッチオーバーを実行して、リージョン間のスタンバイ・データベースをプライマリ・データベースにし、スイッチオーバーが失敗した場合、リージョン間のスタンバイへの手動フェイルオーバーを開始できます。
・プライマリ・データベースが使用できず、ローカル・スタンバイが使用可能なときに次の画面が出現し、「フェイルオーバー」をクリックして手動フェイルオーバーを実行できます。
![Failover図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/bd9e96b3-bcbb-9fab-8873-82820752c6ca.png)
・フェイルオーバー後、元プライマリのADBは自動回復されスタンバイとして機能します。
・今回の検証では、プライマリ側に障害を発生させることができなかったため、コマンドでフェイルオーバーを実行します。

##● Cloud Shell実行
OCIコンソール上部にあるCloud ShellアイコンをクリックするとCloud Shellが出現し、OCI CLIコマンドを実行できるようになります。
![00_OCIコンソールFailover02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/5a076272-23e2-67a7-ea14-408456e45f29.jpeg)



##● Failover実行
Cloud Shell上へ次のコマンドを実行して、フェイルオーバーを実行

・コマンド

	oci db autonomous-database fail-over \ 
		--peer-db-id <Primary ADB の OCID>  \
		--autonomous-database-id <Standby ADB の OCID> \ 
		--region <Standby ADB の Region>

・実行例

	poc@cloudshell:~ (ap-tokyo-1)$ 	oci db autonomous-database fail-over \
		--peer-db-id ocid1.autonomousdatabase.oc1.ap-tokyo-1.anxhiljrssl65iqap75sj \
		--autonomous-database-id ocid1.autonomousdatabase.oc1.ap-osaka-1.anvwsljrssl \
		--region ap-osaka-1


##● プライマリ・ロール変更中
スタンバイ・ロールの大阪リージョンを選択し、ライフサイクル状態がロール変更進行中あることを確認
![01_大阪_ADW_Remot＿プライマリ中01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/12c5d7e9-f613-d365-b574-07cff2df8e6f.jpeg)



##● プライマリ・ロール変更完了
Autonomous Data Guardロール項目: ロールがプライマリへ変更されたことを確認
作業リクエストをクリックし、状態が”成功”になったことを確認
![02_大阪_ADW_Remot＿プライマリ完了01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/47b57427-a12d-f927-453e-910a37d0e189.jpeg)



##● 元プライマリADB: 回復中画面
元プライマリ(スタンバイ・ロール)のリージョンを選択し、ライフサイクル状態がプロビジョニング中あることを確認
![031_東京_回復(プロビジョニング中)01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/89e47641-114a-38d1-6cc6-34c3f059dbbc.jpeg)



##● 元プライマリADB: 回復完了
ライフサイクル状態がスタンバイであることを確認
![032_東京_回復(プロビジョニング)完了02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/cc7cb16b-e47e-598a-7ab6-bb68ae40902b.jpeg)



#■ 参考
##● Blog
・[Autonomous Data Guard : 数クリックでクラウド上でのデータ保護構成を実現](https://blogs.oracle.com/oracle4engineer/nf-autonomous-data-guard)


##● マニュアル
・[障害時リカバリでのAutonomous Databaseでのスタンバイ・データベースの使用](https://docs.oracle.com/ja-jp/iaas/adbdataguard/autonomous-data-guard-about.html#GUID-045AD017-8120-4BDC-AF58-7430FFE28D2B)
・[スタンバイ・データベースとの手動フェイルオーバー](https://docs.oracle.com/ja-jp/iaas/adbdataguard/autonomous-data-guard-failover.html)
・[OCI CLI コマンドリファレンス](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.0.5/oci_cli_docs/cmdref/db/autonomous-database/fail-over.html)