Oracle Database File System(DBFS)レプリケーションを実装する
スタンバイへのレプリケーションは、このモデルで2つのステップ(プライマリのオリジン・フォルダから中間のDBFSマウントへ、そしてセカンダリ・サイトではDBFSマウントからスタンバイの宛先フォルダへ)を意味します。中間コピーは、rsyncを使用して実行されます。これは低レイテンシおよびローカルのrsyncコピーであるため、このモデルでは、リモートのrsyncコピー操作で発生する問題の一部が回避されます。
ノート:
このメソッドは、DBFS接続を許可しないOracle Autonomous Databaseではサポートされていません。DBFSを使用して中間層レプリカを実装する利点は次のとおりです。
- この方法では、Oracle Data Guardレプリマの堅牢性を活用できます。
- 実際の中間層ストレージは、セカンダリ・ノードにマウントされたままにできます。スイッチオーバーまたはフェイルオーバー操作ごとに、セカンダリ内のストレージを接続またはマウントする追加の手順はありません。
DBFSを使用して中間層レプリカを実装する際の考慮事項を次に示します。
- この方法では、Oracle Data Guardを使用するOracle Databaseが必要です。
- 中間層ホストでは、DBFSをマウントするためにOracle Databaseクライアントが必要です。
- レプリケーションにDBFSを使用すると、セットアップ、データベース・ストレージおよびライフサイクルの観点から影響があります。これには、中間層ホストへのOracle Databaseクライアントのインストール、特定のデータベース・メンテナンス(表記憶域のクリーン、圧縮および削減)およびDBFSマウント・ポイントの動作の適切な理解が必要です。
- DBFSディレクトリは、データベースがオープンされている場合にのみマウントできます。Oracle Data GuardがActive Data Guardではない場合、スタンバイ・データベースはマウント状態です。したがって、セカンダリ・サイトのDBFSマウントにアクセスするには、データベースをスナップショット・スタンバイに変換する必要があります。Active Data Guardを使用する場合、ファイル・システムを読取り用にマウントできるため、スナップショットに遷移する必要はありません。
- すべてのアーティファクト(特にランタイム・ファイル)をスタンバイにレプリケートするための汎用ソリューションとしてDBFSを使用することはお薦めしません。バイナリをレプリケートするためのDBFSの使用は過剰です。ただし、この方法は、ストレージ・レプリケーションや
rsyncなどの他の方法がシステムのニーズに合わない場合に、構成などのいくつかのアーティファクトをレプリケートするのに適しています。 - 各環境のカスタム・スクリプトを作成し、定期的に実行することはユーザーの責任です。
- レプリカの方向を逆にする方法を実装するのはユーザーの責任です。
データベース・ファイル・システムのレプリケーションの設定
この実装では、rsyncテクノロジを使用し、ピア・ツー・ピア・モデルに従います。このモデルでは、コピーは中間層ピア・ホスト間で直接実行されます。各ノードには、そのピアへのSSH接続があり、SSHを介してrsyncコマンドを使用してプライマリ中間層ファイル・アーティファクトをレプリケートします。
DBFSで中間層レプリカを実装するには、次のことが必要です。
- コピーを実行する中間層ホスト上のOracle Databaseクライアント・インストール(プライマリとセカンダリの両方)。
- データベース内に作成されたDBFSファイル・システム。
- コピーを実行する中間層ホスト内のDBFSマウント(プライマリとセカンダリの両方)。これにより、データベースのDBFSファイル・システムがマウントされます。DBFSは共有可能なファイル・システムであるため、このファイル・システムは複数のホストにマウントできます。
- 中間層ファイル・アーティファクトをプライマリ・サイトのDBFSマウントにコピーするスクリプト。
- 中間層ファイル・アーティファクトをDBFSマウントからセカンダリ・サイトのフォルダにコピーするスクリプト。実装によっては、この方法では、ロール変換などのデータベース操作のために、中間層ホストとリモート・データベース間のSQL*net接続が必要になる場合があります。
- サイト固有の情報を管理する方法。コピーからその情報を除外するか、レプリカの後に適切な情報で更新します。
- これらのスクリプトを継続的に実行するようにスケジュールします。
- スイッチオーバーまたはフェイルオーバー後にレプリカの方向を変更するメカニズム。
ノート:
次の例は、Oracle WebLogicシステムに適用されます。これは、DBFSを介して中間層システムの他のフォルダをコピーするための参照として使用できますが、この特定の例では、DBFSを介してWebLogic管理者のドメイン・フォルダをセカンダリにレプリケートするスクリプトを使用します。この例では、DBFSを介してWebLogic管理ホストのドメイン・フォルダをレプリケートする方法を示します。この例では、ドメイン・フォルダの外部にあるコンテンツと、他のホストのコンテンツは含まれていません。ドメイン・フォルダはDBFSに直接配置されません。DBFSマウントは、ドメイン・フォルダのコピーを格納するための中間ステージング・フォルダにすぎません。
この例では、これらのアクションを実行するスクリプトを示します。このアクションは、プライマリ・サイトとスタンバイ・サイトで定期的に実行する必要があります。このスクリプトは、WebLogic管理ドメイン・フォルダをコピーし、tmp、.lck、.stateファイル、tnsnames.oraファイルなどの一部の項目をスキップします。この手順は次のもので構成されます。
- プライマリ・サイトのWebLogic管理ホストでスクリプトを実行すると、スクリプトによってWebLogicドメイン・フォルダがDBFSフォルダにコピーされます。
- DBFSにコピーされたファイルは、データベースに格納されるため、Oracle Data Guardを介してスタンバイ・データベースに自動的に転送されます。
- スクリプトがセカンダリ・サイトのWebLogic管理ホストで実行される場合:
- このスクリプトは、スタンバイ・データベースをスナップショット・スタンバイに変換します。
- 次に、スタンバイ・データベースからDBFSファイル・システムをマウントします。
- レプリケートされたドメイン・フォルダが、このDBFSフォルダで使用できるようになりました。このスクリプトは、DBFSマウントから実際のドメイン・フォルダにコピーします。
- 最後に、このスクリプトはスタンバイ・データベースをフィジカル・スタンバイに再変換します。
- ロール変更の場合、スクリプトは実行を自動的に新しいロールに適応します。データベース・ロールをチェックして、サイトの実際のロールを収集します。
このスクリプトは、WebLogic管理ホストのドメイン・フォルダのみをレプリケートします。DOMAIN_HOME/configフォルダのコンテンツは、管理対象サーバーの起動時に、WebLogicドメインの一部である他のすべてのノードに自動的にコピーされます。このフォルダの外部にあるファイルと、他のホストにあるファイルはレプリケートされず、個別に同期する必要があります。
アプリケーションのデプロイメント操作の場合は、WebLogic管理コンソールの「ファイルのアップロード」デプロイメント・オプションを使用します。このようにして、デプロイされたファイルは管理サーバー($DOMAIN_HOME/servers/admin_server_name/upload)のアップロード・ディレクトリに配置され、構成レプリカ・スクリプトによってスタンバイ・サイトに同期されます。
この例では、DBクライアントをインストールし、中間層ホストにDBFSマウントを構成する別のスクリプトを示します。このイメージは、DBFSレプリケーションを使用するOracle WebLogic Server for OCIシステムの例です。
wls-dbfs-replication-oracle.zip
DBFSメソッドを使用してWebLogicドメインをレプリケートするには、次を実行します。
データベース・ファイル・システムのレプリケーションの検証
スイッチオーバーまたはフェイルオーバー操作では、プロセスが起動される前に、レプリケートされた情報がスタンバイ・サイトで使用可能である必要があります。これは、(スタンバイ・データベースをスナップショット・モードでオープンして)セカンダリ・システムを検証する場合にも必要です。
この実装では、ストレージは常にスタンバイで使用可能です。ボリュームをアタッチまたはマウントする必要はありません。必要な唯一のアクションは、コンテンツの最新バージョンが含まれていることを確認することです。
スタンバイでレプリケートされたコンテンツを使用するには、次を実行します。
データベース・ファイル・システムの進行中のレプリケーションの実行
レプリケーション・スクリプトを定期的に実行して、セカンダリ・ドメインとプライマリの同期を維持します。
rsyncを使用する場合は、次の推奨事項に従ってください。
- OS crontabまたは別のスケジューリング・ツールを使用して、レプリケーションをスケジュールします。スクリプトでレプリケーションを完了できるようにする必要があります。そうしないと、後続のジョブが重複する可能性があります。
- 中間層プロセスはスタンバイ・サイトで停止したままにします。変更のレプリケート中にサーバーがスタンバイ・サイトで稼働している場合、その変更は次回起動時に有効になります。スタンバイ・サイトを検証する場合、またはスイッチオーバーまたはフェイルオーバー手順中にのみ、これらを起動します。
- 各サイトに固有の情報を保持し、最新の状態に保ちます。 たとえば、コピーから
tnsnames.oraをスキップして、各システムの接続詳細を確認します。プライマリのtnsnames.oraで変更(たとえば、新しい別名の追加)を実行する場合は、セカンダリ内のtnsnames.oraを適宜手動で更新します。 - スイッチオーバーまたはフェイルオーバー後、レプリカの方向を逆にします。これは、特定の実装によって異なります。このスクリプトでは、動的チェックを使用してアクティブ・サイトのユーザーを識別したり、スイッチオーバーまたはフェイルオーバー後に手動で変更(適切なスクリプトの無効化および有効化など)を実行できます。この例では、
config_replica.shスクリプトによって、ローカル・データベース・ロールをチェックして、実行がサイトの実際のロールに自動的に適応されます。

