使用初始加载提取的 PostgreSQL 的精确实例化

可以通过使用精确实例化的可选方法来完成从源 PostgreSQL 数据库到 Oracle GoldenGate 目标的数据同步。此方法是在 Oracle GoldenGate 21c (21.8.0) 中引入的。

精确实例化的优点是无需在目标复制中执行任何碰撞处理。这对于不支持碰撞处理的目标(如平面文件)非常重要。此方法使用数据库快照将初始加载提取的输出与更改数据捕获提取的起始位置同步。此快照由初始加载提取管理,因此多个初始加载提取无法使用同一快照。因此,使用多个初始加载提取并行化工作量时,不支持此方法。

以下示例使用微服务体系结构中的管理客户机。假设您熟悉 Oracle GoldenGate,并且已正确设置源数据库和目标数据库,并具备所有必需的先决条件。这些步骤至少需要 Oracle GoldenGate 21c (21.8.0) 或更高版本。

执行以下步骤,使用精确的实例化方法设置端到端初始加载和同步流程:

  1. 使用源 PostgreSQL 数据库注册更改数据捕获 (Change Data Capture,CDC) 提取。

    DBLOGIN USERIDALIAS src_alias
    REGISTER EXTRACT extecdc

    在此示例中,extecdc 是提取名称。对于微服务体系结构,请使用 DBLOGIN USERIDALIAS 进行数据库连接设置。

  2. 创建初始加载提取。

    ADD EXTRACT extinit, SOURCEISTABLE
    EDIT PARAMS extinit

    初始装入提取参数文件必须包含 INITIALLOADOPTIONS USESNAPSHOT 参数。例如:

    EXTRACT extinit
    INITIALLOADOPTIONS USESNAPSHOT
    SOURCEDB USERIDALIAS src_alias
    EXTFILE west/ei, MEGABYTES 500, PURGE
    TABLE public.*;

    请参见 INITIALLOADOPTIONS 以了解此参数与 USESNAPSHOT 选项的用法。

  3. 启动初始加载提取。

    START EXTRACT extinit
  4. 初始加载提取完成并停止后,检查其报告文件以确定 CDC 提取要使用的定位 LSN。

    例如,在以下输出中,CDC Extract 将使用的定位 LSN 将为 "0/173F770"。

    INFO    OGG-100001 A consistent point is
    established in database 'tpcc' using replication slot ogg_initx_1234 at LSN 0/173F770
    and snapshot name '00000003-00000026-1'.
    INFO    OGG-100002 Create or position the CDC
    extract to LSN 0/173F770. Example: ADD EXTRACT <cdc-extract> TRANLOG LSN 0/173F770
    
    or ALTER EXTRACT <cdc-extract> LSN 0/173F770.
  5. 创建并启动从初始加载提取读取线索的初始加载复制。

    DBLOGIN USERIDALIAS tgt_alias
    ADD CHECKTPOINTTABLE ggs.checkpoint
    ADD REPLICAT repinit, EXTTRAIL west/ei, CHECKPOINTTABLE ggs.ggcheckpoint
    START REPLICAT repinit

    下面是初始装入复制参数文件的示例:

    REPLICAT repinit
    TARGETDB USERIDALIAS tgt_alias
    BATCHSQL
    MAP public.*, TARGET public.*;
  6. 使用初始加载提取报告文件中引用的一致 LSN 值添加并启动 CDC 提取 (extecdc)。

    ADD EXTRACT extecdc, TRANLOG, LSN 0/173F770
    ADD EXTTRAIL ea, EXTRACT extecdc
    START EXTRACT extecdc

    下面是 CDC Extract 参数文件的示例:

    EXTRACT extecdc
    SOURCEDB USERIDALIAS src_alias
    EXTTRAIL west/ea
    TABLE public.*;
  7. 当初始加载复制处理了所有初始加载记录时,添加并启动从 CDC 提取中读取线索的 CDC 复制。

    ADD REPLICAT repecdc, EXTTRAIL west/ea, CHECKPOINTTABLE ggs.ggcheckpoint
    START REPLICAT repecdc
  8. 监视 CDC 提取和 CDC 复制中的滞后,当它们都接近零秒时,从源数据库到目标数据库的数据流应接近实时。