Oracle Database File System(DBFS)レプリケーションを実装する

この実装は、中間層コンテンツをDBFSフォルダにコピーし、Oracle Data Guardに依存してセカンダリ・サイトにレプリケートすることで構成されます。中間層の内容は、DBFSインフラストラクチャ(データベース、FUSEライブラリ、マウント・ポイントなど)に依存するため、DBFSに直接配置されません。 DBFSマウントは、コンテンツのコピーを格納するための中間ステージング・フォルダにすぎません。

スタンバイへのレプリケーションは、このモデルで2つのステップ(プライマリのオリジン・フォルダから中間のDBFSマウントへ、そしてセカンダリ・サイトではDBFSマウントからスタンバイの宛先フォルダへ)を意味します。中間コピーは、rsyncを使用して実行されます。これは低レイテンシおよびローカルのrsyncコピーであるため、このモデルでは、リモートのrsyncコピー操作で発生する問題の一部が回避されます。

ノート:

このメソッドは、DBFS接続を許可しないOracle Autonomous Databaseではサポートされていません。


レプリカ中間層dbfs-oracle.zip

DBFSを使用して中間層レプリカを実装する利点は次のとおりです。

  • この方法では、Oracle Data Guardレプリマの堅牢性を活用できます。
  • 実際の中間層ストレージは、セカンダリ・ノードにマウントされたままにできます。スイッチオーバーまたはフェイルオーバー操作ごとに、セカンダリ内のストレージを接続またはマウントする追加の手順はありません。

DBFSを使用して中間層レプリカを実装する際の考慮事項を次に示します。

  • この方法では、Oracle Data Guardを使用するOracle Databaseが必要です。
  • 中間層ホストでは、DBFSをマウントするためにOracle Databaseクライアントが必要です。
  • レプリケーションにDBFSを使用すると、セットアップ、データベース・ストレージおよびライフサイクルの観点から影響があります。これには、中間層ホストへのOracle Databaseクライアントのインストール、特定のデータベース・メンテナンス(表記憶域のクリーン、圧縮および削減)およびDBFSマウント・ポイントの動作の適切な理解が必要です。
  • DBFSディレクトリは、データベースがオープンされている場合にのみマウントできます。Oracle Data GuardActive Data Guardではない場合、スタンバイ・データベースはマウント状態です。したがって、セカンダリ・サイトのDBFSマウントにアクセスするには、データベースをスナップショット・スタンバイに変換する必要があります。Active Data Guardを使用する場合、ファイル・システムを読取り用にマウントできるため、スナップショットに遷移する必要はありません。
  • すべてのアーティファクト(特にランタイム・ファイル)をスタンバイにレプリケートするための汎用ソリューションとしてDBFSを使用することはお薦めしません。バイナリをレプリケートするためのDBFSの使用は過剰です。ただし、この方法は、ストレージ・レプリケーションやrsyncなどの他の方法がシステムのニーズに合わない場合に、構成などのいくつかのアーティファクトをレプリケートするのに適しています。
  • 各環境のカスタム・スクリプトを作成し、定期的に実行することはユーザーの責任です。
  • レプリカの方向を逆にする方法を実装するのはユーザーの責任です。

データベース・ファイル・システムのレプリケーションの設定

この実装では、rsyncテクノロジを使用し、ピア・ツー・ピア・モデルに従います。このモデルでは、コピーは中間層ピア・ホスト間で直接実行されます。各ノードには、そのピアへのSSH接続があり、SSHを介してrsyncコマンドを使用してプライマリ中間層ファイル・アーティファクトをレプリケートします。

DBFSで中間層レプリカを実装するには、次のことが必要です。

  • コピーを実行する中間層ホスト上のOracle Databaseクライアント・インストール(プライマリとセカンダリの両方)。
  • データベース内に作成されたDBFSファイル・システム。
  • コピーを実行する中間層ホスト内のDBFSマウント(プライマリとセカンダリの両方)。これにより、データベースのDBFSファイル・システムがマウントされます。DBFSは共有可能なファイル・システムであるため、このファイル・システムは複数のホストにマウントできます。
  • 中間層ファイル・アーティファクトをプライマリ・サイトのDBFSマウントにコピーするスクリプト。
  • 中間層ファイル・アーティファクトをDBFSマウントからセカンダリ・サイトのフォルダにコピーするスクリプト。実装によっては、この方法では、ロール変換などのデータベース操作のために、中間層ホストとリモート・データベース間のSQL*net接続が必要になる場合があります。
  • サイト固有の情報を管理する方法。コピーからその情報を除外するか、レプリカの後に適切な情報で更新します。
  • これらのスクリプトを継続的に実行するようにスケジュールします。
  • スイッチオーバーまたはフェイルオーバー後にレプリカの方向を変更するメカニズム。
例1: DBFSを使用したOracle WebLogicドメインのレプリケート

ノート:

次の例は、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ドメインをレプリケートするには、次を実行します。

  1. 管理ホストとリモート・データベース間のSQL*net接続を許可します。
    Oracleでは、Dynamic Routing Gatewayでリモート・ピアリングを使用することをお薦めします。スクリプトでは、ロール変換などのデータベース操作を実行するためにこの接続が必要です。スクリプトは、スタンバイ・ロールを持つサイトで実行されると、DBFSマウントをマウントするためにスタンバイ・データベースをスナップショット・スタンバイに変換します。
  2. スクリプトをダウンロードします。
    このドキュメントでは、DBFSマウントを構成し、レプリケーションを自動化するスクリプトについて説明します。
    1. GitHubのOracle MAAリポジトリに移動します。このプレイブックの「詳細」セクションを参照してください。
    2. すべてのスクリプトをapp_dr_commonディレクトリにダウンロードします。
    3. すべてのスクリプトをwls_mp_drディレクトリにダウンロードします。
    4. プライマリ管理ホストおよびセカンダリ管理ホストに、レプリケートされていない場所にコピーします。
    5. スクリプトは相互に呼出しを行います。両方のディレクトリのスクリプトをコピーし、同じフォルダに配置します。oracleユーザーに実行権限があることを確認します。
  3. プライマリ管理ホストおよびセカンダリ管理ホストでDBFSマウントを構成します。

    ノート:

    すでにDBFSマウントがある場合は、このステップをスキップできます。たとえば、一部のSOAマーケットプレイス・スタックには、すぐに使用できるDBFSマウントが付属しています。
    プライマリおよびセカンダリWebLogic管理ホストでDBFSマウントを構成します。これには、WebLogic管理ホスト上のデータベース・クライアントおよび一部のオペレーティング・システム・パッケージが必要です。各管理ホストで次のステップを実行します。
    1. DBクライアントをe-deliveryからダウンロードし、中間層ホストにアップロードします(まだインストールしないでください)。Oracle Database Clientを検索し、データベース・クライアントのみを選択します。「続行」をクリックし、(ゴールド・イメージではなく)インストーラ・バージョンを選択します。

      ノート:

      イメージベース・インストールではなく、インストーラ・バージョンをダウンロードしてください。最新バージョンを使用することをお薦めします。
      たとえば、Oracle Database Client 19.3.0.0.0 for Linux x86-64、 1.1 GBの982064-01.zipファイルをダウンロードし、すべての中間層ホスト上の/u01/install/V982064-01.zipにアップロードします。

      まだインストールしないでください。

    2. フォルダapp_dr_commonの下のスクリプトdbfs_dr_setup_root.shを見つけます。
      このスクリプトは、ホストでDBFSマウントを準備するためのタスクを実行します。データベース・クライアントおよび必要なオペレーティング・システム・パッケージをインストールし、DBFSユーザーおよびスキーマをデータベースに構成し、DBFSファイル・システムをマウントしてcronを作成するため、DBFSファイル・システムはホスト起動時にマウントされます。
    3. このスクリプトをrootユーザーとして実行します。
      構文は次のとおりです:
      ./dbfs_dr_setup_root.sh  local_db_scan_name db_port  local_PDB_service pdb_sys_password path_to_dbclient_installer
      入力パラメータとして、WLSで使用されるローカル・データベースへの接続に使用する接続データを指定します。プライマリPDB接続データは、プライマリ・サイト管理ホストで実行するときに指定し、セカンダリ管理ホストで実行するときにセカンダリPDB接続データを指定します。

      ノート:

      このスクリプトをセカンダリ管理ホストで実行するには、スタンバイ・データベースがスナップショット・スタンバイ・モードである必要があります。
      次の例では、プライマリ中間層管理ホストを実行します。これは1行で、プライマリPDBの値とパスワードを指定する必要があります。
      ./dbfs_dr_setup_root.sh  drdba-scan.wlsdrvcnlon1ad2.wlsdrvcnlon1.oraclevcn.com 1521 mypdbservice.example.com  mypassword   /u01/install/V982064-01.zip
      次の例では、セカンダリ中間層管理ホストを実行します。これは1行で、プライマリPDBの値とパスワードを指定する必要があります。
      ./dbfs_dr_setup_root.sh  drdbb-scan.wlsdrvcnfra1ad2.wlsdrvcnfra1.oraclevcn.com 1521 mypdbservice.example.com  mypassword   /u01/install/V982064-01.zip
      このスクリプトを実行すると、次の内容が表示されます。
      アーティファクト Value 説明
      データベースクライアントホーム /u01/app/oracle/client スクリプトによって、データベース・クライアント・ソフトウェアがホストにインストールされます。また、yumを使用して必要なパッケージをインストールします。
      データベース・ユーザー

      名前: dbfsuser

      パスワード: sysと同じ

      DBFS用のPDBデータベース内のユーザー。
      DBFS表領域 tbsdbfs DBFSマウント用のPDB内の表領域。
      DBFSフォルダ dbfsdir 表領域内のDBFSフォルダ。
      中間層ホスト内のフォルダ DOMAIN_HOME/dbfs これには、DBFSをホストにマウントするためにデータベース・クライアントが必要とするユーザー、パスワードおよびその他のアーティファクト(tnsnames.orasqlnet.ora)を格納するウォレットが含まれます。
      中間層ホスト内のスクリプト DOMAIN_HOME/dbfs/dbfsMount.sh ホストにDBFSファイル・システムをマウントするスクリプト。このスクリプトは、再起動時にcronに追加されるため、マシンの再起動時に実行されます。
      中間層ホスト内のマウント・ポイント /u02/data/dbfs_root DBFSファイル・システムは、/u02/data/dbfs_rootマウント・ポイントにフォルダdbfsdirとしてマウントされます。

      スクリプトを再実行できますが、いくつかのもの(dbユーザー、表領域など)がすでに作成されているため、警告が表示されます。これらのメッセージは無視してかまいません。

    4. DBFSマウントが中間層管理ホストに存在することを確認します。
      [root@ prefix-wls-1]# df -h | grep dbfs
      dbfs-@PDB1:/     32G  248K   32G   1% /u02/data/dbfs_root
      [root@ prefix-wls-1]# ls /u02/data/dbfs_root
      dbfsdir
      このDBFSファイル・システムは、プライマリ・サイトのドメイン構成のコピーを格納するために支援ファイル・システムとして使用されます。
  4. レプリカスクリプトを準備します。
    このドキュメントでは、この実装のリファレンス・スクリプトであるconfig_replica.shスクリプトを提供します。
    1. プライマリOracle WebLogic管理ホストで、config_replica.shスクリプトを開きます。カスタマイズ可能なパラメータ・セクションを編集します。
      プライマリに適切な変数を指定してください。DR_METHODプロパティで、DBFSを使用します。
    2. セカンダリのOracle WebLogic管理ホストでも同じ操作を行います。セカンダリに適切な変数を指定してください。
  5. レプリケーション・スクリプトを実行します。
    1. oracleユーザーとして、プライマリOracle WebLogic管理ホストでconfig_replica.shスクリプトを実行します。
      このスクリプトは、現在のサイト・ロールを確認し、プライマリOracle WebLogic ServerドメインからDBFSマウントにドメイン構成をコピーします。
    2. 実行を監視し、エラーがないか監視します。
    3. 完了したら、セカンダリ・サイトのOracle WebLogic Administration Serverホストでconfig_replica.shスクリプトを実行します。
      カスタマイズされたパラメータで適切な値を使用していることを確認してください。スクリプトによってデータベース・ロールが検証されます。スタンバイであるため、セカンダリ・ステージング・ファイル・システムからセカンダリOracle WebLogic Serverドメインにドメイン構成をコピーします。

    ノート:

    完全なレプリケーションを実行するには、このスクリプトを常にプライマリとスタンバイの両方で実行する必要があります。最初にプライマリでドメインをDBFSフォルダにコピーし、次にスタンバイでドメインをDBFSからドメイン・フォルダにコピーします。頻度は、構成の変更がOracle WebLogic Serverドメインで実行される頻度によって異なります。

データベース・ファイル・システムのレプリケーションの検証

スイッチオーバーまたはフェイルオーバー操作では、プロセスが起動される前に、レプリケートされた情報がスタンバイ・サイトで使用可能である必要があります。これは、(スタンバイ・データベースをスナップショット・モードでオープンして)セカンダリ・システムを検証する場合にも必要です。

この実装では、ストレージは常にスタンバイで使用可能です。ボリュームをアタッチまたはマウントする必要はありません。必要な唯一のアクションは、コンテンツの最新バージョンが含まれていることを確認することです。

スタンバイでレプリケートされたコンテンツを使用するには、次を実行します。

  1. レプリケーションを実行します。
    レプリカ・スクリプトを実行して、セカンダリ・システムで最新のコンテンツを使用可能にします。
  2. 定期レプリケーションを無効にします。
    最後のレプリカが終了したら、レプリカスクリプトをすべて無効にします。それ以外の場合は、スイッチオーバー、フェイルオーバー、または検証手順を妨げる可能性があります。操作後、適切な方向で再度有効にします。

データベース・ファイル・システムの進行中のレプリケーションの実行

レプリケーション・スクリプトを定期的に実行して、セカンダリ・ドメインとプライマリの同期を維持します。

中間層ホストからrsyncを使用する場合は、次の推奨事項に従ってください。
  • OS crontabまたは別のスケジューリング・ツールを使用して、レプリケーションをスケジュールします。スクリプトでレプリケーションを完了できるようにする必要があります。そうしないと、後続のジョブが重複する可能性があります。
  • 中間層プロセスはスタンバイ・サイトで停止したままにします。変更のレプリケート中にサーバーがスタンバイ・サイトで稼働している場合、その変更は次回起動時に有効になります。スタンバイ・サイトを検証する場合、またはスイッチオーバーまたはフェイルオーバー手順中にのみ、これらを起動します。
  • 各サイトに固有の情報を保持し、最新の状態に保ちます。 たとえば、コピーからtnsnames.oraをスキップして、各システムの接続詳細を確認します。プライマリのtnsnames.oraで変更(たとえば、新しい別名の追加)を実行する場合は、セカンダリ内の tnsnames.oraを適宜手動で更新します。
  • スイッチオーバーまたはフェイルオーバー後、レプリカの方向を逆にします。これは、特定の実装によって異なります。このスクリプトでは、動的チェックを使用してアクティブ・サイトのユーザーを識別したり、スイッチオーバーまたはフェイルオーバー後に手動で変更(適切なスクリプトの無効化および有効化など)を実行できます。この例では、config_replica.shスクリプトによって、ローカル・データベース・ロールをチェックして、実行がサイトの実際のロールに自動的に適応されます。