你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Linux VM 上 Oracle Database 的备份策略

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

适用于:✔️ Linux VM

数据库备份可帮助保护数据库,防止因存储组件故障和数据中心故障而导致的数据丢失。 通过利用备份,还可以从人为错误中恢复,以及克隆数据库用于开发或测试目的。

在 Azure 中,所有存储都是高度冗余的。 丢失一个或多个磁盘不会导致数据库中断。 备份通常用于防止人为错误、促进克隆操作或出于监管目的保留数据。

在未使用 DataGuard 等灾难恢复技术的情况下,备份也可以帮助防范区域性服务中断。 在这种情况下,必须通过异地冗余复制将备份存储在不同的 Azure 区域中,以使它们在主数据库区域之外可用。

Azure 存储

Azure 存储服务是 Microsoft 适用于现代数据存储方案的云解决方案。 Azure 存储提供的服务可用于将外部存储装载到 Azure Linux 虚拟机 (VM),适合用作 Oracle Database 实例的备份媒体。 要启动备份或还原操作,并向/从 Azure 存储进行复制,需使用 Oracle Recovery Manager (RMAN) 之类的备份工具。

Azure 存储服务具有以下优点:

  • 持久且具有高可用性。 冗余可帮助在暂时的硬件故障期间保持数据安全。 默认情况下,所有存储都有三重镜像。 还可以选择在不同的数据中心或地理区域之间复制数据,从而在发生本地灾难或自然灾害时提供更多保护。 以此方式复制的数据在发生意外中断时将保持高可用性。

  • 安全:Azure 存储会加密写入存储帐户的所有数据。 Azure 存储可以精细地控制谁可以访问你的数据。

  • 可缩放性:Azure 存储可大规模缩放以满足当今的应用程序在数据存储和性能方面的需求。

  • 托管:Azure 为你处理硬件维护、更新和关键问题。

  • 易于访问:可以通过 HTTP 或 HTTPS 从世界上的任何位置访问 Azure 存储中的数据。 Microsoft 以多种语言(包括 .NET、Java、Node.js、Python、PHP、Ruby 和 Go)提供 Azure 存储的客户端库。 Microsoft 还提供成熟的 REST API。

    Azure 存储支持通过 Azure PowerShell 或 Azure CLI 运行脚本。 Azure 门户和 Azure 存储资源管理器提供了用于处理数据的可视化解决方案。

Azure 存储平台包含以下数据服务,它们适合用作 Oracle Database 的备份媒体:

  • Azure Blob 存储:文本和二进制数据的对象存储。 它还包括通过 Azure Data Lake Storage Gen2 对大数据分析的支持。

  • Azure NetApp 文件:完整的网络存储解决方案,包括用于创建快照、克隆和复制数据库卷的高级数据管理功能。

  • Azure 文件:适用于云或本地部署的托管文件共享。

  • Azure 磁盘存储:Azure VM 的块级存储卷。

跨区域存储装载

跨区域访问备份存储的能力是业务连续性和灾难恢复 (BCDR) 的一个重要方面。 它还可用于将数据库从备份克隆到不同的地理区域。 Azure 云存储提供了五个级别的冗余

Blob 和文件存储

将 Azure 文件存储与服务器消息块 (SMB) 协议或网络文件系统 (NFS) 4.1 协议结合使用以作为备份存储进行装载时,Azure 文件存储不支持 RA-GRS 或 RA-GZRS。

Azure 文件存储备份存储可纵向扩展到 100 (TiB),支持 LRS、GRS 和 GZRS 冗余选项。

通过 NFS 3.0 协议装载的 Azure Blob 存储目前仅支持 LRS 和 ZRS 冗余。 配置了任何冗余选项的 Azure Blob 存储都可以通过 Blobfuse 进行装载。

恢复服务保管库

恢复服务保管库是一个管理实体,用于存储在不同时间创建的恢复点。 它提供了一个用于执行备份相关操作的接口。 这些操作包括按需备份、执行还原和创建备份策略。

Azure 备份会自动处理保管库的存储。 你需要在创建时指定存储的复制方式。 在保管库中保护项后,无法更改复制。 对于区域冗余,请选择异地冗余设置。

如果要还原到次要的 Azure 配对区域,请启用跨区域还原功能。 启用跨区域还原时,备份存储会从 GRS 移动到 RA-GRS。

Azure Blob 存储

Azure Blob 存储是一种基于云的服务,用于存储大量的非结构化数据,适用于 Oracle Database 备份。 可以使用 Blobfuse (Linux FUSE) 或 NFS v3.0 协议将 Azure Blob 存储装载到 Azure Linux VM。

Blobfuse

Blobfuse 是一个开源项目,提供 Azure Blob 存储支持的虚拟文件系统。 它使用 libfuse 开源库来与 Linux FUSE 内核模块进行通信。 它使用 Azure Blob 存储 REST API 来实现文件系统操作。

Blobfuse 目前适用于 Ubuntu 和 Centos/RedHat 分发版。 还可以通过 CSI 驱动程序将其用于 Kubernetes。

Blobfuse 在 Azure 区域中无处不在,适用于所有存储帐户类型,包括常规用途 v1/v2 和 Azure Data Lake Storage Gen2。 但它的性能不如替代协议。 为了适合用作数据库备份媒体,建议使用 SMB 或 NFS 协议来装载 Azure Blob 存储。

NFS v3.0

Azure 已推出对 NFS v3.0 协议的支持。 NFS 支持使得 Windows 和 Linux 客户端能够将 Azure Blob 存储容器装载到 Azure VM。

为了确保网络安全,用于 NFS 装载的存储帐户必须包含在虚拟网络中。 目前,在启用了 NFS 3.0 协议支持的帐户中,暂不支持 Microsoft Entra 安全性和访问控制列表 (ACL)。

Azure 文件

Azure 文件存储是基于云的、完全托管的分布式文件系统。 可以将其装载到本地或基于云的 Windows、Linux 或 macOS 客户端。

Azure 文件存储在云中提供可通过 SMB 和 NFS 协议访问的、完全托管的跨平台文件共享。 Azure 文件存储目前不支持多协议访问,因此每个共享项只能是 NFS 共享或者是 SMB 共享。 建议在创建 Azure 文件共享之前,先确定最能满足需求的协议。

还可以将 Azure 备份用于恢复服务保管库,从而帮助保护 Azure 文件共享。 此方法为 Oracle RMAN 备份提供了另一层保护。

Azure 文件存储与 NFS v4.1

可以使用 NFS v4.1 协议在 Linux 发行版中装载 Azure 文件共享。 支持的功能有限。 有关详细信息,请参阅对 Azure 存储功能的支持

支持高级文件存储的所有区域也都支持 Azure NFS 文件共享。

有关最新列表,请参阅 Azure 可用产品(按区域)页中的“高级文件存储”条目。

Azure 文件存储与 SMB 3.0

可以使用 SMB 内核客户端在 Linux 发行版中装载 Azure 文件共享。 在 Linux 发行版中提供的通用 Internet 文件系统 (CIFS) 协议是 SMB 的一种方言。 使用 SMB 在 Linux VM 上装载 Azure 文件共享时,它会作为 CIFS 类型文件系统进行装载,并且必须安装 CIFS 包。

通过 SMB 装载 Azure 文件共享的功能已在所有 Azure 区域中正式发布。 它展示了与 NFS v3.0 和 v4.1 协议相同的性能特征,因此我们目前推荐它作为向 Azure Linux 虚拟机提供备份存储媒体的方法。

提供两个受支持的 SMB 版本:SMB 2.1 和 SMB 3.0。 建议使用 SMB 3.0,因为它支持传输中加密。 但是,不同的 Linux 内核版本对 SMB 2.1 和 3.0 的支持程度也不同。 为确保你的应用程序支持 SMB 3.0,请参阅在 Linux 上装载 SMB Azure 文件共享

因为 Azure 文件存储是一项多用户文件共享服务,所以应对某些特性进行优化,使其更适合用作备份存储媒体。 建议关闭缓存并为已创建的文件设置用户和组 ID。

Azure NetApp 文件

Azure NetApp 文件服务是 Azure VM 中适用于 Oracle Database 的完整存储解决方案。 它以按流量计费的文件存储为基础,支持任何工作负载类型,默认情况下具有高度可用性。 搭配了 Oracle Direct NFS 驱动程序后,Azure NetApp 文件可为 Oracle Database 提供高度优化的存储层。

Azure NetApp 文件在使用写入时重定向机制的基础存储系统之上提供了基于存储的高效快照。 虽然快照的拍摄和还原速度很快,但它们仅充当第一道防线。 它们可以做到任何组织所需的大部分还原操作,这些操作通常属于从人为失误中恢复。

但是,快照并非完整的备份。 为了满足所有备份和还原要求,你必须在远程地域中创建外部快照副本或其他备份保管库,以帮助防范区域性服务中断。 请参阅 Azure NetApp 文件的快照的工作原理

为了确保数据库一致快照得以创建,必须在数据库和存储之间协调备份过程。 Azure 应用程序一致性快照 (AzAcSnap) 命令行工具可为第三方数据库提供数据保护。 在拍摄存储快照之前,它会处理让这些数据库处于应用程序一致状态所需的所有业务流程。 之后,它会将数据库返回到操作状态。 自版本 5.1 起,AzAcSnap 支持 Oracle Database 实例。

要详细了解如何在 Azure 上为 Oracle Database 使用 Azure NetApp 文件,请参阅使用 Azure NetApp 文件的解决方案体系结构

Azure 备份服务

Azure 备份是完全托管的平台即服务 (PaaS) 解决方案,用于备份数据并从 Microsoft Azure 云恢复数据。 Azure 备份可以备份和还原本地客户端、Azure VM 和 Azure 文件共享。 它还可以在 Azure VM 上备份 SQL Server、Oracle、MySQL、PostgreSQL 和 SAP HANA 数据库。

Azure 备份提供独立且隔离的备份,可以防范原始数据的意外破坏。 备份存储在提供恢复点内置管理的恢复服务保管库中。

Azure 备份利用 Azure 云来实现高可用性,无需维护和监视开销。 它不会限制传输的入站或出站数据量,也不会对你传输的数据收费。 数据在传输中和静态时受到保护。

Azure 备份提供了多种类型的复制,使备份数据保持高可用性:

  • LRS 会在数据中心内的存储缩放单元中将你的数据复制三次(即创建三个数据副本)。
  • GRS 是默认且推荐的复制选项。 GRS 会将你的数据复制到离源数据主位置数百英里之外的次要区域。

使用 GRS 冗余创建的保管库提供了配置跨区域还原功能的选项。 可以使用此功能还原 Azure 辅助配对区域中的数据。

Azure 备份服务提供了一个框架,可在 Windows 和 Linux VM 备份期间,保持 Oracle、MySQL、Mongo DB、SAP HANA 和 PostgreSQL 等应用程序的一致性:应用程序一致快照。 此框架需要在拍摄磁盘快照之前调用预脚本(使应用程序静止)。 它会在完成快照后调用后脚本(取消冻结应用程序的命令),使应用程序返回到正常模式。

尽管你可以在 GitHub 上找到示例的前脚本和后脚本,但你要负责创建和维护这些脚本。 对于 Oracle,数据库必须处于存档日志模式才能启用联机备份。 你必须创建和维护相应的数据库开始和结束备份命令,这些命令在前脚本和后脚本中运行。

Azure 备份提供了增强的前脚本和后脚本框架,它为选定的应用程序提供了打包的前脚本和后脚本。 你只需为应用程序命名,然后 Azure 备份会自动调用相关的前脚本和后脚本。 Microsoft 会管理打包的前脚本和后脚本,以保证这些脚本的支持、所有权和有效性。

目前,增强型框架支持的应用程序为 Oracle 12.1 或更高版本和 MySQL。 此快照是存储的完整副本,而不是增量快照或写入时复制快照,因此它是还原数据库的有效媒体。

VLDB 注意事项

对于非常大的数据库 (VLDB),由于其大小,需要仔细考虑备份策略。 使用 RMAN 备份到 Azure Blob 存储或 Azure 文件存储可能无法提供在目标时间框架中备份 VLDB 所需的吞吐量。

可以使用 RMAN 增量备份来减小备份大小。 此方法可能会允许将 Azure 存储用作 VLDB 的备份媒体。 但是,对于具有大量更改的 VLDB,它可能不会很有效。

对于 VLDB,建议使用提供快照功能的 Azure 服务,例如 Azure 备份或 Azure NetApp 文件。 在应用程序一致快照中,数据库会自动进入或退出备份模式,无论数据库大小如何,创建快照都只需几秒钟。

备份策略可能还与组织用于 Oracle Database 的整体存储解决方案相关联。 具有极端 I/O 吞吐量的数据库工作负载通常使用 Azure NetApp 文件或第三方 Azure 市场解决方案(例如 Silk)来支撑数据库存储吞吐量和 IOPS 要求。 这些解决方案还提供用于快速数据库备份和还原操作的应用程序一致快照。

后续步骤