導入 Oracle Database 檔案系統 (DBFS) 複製

此實作包括將中間層內容複製到 DBFS 資料夾,並依靠 Oracle Data Guard 將它複製到次要網站。中間層內容不直接位於 DBFS 上,因為這會讓中間層相依於 DBFS 基礎架構 (資料庫、FUSE 程式庫、掛載點等等)。 DBFS 掛載只是儲存內容複本的中繼暫存資料夾。

任何待命資料庫複製都代表此模型中的兩個步驟:從主要來源資料夾到中繼 DBFS 掛載,然後在次要位置,從 DBFS 掛載到待命目的地資料夾。中繼複本是使用 rsync 來完成。由於這是低延遲和本機 rsync 複製,因此此模型可避免遠端 rsync 複製作業中發生的一些問題。

附註:

Oracle Autonomous Database 不支援此方法,此方法不允許 DBFS 連線。


複製 -mid-tier-dbfs-oracle.zip

使用 DBFS 實作中間層複本的優點如下:

  • 這個方法充分利用 Oracle Data Guard 複本的健全性。
  • 真正的中間層儲存體可以維持掛載在次要節點。在每一項切換移轉或容錯移轉作業中,並無其他步驟可將儲存體附加或掛載至次要儲存體。

以下為使用 DBFS 實作中間層複本的考量:

  • 此方法需要搭配 Oracle Data Guard 的 Oracle Database。
  • 中間層主機需要 Oracle Database 從屬端掛載 DBFS。
  • 使用 DBFS 進行複製對設定、資料庫儲存體和生命週期的觀點有影響。它需要在中間層主機安裝 Oracle Database 從屬端、特定資料庫維護 (清除、壓縮及減少表格儲存體),並且充分瞭解 DBFS 掛載點的運作方式。
  • 只有開啟資料庫時,才能掛載 DBFS 目錄。當 Oracle 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 掛載只是儲存網域資料夾複本的中繼暫存資料夾。

此範例提供執行這些動作的 script ,這些動作必須定期在主要和待命位置執行。此命令檔會複製「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) 的上傳目錄下,而組態複本命令檔會將它們同步至待命網站。

此範例提供其他命令檔來安裝資料庫從屬端,以及在中間層主機設定 DBFS 掛載。此影像是含有 DBFS 複製之 Oracle WebLogic Server for OCI 系統的範例。



wls-dbfs-replication-oracle.zip

執行下列動作以使用 DBFS 方法複製 WebLogic 網域:

  1. 允許管理主機與遠端資料庫之間的 SQL*net 連線。
    Oracle 建議您使用遠端對等互連搭配動態路由閘道。此命令檔需要此連線才能執行資料庫作業,例如角色轉換。當命令檔在網站中以待命角色執行時,它會將待命資料庫轉換為快照待命,以掛載 DBFS 掛載。
  2. 下載命令檔。
    本文件提供設定 DBFS 掛載及自動複製的命令檔。
    1. 前往 GitHub 中的 Oracle MAA 儲存區域。請參閱本手冊中的「瀏覽更多」區段。
    2. 下載 app_dr_common 目錄中的所有命令檔。
    3. 下載 wls_mp_dr 目錄中的所有命令檔。
    4. 將它們複製到主要和次要管理主機,並複製到未複製的位置。
    5. 命令檔會彼此呼叫。複製兩個目錄的命令檔,並將它們放到同一個資料夾中。確定 oracle 使用者具有執行權限。
  3. 設定主要和次要管理主機中的 DBFS 掛載。

    附註:

    如果您已經有 DBFS 掛載,則可以略過此步驟。例如,部分 SOA Marketplace 堆疊隨附一個可供使用的 DBFS 掛載。
    設定主要和次要 WebLogic 管理主機中的 DBFS 掛載。它需要「WebLogic 管理」主機上的「資料庫」從屬端和部分作業系統套裝程式。請遵循每個管理主機的這些步驟:
    1. 從 e-delivery 下載 DB 用戶端,並上傳到中間層主機 (請勿安裝)。搜尋 Oracle Database Client ,並只選取資料庫從屬端。按一下繼續,然後選取安裝程式版本 (不是軟體影像)。

      附註:

      請確定下載安裝程式版本,而不是影像式安裝。建議使用最新版本。
      例如,下載適用於 Linux x86-64、1.1 GB 之 Oracle Database Client 19.3.0.0.0 的 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 連線資料,並在次要管理主機中執行時提供次要 PDB 連線資料。

      附註:

      待命資料庫必須處於快照待命模式,才能在次要管理主機中執行此命令檔。
      下列範例會執行它的主要中間層管理主機。它必須是一行,而且您必須提供主要 PDB 值和密碼:
      ./dbfs_dr_setup_root.sh  drdba-scan.wlsdrvcnlon1ad2.wlsdrvcnlon1.oraclevcn.com 1521 mypdbservice.example.com  mypassword   /u01/install/V982064-01.zip
      下列範例會執行次要中間層管理主機。它必須是一行,而且您必須提供主要 PDB 值和密碼:
      ./dbfs_dr_setup_root.sh  drdbb-scan.wlsdrvcnfra1ad2.wlsdrvcnfra1.oraclevcn.com 1521 mypdbservice.example.com  mypassword   /u01/install/V982064-01.zip
      此程序檔的執行結果如下:
      使用者自建物件 數值 描述
      資料庫從屬端本位目錄 /u01/app/oracle/client 此命令檔會在主機中安裝資料庫從屬端軟體。它也會使用 yum 來安裝必要的套裝軟體。
      資料庫使用者

      姓名:dbfsuser

      密碼:與 sys 相同

      DBFS 之 PDB 資料庫中的使用者。
      DBFS 表格空間 tbsdbfs PDB 中用於 DBFS 掛載的表格空間。
      DBFS 資料夾 dbfsdir 表格空間中的 DBFS 資料夾。
      中間層主機中的資料夾 DOMAIN_HOME/dbfs 它包含儲存資料庫從屬端在主機中掛載 DBFS 所需之使用者、密碼及其他使用者自建物件 (tnsnames.orasqlnet.ora) 的公事包。
      中間層主機中的命令檔 DOMAIN_HOME/dbfs/dbfsMount.sh 在主機上掛載 DBFS 檔案系統的命令檔。此命令檔會在重新啟動時新增至 cron,因此會在機器重新啟動時執行。
      中間層主機的掛載點 /u02/data/dbfs_root DBFS 檔案系統會以資料夾 dbfsdir 的形式掛載於 /u02/data/dbfs_root 掛載點。

      您可以重新執行命令檔,但會收到警告,因為已經建立一些項目 (資料庫使用者、表格空間等等)。您可以忽略這些訊息。

    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 命令檔會檢查本機資料庫角色,自動將執行調整為網站的實際角色。