Oracle GoldenGate 详细概述
什么是 Oracle GoldenGate
Oracle GoldenGate是用于实时数据集成和复制的综合软件包。它支持高可用性解决方案、实时数据集成、事务更改数据捕获、数据复制、转换以及操作和分析企业系统之间的验证。
使用Oracle GoldenGate,您可以在企业的多个系统之间移动已提交的事务。Oracle GoldenGate使您能够将 Oracle 数据库之间的数据复制到其他受支持的异构数据库,以及异构数据库之间。
为什么使用Oracle GoldenGate
企业数据通常分布在整个企业的异构数据库中。要在不同数据源之间获取数据,您可以使用 Oracle GoldenGate 实时加载、分发和过滤企业内的事务,并在接近零停机的情况下实现不同数据库之间的迁移。
为此,您需要一种方法来有效地将数据从一个系统实时移动到另一个系统,而且停机时间为零。Oracle GoldenGate是 Oracle 用于复制和集成数据的解决方案。
Oracle GoldenGate具有以下主要特性:
数据移动是实时的,减少了延迟。
仅移动已提交的事务,从而实现一致性并提高性能。
支持不同版本的 Oracle 数据库以及运行在各种操作系统上的各种异构数据库。您可以将数据从 Oracle 数据库复制到不同的异构数据库。
架构简单,配置简单。
以最低的基础数据库和基础架构开销实现高性能。
您可以使用Oracle GoldenGate来满足以下业务需求:
业务连续性和高可用性
业务连续性是企业在其运营中没有任何失误的情况下提供其功能和服务的能力。高可用性是最高级别的容错能力。为实现业务连续性,系统设计有多个服务器、多个存储和多个数据中心,以提供足够高的可用性来支持业务的真正连续性。要建立和维护这样的环境,需要在这些多个服务器和数据中心之间移动数据,这可以使用Oracle GoldenGate轻松完成。
初始加载和数据库迁移
初始加载是从源数据库中提取数据记录并将这些记录加载到目标数据库的过程。初始加载是只执行一次的数据迁移过程。Oracle GoldenGate允许您在不使系统脱机的情况下执行初始负载数据迁移。
数据整合
数据集成涉及组合来自多个不同来源的数据,这些数据使用各种技术存储,并提供数据的统一视图。Oracle GoldenGate提供实时数据集成。
Oracle GoldenGate 的拓扑
OGG 有许多不同的拓扑结构,范围从简单的单向拓扑到更复杂的对等拓扑。无论架构如何,Oracle GoldenGate 都提供了它们之间的相似性,从而使管理更容易。
Oracle GoldenGate 架构
Oracle GoldenGate支持两种架构,经典架构和微服务架构( MA )。
可以出于以下目的配置 Oracle GoldenGate:
从一个数据库中静态提取数据记录并将这些记录加载到另一个数据库。
持续提取和复制事务数据操作语言 (DML) 操作和数据定义语言 (DDL) 更改(对于受支持的数据库),以保持源数据和目标数据一致。
使用 Oracle GoldenGate for Big Data 从支持的数据库源提取数据并复制到大数据和文件目标。
下表描述了两种 Oracle GoldenGate 架构以及您应该何时使用每种架构。
X 经典架构 微服务架构
它是什么? Oracle GoldenGate 经典架构是企业复制的原始架构。该架构提供了跨各种拓扑有效传输事务数据所需的流程和文件。这些进程和文件构成了经典架构的主要组件,并且是 Oracle GoldenGate 12 c (12.3.0.1) 版本之前的主要产品安装方法。 Oracle GoldenGate 微服务架构是一种微服务架构,支持将 REST 服务作为 Oracle GoldenGate 环境的一部分。支持 REST 的服务提供 API 端点,可用于通过基于 Web 的控制台、增强的命令行界面、PL/SQL 和脚本语言进行远程配置、管理和监控。
我应该什么时候使用它? 仅当 MA 版本不可用于该平台时,才能安装和配置 Oracle GoldenGate 以使用 Oracle GoldenGate经典架构,在以下场景中提到:从一个数据库中静态提取数据记录并将这些记录加载到另一个数据库。持续提取和复制事务数据操作语言 (DML) 操作和数据定义语言 (DDL) 更改(对于受支持的数据库),以保持源数据和目标数据一致。从数据库中提取并复制到数据库外的文件。从异构数据库源中捕获。 可以安装和配置 Oracle GoldenGate 以将 Oracle GoldenGate 微服务架构 用于以下目的:具有完全安全的 HTTPS 接口和用于流式传输数据的安全 WebSocket 的大规模云部署。更简单地管理 Oracle GoldenGate 环境的多个实施,并控制用户对 Oracle GoldenGate 设置和监控不同方面的访问。支持系统管理的数据库分片以提供细粒度的多主复制,其中所有分片都是可写的,并且每个分片可以部分复制到分片组内的其他分片。
支持哪些数据库? 按照认证矩阵,经典架构支持所有受支持的数据库 。 MA 仅支持用于端到端 MA-only 拓扑的 Oracle 数据库。但是,与异构数据库关联的源 Oracle GoldenGate Classic 可以复制到带有 Oracle 的目标 Oracle GoldenGate MA,或者源 Oracle GoldenGate MA 带有 Oracle 复制到带有异构数据库的目标 Oracle GoldenGate legacy。
Oracle GoldenGate 支持的处理方法和数据库
Oracle GoldenGate 支持在整个企业的多个异构平台之间在事务级别交换和操作数据。它以事务完整性和最小开销在您现有的基础设施上移动已提交的事务。其模块化架构使您能够灵活地跨各种拓扑提取和复制选定的数据记录、事务更改以及对 DDL(数据定义语言)的更改。
对 DDL、某些拓扑以及捕获或交付配置的支持因数据库类型而异。
这是支持的处理方法的列表:
数据库 基于日志的提取(捕获) Non-Log-Based Extraction (1)(捕获) 复制(交付)
DB2 for i N/A N/A X
DB2 LUW X N/A X
DB2 z/OS X N/A X
Oracle Database X N/A X
MySQL X N/A X
SQL Server N/A X X
Terradata N/A N/A X
Oracle GoldenGate 经典架构的组件
您可以使用Oracle GoldenGate 经典架构从命令行配置和管理您的数据复制。
此图显示了用于 Oracle GoldenGate 初始加载方法和复制正在进行的数据更改的 Oracle GoldenGate 架构。在初始加载时,从源数据库中选择所需的行并将其发送到 Replicat 以填充目标表,从而使两个数据库处于同步状态。在更改同步模式下,提取进程捕获事务更改,然后将数据发送到目标,或者将其持久化到可选的本地路径,该路径由将数据发送到目标的数据泵进程读取。在目标上,收集器进程接收数据并将其写入本地路径,复制进程从中获取数据并将其应用到目标数据库。
Manager
Manager 是 Oracle GoldenGate 的控制进程。Manager 必须在 Oracle GoldenGate 配置中的每个系统上运行,然后才能启动 Extract 或 Replicat 进程。
管理器还必须在 Extract 和 Replicat 进程运行时保持运行,以便执行资源管理功能。一个 Manager 进程可以控制多个 Extract 或 Replicat 进程。
管理器执行以下功能:
启动 Oracle GoldenGate 进程
启动动态进程
维护进程的端口号
根据保留规则清除跟踪文件
创建事件、错误和阈值报告
Data Pump
数据泵(Data pump)是源Oracle GoldenGate配置中的辅助提取组。
如果您配置数据泵,则提取过程会将所有捕获的操作写入源数据库上的跟踪文件。数据泵读取源数据库上的跟踪文件,并将数据操作通过网络发送到目标数据库上的远程跟踪文件。对于大多数配置,强烈建议配置数据泵。如果未使用数据泵,则提取会将所有捕获的操作流式传输到远程目标数据库上的跟踪文件中。然而,在带有数据泵的典型配置中,主要 Extract 组写入源系统上的一个路径。数据泵读取此路径并将数据操作通过网络发送到目标上的远程路径。
通常,数据泵可以执行数据过滤、映射和转换
可以通过两种方式配置数据泵:
执行数据操作:数据泵可以配置为执行数据过滤、映射和转换。
不执行数据操作:数据泵可以配置为直通模式,其中数据按原样被动传输,无需操作。直通模式增加了数据泵的吞吐量,因为所有查找对象定义的功能都被绕过了。
Collector
收集器由管理器进程启动,是在目标系统的后台运行的进程。它将事务数据重新组装到目标跟踪中。
当 Manager 收到来自 Extract 进程的连接请求时,Collector 会扫描并绑定到可用端口,并将端口号发送到 Manager 以分配给发出请求的 Extract 进程。收集器还接收提取进程发送的捕获数据并将它们写入远程跟踪文件。
收集器在需要网络连接时由管理器自动启动,因此Oracle GoldenGate用户不会与其交互。收集器只能从一个 Extract 进程接收信息,因此您使用的每个 Extract 都有一个收集器。当关联的 Extract 进程终止时,收集器终止。
常见的数据复制过程
Extract
Extract 是配置为针对源数据库运行或配置为在下游挖掘数据库(仅限 Oracle)上运行的过程,并捕获在位于其他地方的真实源数据库中生成的数据。这个过程就是Oracle GoldenGate的抽取或数据捕获机制。
您可以为以下用例配置 Extract:
初始加载:当您为初始加载设置Oracle GoldenGate时,提取过程会直接从源对象捕获当前的静态数据集。
更改同步:设置Oracle GoldenGate 时为了使源数据与另一组数据保持同步,在初始同步发生后,提取过程会捕获对配置对象执行的 DML 和 DDL 操作。提取可以在与数据库相同的服务器上本地运行,也可以在使用下游集成提取的另一台服务器上运行以减少开销。它存储这些操作,直到它收到包含它们的事务的提交记录或回滚。如果它收到回滚,它会丢弃该事务的操作。如果它收到一个提交,它会将事务以一系列称为跟踪的文件保存到磁盘,在那里它排队等待传播到目标系统。每个事务中的所有操作都作为一个按顺序组织的事务单元写入跟踪,并按照它们提交到数据库的顺序(提交序列顺序)。这种设计可确保速度和数据完整性。
Trail
Trail 是磁盘上的一系列文件,Oracle GoldenGate 将捕获的更改存储在其中以支持数据库更改的连续提取和复制。
Trail 可以存在于源系统、中间系统、目标系统或这些系统的任意组合上,具体取决于您配置 Oracle GoldenGate 的方式。在本地系统上,它被称为提取路径(或本地路径)。在远程系统上,它被称为远程跟踪。通过使用存储路径,Oracle GoldenGate支持数据准确性和容错性。跟踪的使用还允许提取和复制活动彼此独立地发生。
Trail 允许 Oracle 数据库在异构环境中运行。数据以一致的格式存储在一个跟踪文件中,因此它可以被所有支持的数据库的 Replicat 进程读取。
写入跟踪文件的进程:
在 Oracle GoldenGate Classic 中,Extract 和数据泵进程写入Trail。
从跟踪文件中读取的进程:
数据泵和 Replicat 进程从跟踪文件中读取。数据泵从链接到 Extract 进程的本地路径中提取 DML 和 DDL 操作,在需要时执行进一步处理,并将数据传输到由下游的下一个Oracle GoldenGate进程(通常是 Replicat,但也可以是如果需要,另一个数据泵)。
Replicat 进程读取跟踪并将复制的 DML 和 DDL 操作应用到目标数据库。
Replicat
Replicat 是一个将数据传送到目标数据库的过程。它读取目标数据库上的跟踪文件,重构 DML 或 DDL 操作,并将它们应用到目标数据库。
Replicat 进程使用动态 SQL 将 SQL 语句编译一次,然后使用不同的绑定变量多次执行。您可以配置 Replicat 进程,使其在将复制操作应用到目标数据库之前等待特定的时间。
对于Oracle GoldenGate的两个常见用例,Replicat 进程的作用如下:
初始加载:当您为初始加载设置Oracle GoldenGate时,Replicat 进程将静态数据副本应用于目标对象或将数据路由到高速批量加载实用程序。
更改同步:当您设置Oracle GoldenGate以保持目标数据库与源数据库同步时,Replicat 进程使用本机数据库接口或 ODBC 将源操作应用于目标对象,具体取决于数据库类型。
您可以使用一个或多个并行的 Extract 进程和 Data Pump 配置多个 Replicat 进程以提高吞吐量。为了保持数据完整性,每组进程处理一组不同的对象。