4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Cloud: Data Guard Broker で複数スタンバイ・データベース構成の REDO転送を制御してみてみた

Last updated at Posted at 2022-10-30

Oracle Data Guard Broker は、Oracle Data Guard構成の作成、メンテナンスおよび監視を自動化および集中化する分散管理フレームワークです。
RedoRoutesプロパティを使用してREDO転送を制御することができ、Standby Databaseが複数ある場合、次の様なREDO転送制御トポロジーが考えられるのでやってみてみます。

■ 構成イメージ

構成.jpg

■ 事前作業

2つ以上の Standby Database構成は オンプレミス同様にコマンドで Data Guard作成する必要があります。次を参考に Oracle Exadata もしくは、Oracle Database Cloud Service を使用して複数スタンバイ構成を作成しておきます。
・参考:
 - Oracle Exadata Database Service: 手動コマンドで Active Data Guard を構成
 - Oracle Database Data Guard 複数スタンバイ構成

■ 1:n Standby構成(デフォルト)

構成1.jpg
この構成は、デフォルトです。
Primary Database から、すべての Standby Database へ REDOを送信します。
Switchoverした CDB_TOKYO 以外の Primary Database も同様に Standby Database へ REDOを送信します。

● 設定例

RedoRoutesプロパティのデフォルト値はNULLです。プライマリ・データベースは、(LOCAL : ALL)として扱われます。

dgmgrlコマンド
DGMGRL> EDIT DATABASE 'CDB_TOKYO' SET PROPERTY 'RedoRoutes' = '';
DGMGRL> EDIT DATABASE 'CDB_SHIBUYA' SET PROPERTY 'RedoRoutes' = '';
DGMGRL> EDIT DATABASE 'CDB_OSAKA' SET PROPERTY 'RedoRoutes' = '';
DGMGRL> EDIT DATABASE 'CDB_NAMBA' SET PROPERTY 'RedoRoutes' = '';

■ Primary 負荷考慮: Standby Cascade REDO転送構成

構成2.jpg
Primary負荷考慮構成です。
Primaryから全ての Standby Database に REDO を送信するかわりに、近接の Standby Database からその他の 遠隔の スタンバイ・データベースに REDOを転送するように リアルタイム・カスケードを構成することができます。
また、REDOデータの受信元のメンバーに障害が発生しても REDOデータを受信できるように、リモート代替宛先を設定することもできます。

● REDO送信イメージ

1) CDB_TOKYO が Primary の場合

近接CDB_SHIBUYA から他の Remote Standby へ REDO送信

・ CDB_TOKYO[Primary] 
	---(SYNC)---> CDB_SHIBUYA[Standby] 
		---(ASYNC)---> CDB_OSAKA[Cascade] 
		---(ASYNC)---> CDB_NAMBA[Cascade]

2) CDB_SHIBUYA が Primary の場合

近接CDB_TOKYO から他の Remote Standby へ REDO送信

・ CDB_SHIBUYA[Primary] 
	---(SYNC)---> CDB_TOKYO[Standby] 
		---(ASYNC)---> CDB_OSAKA[Cascade] 
		---(ASYNC)---> CDB_NAMBA[Cascade]

3) CDB_OSAKA が Primary の場合

近接CDB_NAMBA から他の Remote Standby へ REDO送信

・ CDB_OSAKA[Primary] 
	---(SYNC)---> CDB_NAMBA[Standby] 
		---(ASYNC)---> CDB_TOKYO[Cascade] 
		---(ASYNC)---> CDB_SHIBUYA[Cascade]

4) CDB_NAMBA が Primary の場合

近接CDB_OSAKA から他の Remote Standby へ REDO送信

・ CDB_NAMBA[Primary] 
	---(SYNC)---> CDB_OSAKA[Standby] 
		---(ASYNC)---> CDB_TOKYO[Cascade] 
		---(ASYNC)---> CDB_SHIBUYA[Cascade]

● DGMGRL RedoRoutes設定例

各リモートDatabase が Primary なった場合をまとめて設定すると次の様になります。

dgmgrlコマンド
DGMGRL> EDIT DATABASE 'CDB_TOKYO' SET PROPERTY 'RedoRoutes' = '(LOCAL : CDB_SHIBUYA ASYNC)(CDB_SHIBUYA : (CDB_OSAKA ASYNC, CDB_NAMBA ASYNC))';
DGMGRL> EDIT DATABASE 'CDB_SHIBUYA' SET PROPERTY 'RedoRoutes' = '(LOCAL : CDB_TOKYO ASYNC)(CDB_TOKYO : (CDB_OSAKA ASYNC, CDB_NAMBA ASYNC))';
DGMGRL> EDIT DATABASE 'CDB_OSAKA' SET PROPERTY 'RedoRoutes' = '(LOCAL : CDB_NAMBA ASYNC)(CDB_NAMBA : (CDB_TOKYO ASYNC, CDB_SHIBUYA ASYNC))';
DGMGRL> EDIT DATABASE 'CDB_NAMBA' SET PROPERTY 'RedoRoutes' = '(LOCAL : CDB_OSAKA ASYNC)(CDB_OSAKA : (CDB_TOKYO ASYNC, CDB_SHIBUYA ASYNC))';

● 動作確認

1) CDB_TOKYO が Primary の場合

DGMGRL> switchover to CDB_TOKYO
	Performing switchover NOW, please wait...
	New primary database "CDB_TOKYO" is opening...
	Oracle Clusterware is restarting database "CDB_NAMBA" ...
	Connected to "CDB_NAMBA"
	Connected to "CDB_NAMBA"
	Switchover succeeded, new primary is "cdb_tokyo"

DGMGRL> show configuration;

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_TOKYO   - Primary database
		CDB_SHIBUYA - Physical standby database
		  CCDB_OSAKA   - Physical standby database (receiving current redo)
		  CCDB_NAMBA   - Physical standby database (receiving current redo)

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 46 seconds ago)

2) CDB_SHIBUYA が Primary の場合

DGMGRL> switchover to CDB_SHIBUYA
	Performing switchover NOW, please wait...
	Operation requires a connection to database "CDB_SHIBUYA"
	Connecting ...
	Connected to "CDB_SHIBUYA"
	Connected as SYSDBA.
	New primary database "CDB_SHIBUYA" is opening...
	Oracle Clusterware is restarting database "CDB_TOKYO" ...
	Connected to "CDB_TOKYO"
	Connected to "CDB_TOKYO"
	Switchover succeeded, new primary is "cdb_shibuya"
	DGMGRL> show configuration;


DGMGRL> show configuration;

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_SHIBUYA - Primary database
		CDB_TOKYO   - Physical standby database
		  CDB_OSAKA   - Physical standby database (receiving current redo)
		  CDB_NAMBA   - Physical standby database (receiving current redo)

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 39 seconds ago)

3) CDB_OSAKA が Primary の場合

DGMGRL> switchover to CDB_OSAKA
	Performing switchover NOW, please wait...
	New primary database "CDB_OSAKA" is opening...
	Oracle Clusterware is restarting database "CDB_SHIBUYA" ...
	Connected to "CDB_SHIBUYA"
	Connected to "CDB_SHIBUYA"
	Switchover succeeded, new primary is "cdb_osaka"

DGMGRL> show configuration;

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA   - Primary database
		CDB_NAMBA   - Physical standby database
		  CDB_TOKYO   - Physical standby database (receiving current redo)
		  CDB_SHIBUYA - Physical standby database (receiving current redo)

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 24 seconds ago)

4) CDB_NAMBA が Primary の場合

DGMGRL> switchover to CDB_NAMBA
	Performing switchover NOW, please wait...
	New primary database "CDB_NAMBA" is opening...
	Oracle Clusterware is restarting database "CDB_OSAKA" ...
	Connected to "CDB_OSAKA"
	Connected to "CDB_OSAKA"
	Switchover succeeded, new primary is "cdb_namba"

DGMGRL> show configuration;

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_NAMBA   - Primary database
		CDB_OSAKA   - Physical standby database
		  CDB_TOKYO   - Physical standby database (receiving current redo)
		  CDB_SHIBUYA - Physical standby database (receiving current redo)

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 57 seconds ago)

■ REDO転送トポロジー設計構成

Local Standby は Primaryとして使用せず、CDB_TOKYOとCDB_OSAKAのみPrimaryとなる構成を考えてみます。
構成3.jpg

● REDO送信イメージ

・ CDB_TOKYO が Primaryの場合

近接CDB_SHIBUYA から他の Remote Standby へ REDO送信

・ CDB_TOKYO[Primary] 
	---(SYNC)---> CDB_SHIBUYA[Standby] 
	---(ASYNC)---> CDB_OSAKA[Standby] 
		---(ASYNC)---> CDB_NAMBA[Cascade]

・ CDB_OSAKA が Primaryの場合

近接CDB_NAMBA から他の Remote Standby へ REDO送信

・ CDB_OSAKA[Primary] 
	---(SYNC)---> CDB_NAMBA[Standby] 
	---(ASYNC)---> CDB_TOKYO[Standby] 
		---(ASYNC)---> CDB_SHIBUYA[Cascade]

● DGMGRL RedoRoutes設定例

各リモートDatabase が Primary なった場合、Pattern#1Bの代変宛先を考慮してまとめて設定すると次の様になります。

dgmgrlコマンド
DGMGRL> EDIT DATABASE 'CDB_TOKYO' SET PROPERTY 'RedoRoutes' = '(LOCAL : (CDB_SHIBUYA ASYNC, CDB_OSAKA ASYNC))(CDB_OSAKA : CDB_SHIBUYA ASYNC)';
DGMGRL> EDIT DATABASE 'CDB_OSAKA' SET PROPERTY 'RedoRoutes' = '(CDB_TOKYO : CDB_NAMBA ASYNC)(LOCAL : (CDB_NAMBA ASYNC, CDB_TOKYO ASYNC))';

● 動作確認

1) CDB_TOKYO が Primary の場合

DGMGRL> switchover to CDB_TOKYO
	Performing switchover NOW, please wait...
	New primary database "CDB_TOKYO" is opening...
	Oracle Clusterware is restarting database "CDB_NAMBA" ...
	Connected to "CDB_NAMBA"
	Connected to "CDB_NAMBA"
	Switchover succeeded, new primary is "cdb_tokyo"

DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_TOKYO   - Primary database
		CDB_SHIBUYA - Physical standby database
		CDB_OSAKA   - Physical standby database
		  CDB_NAMBA   - Physical standby database (receiving current redo)

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 7 seconds ago)

2) CDB_OSAKA が Primary の場合

DGMGRL> switchover to CDB_OSAKA
	Performing switchover NOW, please wait...
	Operation requires a connection to database "CDB_OSAKA"
	Connecting ...
	Connected to "CDB_OSAKA"
	Connected as SYSDBA.
	New primary database "CDB_OSAKA" is opening...
	Oracle Clusterware is restarting database "CDB_TOKYO" ...
	Connected to "CDB_TOKYO"
	Connected to "CDB_TOKYO"
	Switchover succeeded, new primary is "cdb_osaka"

DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA   - Primary database
		CDB_NAMBA   - Physical standby database
		CDB_TOKYO   - Physical standby database
		  CDB_SHIBUYA - Physical standby database (receiving current redo)

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 43 seconds ago)

■ その他: 優先順位制御

PRIORITY=n を設定することで、 PRIORITY=1 が設定されている Standby#1 が使用できない場合、プライマリはPRIORITY=2が設定されている Standby#2 に送信することができます。

端末メンバーがREDOデータの受信元のメンバーに障害が発生してもREDOデータを受信できるように、リモート代替宛先を設定することもできます。前述の例を使用すると、プライマリ・データベースとしてCDB_TOKYO を使用し、スタンバイ・データベースCDB_SHIBUYA に障害が発生したときにREDOデータを直接CDB_OSAKA に送信できます。PRIORITY属性を使用して、CDB_SHIBUYAの障害が解決された時点でCDB_OSAKA へのREDOの送信を再開できるように設定することもできます。

DGMGRL> EDIT DATABASE 'CDB_TOKYO' SET PROPERTY 'RedoRoutes' = '(LOCAL : ( CDB_SIBUYA ASYNC PRIORITY=1, CDB_OSAKA ASYNC PRIORITY=2 ))';
DGMGRL> EDIT DATABASE 'CDB_SIBUYA' SET PROPERTY 'RedoRoutes' = '(CDB_OSAKA : Remote_Sales ASYNC)';

■ 参考

● Data Guard
Data Guard
Oracle Exadata Cloudを使用した ディザスタ・リカバリ
Hybrid Data Guard to Exadata Cloud Services
Solution Playbooks: Deploy a hybrid DR topology for an on-premises Oracle Exadata

● Data Guard Broker
マニュアル: Oracle Data Guard Broker
Oracle Data Guardのベスト・プラクティス

● Exadata
概要: Oracle Exadata Database Service
キュメント: Exadataシステム
キュメント: DBAASツール: dbaascliを使用したクラウド・ツール・ログの収集およびクラウド・ツールの ヘルス・チェックの実行
Oracle Database Product Management

● Private DNS
キュメント: OCI Document:プライベートDNS
チュートリアル: Private DNS Implementation

● Oracle Cloud:Maximum Availability Architecture (MAA)
Oracle CloudのMAAベスト・プラクティス まとめ
Oracle WebLogic Server for Oracle Cloud Infrastructureの障害時リカバリ
Oracle Cloud Infrastructure Marketplace上のSOA Suiteの障害時リカバリ

● Qiitaまとめ
DRGで東京リージョンを経由して、オンプレミスと 大阪リージョンを接続
Oracle Exadata Cloud Infrastructure X9M作成
Oracle Cloud: Real Application Clusters(RAC)作成
リージョン間を Remote VCN Peering接続
Private DNSで PeeringしたVCNどうしホスト名解決する
クラウド・ツール dbaascliをバージョンアップ

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?