实施 Oracle Database File System (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 连接,以便执行数据库操作(例如角色转换)。
- 一种管理站点特定信息的方法,从副本中排除该信息,或者在副本后使用相应的信息更新该信息。
- 安排这些脚本持续运行。
- 一种在切换或故障转移后更改副本方向的机制。
注意:
以下示例适用于 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 域:
验证数据库文件系统的复制
在切换或故障转移操作中,复制的信息在启动进程之前必须在备用站点中可用且可用。验证辅助系统时(通过在快照模式下打开备用数据库),这也是必需的。
在此实施中,存储始终在备用环境中可用;您无需连接或挂载任何卷。您所需的唯一操作是确保其中包含最新版本的内容。
执行以下操作以在备用数据库中使用复制的内容:
对数据库文件系统执行持续复制
定期运行复制脚本,使辅助域与主域保持同步。
rsync 时,请遵循以下建议:
- 使用 OS crontab 或其他调度工具调度复制。它必须允许脚本完成复制。否则,后续作业可能会重叠。
- 使中间层进程在备用站点中停止。如果服务器在复制更改时在备用站点中启动,则更改将在下次启动时生效。仅在验证备用站点时或在切换或故障转移过程中启动它们。
- 维护特定于每个站点的信息并使其保持最新。例如,跳过副本中的
tnsnames.ora,因此每个系统都有其连接详细信息。如果在主数据库中的tnsnames.ora中执行更改(例如,添加新别名),请相应地手动更新辅助数据库中的tnsnames.ora。 - 切换或故障转移后,反转副本方向。这取决于具体实施情况。这些脚本可以使用动态检查来确定谁是活动站点,也可以在切换或故障转移后执行手动更改(例如,禁用和启用相应的脚本)。在提供的示例中,
config_replica.sh脚本通过检查本地数据库角色,自动将执行调整为站点的实际角色。

