实施 Oracle Database File System (DBFS) 复制

此实施包括将中间层内容复制到 DBFS 文件夹,并依靠 Oracle Data Guard 将内容复制到辅助站点。中间层内容不直接驻留在 DBFS 上,因为这会使中间层依赖于 DBFS 基础结构(数据库、FUSE 库、挂载点等)。 DBFS 挂载只是一个用于存储内容副本的中间暂存文件夹。

任何对备用数据库的复制都意味着此模型中的两个步骤:从主数据库的源文件夹到中间的 DBFS 挂载,然后在辅助站点中,从 DBFS 挂载到备用数据库的目标文件夹。中间副本使用 rsync 完成。由于这是低延迟和本地 rsync 副本,因此使用此模型可以避免远程 rsync 复制操作中出现的一些问题。

注意:

Oracle Autonomous Database 不支持此方法,它不允许 DBFS 连接。


replica-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 不是 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 连接,以便执行数据库操作(例如角色转换)。
  • 一种管理站点特定信息的方法,从副本中排除该信息,或者在副本后使用相应的信息更新该信息。
  • 安排这些脚本持续运行。
  • 一种在切换或故障转移后更改副本方向的机制。
示例 1:使用 DBFS 复制 Oracle WebLogic 域

注意:

以下示例适用于 Oracle WebLogic 系统。您可以将其用作通过 DBFS 复制中间层系统其他文件夹的参考,但此特定示例使用通过 DBFS 将 WebLogic Administrator 的域文件夹复制到辅助文件夹的脚本。

此示例说明如何通过 DBFS 复制 WebLogic 管理主机的域文件夹。此示例中不包括位于域文件夹之外的内容以及其他主机上的内容。域文件夹不直接位于 DBFS 上;DBFS 挂载只是用于存储域文件夹副本的中间暂存文件夹。

此示例提供了用于执行这些操作的脚本,这些操作必须在主站点和备用站点中定期运行。此脚本复制 WebLogic 管理域文件夹,跳过某些项,如 tmp.lck.state 文件和 tnsnames.ora 文件。该过程包括以下内容:

  • 当该脚本在 primary site 的 WebLogic Administration 主机上运行时,该脚本会将 WebLogic 域文件夹复制到 DBFS 文件夹。
  • 复制到 DBFS 中的文件(存储在数据库中)会通过 Oracle Data Guard 自动传输到备用数据库。
  • 当该脚本在辅助站点的 WebLogic 管理主机上运行时:
    • 该脚本将备用数据库转换为快照备用
    • 然后,它将从备用数据库挂载 DBFS 文件系统。
    • 复制的域文件夹现在在此 DBFS 文件夹中可用。该脚本将其从 DBFS 挂载复制到实际域文件夹。
    • 最后,该脚本将备用数据库再次转换为物理备用
  • 如果发生角色更改,脚本将自动调整执行以适应新角色。它通过检查数据库角色来收集站点的实际角色。

此脚本仅复制 WebLogic 管理主机的域文件夹。当托管服务器启动时,DOMAIN_HOME/config 文件夹下的内容将自动复制到属于 WebLogic 域的所有其他节点。不会复制此文件夹之外的文件以及其他主机上的文件,需要单独同步。

对于应用程序 deployment 操作,请使用 WebLogic 管理控制台中的 Upload your files 部署选项。这样,部署的文件将放置在管理服务器 ($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 下载数据库客户端并将其上载到中间层主机(尚未安装)。搜索 Oracle Database Client ,并仅选择数据库客户机。单击 Continue(继续),然后选择安装程序版本(而不是 Gold Image)。

      注意:

      请确保下载安装程序版本,而不是基于映像的安装。建议使用最新版本。
      例如,下载适用于 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 连接数据。

      注意:

      备用数据库必须处于快照备用模式,才能在辅助管理主机中运行此脚本。
      以下示例将其运行为主中间层管理主机。它必须是单行,必须提供主 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
      执行此脚本后,您将获得以下信息:
      Artifact 说明
      数据库客户机主目录 /u01/app/oracle/client 该脚本将在主机中安装数据库客户机软件。它还使用 yum 安装所需的软件包。
      数据库用户

      产品名称:dbfsuser

      密码:与 sys 相同

      DBFS 的 PDB 数据库中的用户。
      DBFS 表空间 tbsdbfs PDB 中用于 DBFS 装载的表空间。
      DBFS 文件夹 dbfsdir 表空间中的 DBFS 文件夹。
      中层主机中的文件夹 DOMAIN_HOME/dbfs 它包含用于存储数据库客户机在主机中挂载 DBFS 所需的用户、密码和其他对象(tnsnames.orasqlnet.ora)的 wallet。
      中层主机中的脚本 DOMAIN_HOME/dbfs/dbfsMount.sh 用于在主机中挂载 DBFS 文件系统的脚本。此脚本会在重新引导时添加到 cron,因此在重新引导计算机时执行。
      中层主机中的挂载点 /u02/data/dbfs_root DBFS 文件系统作为文件夹 dbfsdir 挂载在 /u02/data/dbfs_root 挂载点中。

      您可以重新运行脚本,但会收到警告,因为已创建某些内容(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. primary Oracle WebLogic Administration 主机中,打开 config_replica.sh 脚本。编辑可自定义的参数部分。
      确保为主数据库提供适当的变量。在 DR_METHOD 属性中,使用 DBFS
    2. 辅助 Oracle WebLogic 管理主机中执行相同操作。确保为辅助变量提供相应的变量。
  5. 运行复制脚本。
    1. 作为 oracle 用户,在 primary Oracle WebLogic Administration 主机中运行 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 脚本通过检查本地数据库角色,自动将执行调整为站点的实际角色。