Oracle Data Guard Far Syncの使用により、いかなる距離でもデータ損失をゼロにする (2023/01/16)
Oracle Data Guard Far Syncの使用により、いかなる距離でもデータ損失をゼロにする (2023/01/16)
https://database-heartbeat.com/2023/01/16/create-far-sync/
はじめに
Oracle Data Guardは、REDOをスタンバイデータベースに同期して転送することで、データ損失をゼロにすることができます。しかし、スタンバイデータベースが地理的に遠すぎる場合、レイテンシーが大きくなり、プライマリデータベースでのコミット応答時間やトランザクションスループットに影響を与えます。Oracle Active Data Guard Far Sync は、プライマリデータベースのパフォーマンスに影響を与えることなく、どのような距離でもデータ損失をゼロにすることができる。Far Sync インスタンス(軽量 Oracle インスタンス)は、2 つ目のスタンバイデータベースを作成および管理することなく、遠隔地のスタンバイデータベースへのデータ損失ゼロのフェイルオーバーを実行する機能を提供します。
Data Guard環境
以下の例では、OCI Ashburnリージョン(Ashburn_ad1)で稼働するプライマリデータベースと、OCI Londonリージョン(London_ad1)で稼働するスタンバイデータベースからData Guardを構成しています。AshburnとLondon間の高いネットワーク遅延がアプリケーションのパフォーマンスに影響を与えないように、非同期レプリケーションの最大パフォーマンスモードが使用されています。
この構成では、Data GuardブローカーのRedoRoutesプロパティは次のようになります。
[oracle@hostiad ~]$ dgmgrl SYS
as
sysdba
DGMGRL> EDIT
DATABASE
'Ashburn_ad1'
SET
PROPERTY RedoRoutes =
'( LOCAL : London_ad1 ASYNC)'
;
Property
"redoroutes"
updated
DGMGRL> EDIT
DATABASE
'London_ad1'
SET
PROPERTY RedoRoutes =
'( LOCAL : Ashburn_ad1 ASYNC )'
;
Property
"redoroutes"
updated
コンフィギュレーションを確認します。
[oracle@hostiad ~]$ dgmgrl SYS as sysdba
DGMGRL> show configuration
Configuration - Ashburn_ad1_London_ad1
Protection Mode: MaxPerformance
Members:
Ashburn_ad1 - Primary database
London_ad1 - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 57 seconds ago)
Far Syncインスタンスの追加
Maximum Availabilityモードで同期レプリケーションを使用し、アプリケーションのパフォーマンスに影響を与えずにデータ損失をゼロにするために、Far Syncインスタンス(FS1)が構成に追加されます。プライマリデータベースは地理的に近いFar Syncインスタンスに低ネットワークレイテンシーでREDOを送信し、Far Syncインスタンスはスタンバイに非同期でREDOを転送します。
この構成では、Data GuardブローカーのRedoRoutesプロパティは次のようになります。
[oracle@hostiad ~]$ dgmgrl SYS
as
sysdba
DGMGRL> EDIT
DATABASE
'Ashburn_ad1'
SET
PROPERTY RedoRoutes =
'( LOCAL : ( FS1 FASTSYNC PRIORITY=1, London_ad1 ASYNC PRIORITY=2 ))'
;
Property
"redoroutes"
updated
DGMGRL> EDIT FAR_SYNC
'FS1'
SET
PROPERTY RedoRoutes =
'( Ashburn_ad1 : London_ad1 ASYNC )'
;
Property
"redoroutes"
updated
DGMGRL> EDIT
DATABASE
'London_ad1'
SET
PROPERTY RedoRoutes =
'( LOCAL : Ashburn_ad1 ASYNC )'
;
Property
"redoroutes"
updated
コンフィギュレーションを確認します。
DGMGRL> show configuration
Configuration - Ashburn_ad1_London_ad1
Protection Mode: MaxAvailability
Members:
Ashburn_ad1 - Primary database
fs1 - Far
sync
instance
London_ad1 - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 57 seconds ago)
リモートリージョンのFar Syncインスタンス
以前の構成でロールスイッチを行った後、ロンドンの新しいプライマリはAshburnに非同期でREDOを送信します。
ロールスイッチ後のデータ損失をゼロにするためには、ロンドン地域にもFar Syncインスタンス(FS2)を追加する必要があります。ロンドンの新しいプライマリは、地理的に近いFar Syncインスタンスに同期してREDOを送信し、Far Syncインスタンスは非同期でAshburnにREDOを転送します。
これは、RedoRoutesを以下のように変更することで実現します。
DGMGRL> EDIT
DATABASE
'London_ad1'
SET
PROPERTY RedoRoutes =
'( LOCAL : ( FS2 FASTSYNC PRIORITY=1, Ashburn_ad1 ASYNC PRIORITY=2 ))'
;
Property
"redoroutes"
updated
DGMGRL> EDIT FAR_SYNC
'FS2'
SET
PROPERTY RedoRoutes =
'( London_ad1 : Ashburn_ad1 ASYNC )'
;
Property
"redoroutes"
updated
Far Syncインスタンスの場所
Far Syncインスタンスは、同じ障害や災害の影響を受けないようにプライマリデータベースから分離する必要がありますが、低レイテンシーと高いアプリケーションパフォーマンスを確保するためにプライマリに十分に近い場所に設置する必要があります。
プライマリ、スタンバイ、およびFar Syncインスタンスは、オンプレミス、Oracle Cloud、非Oracle Cloud、Hybrid Cloud、またはMulticloud環境など、どこにでも導入することが可能です。
たとえば、複数のデータセンター(Availability Domains/Zone)を持つリージョンのクラウドシナリオでは、Far Syncインスタンスをプライマリとは異なるデータセンターに配置することができる。
考察
- Far Syncは非常に軽量なインスタンスです。しかし、Far Syncインスタンスは受信したREDOをディスクに書き込んでからプライマリに確認応答を返すため、ディスクのパフォーマンスが重要であり、アプリケーションのパフォーマンスに影響を及ぼします。
- Far Syncインスタンスの高可用性を確保するために、1つのリージョンに2つのFar Syncインスタンスを作成します。
- Far Sync機能には、Active Data Guardオプションのライセンスが必要です。
まとめ
Far Syncはプライマリデータベースから同期的にREDOを受け取り、非同期的にスタンバイデータベースへ転送するため、スタンバイデータベースがプライマリから遠く離れていても、アプリケーションパフォーマンスに影響を与えずにデータ損失をゼロにすることができます。リモートリージョンに追加のFar Syncインスタンスを作成し、ロールスイッチ後の対称構成を確保します。
参考資料
コメント
コメントを投稿