检查点、恢复和交付语义

了解数据流配置的检查点、恢复和交付。

pos 公共合同

默认情况下,每个非元数据 DML 或 DDL 记录都包含不透明的 pos 标记。在内部,令牌具有足够的 GoldenGate 定位信息来标识记录,包括提交或序列信息、事务处理标识和记录排序。它的编码不是公共源协调格式,并且可能因源类型和发行版而异。

执行 不
成功处理后存储确切的字符串。 对其进行语法分析以获取 Oracle SCN、PostgreSQL LSN、MySQL binlog 坐标、SQL Server LSN 或任何其他特定于源的偏移量。
将其范围限定为数据流、源线索合同和消费者。 按词汇或数字比较职位以确定顺序。
在 URL 中用作 begin 时对其进行百分比编码。 修剪、规范化、连接、解密或重写它。
使用单独的 csn、xid、opSeqno 和 transInd 字段进行诊断或事务分析。 重用来自其他流、其他筛选器合同或其他环境的位置。

源可移植性:对于 Oracle、PostgreSQL、MySQL、SQL Server 和其他受支持的源,客户机恢复算法有意相同:保留不透明的 pos 并使其保持不变。Data Streams 客户端合同既不要求也不支持特定于源的坐标分析。

检查点必须表示其业务影响持久的最后一条记录。在业务写入之前保存可能会在崩溃后丢失数据。在单独的事务中非幂等写入后保存可能会在崩溃后生成重复项。

端到端的精确一次模式

模式 工作方式 使用时间
原子接收器和检查点事务处理 在同一数据库事务处理中编写业务记录和新 pos。 sink 和 checkpoint 可以共享事务数据存储。
幂等键 使用 pos 或业务关键字加操作标识作为唯一关键字;重试同一记录将变为无操作。 sink 支持唯一性或条件写入。
持久暂存日志 将记录和 pos 以原子方式附加到持久日志,然后独立处理日志。 业务处理速度慢、涉及多个步骤或跨多个系统。
通过对账至少一次 接受重复项,定期删除重复项,并核对盘点或校验和。 该用例允许最终更正。

注意:数据流 exactlyOnce 介绍了服务端重复隐藏和恢复响应。它不会只产生一次任意下游副作用,因为 WebSocket 协议没有与客户机进行每记录事务确认。

服务质量

请参见下表中的服务质量准则:

模式 复制 保存的职位不可用 推荐使用
exactlyOnce 隐藏在恢复和源线索重新启动/异常终止处理期间识别的重复项。 连接失败,出现错误。 持久业务处理的默认值。与原子或幂等的消费者逻辑配对。
atLeastOnce 在恢复和源线索重新启动/异常终止处理期间不隐藏重复项。 连接失败,出现错误。 当首选重放并且使用者设计为删除重复项时使用。
atMostOnce 隐藏已识别的重复项。 服务将查找下一个可用记录并继续,这可能会跳过数据。 仅当数据丢失是显式可接受的,并且正向进度比完整性更重要时才使用。

事务处理元数据和排序

有关事务处理元数据和排序要求,请参阅下表:

字段 用途 限制
xid 对与源事务处理关联的记录进行分组。 格式与源相关,应视为字符串。
csn 配置时公开来源提交序号。 含义和格式取决于源;不要用作重新启动令牌。
opSeqno 记录事务处理中的序号。 启用并(可选)显式重命名。
transInd B first、M middle、E last 或 W whole/single-operation transaction。 筛选可以删除记录,并使观察到的序列不完整。协调处理也会降低使用率。
pos 记录的唯一恢复位置。 不透明;请勿从事务处理文本中排序或推导事务处理边界。

不要假定连接始终从事务处理边界开始。在较早的操作不再可用后,可以开始时间戳查找或保留线索边界。如果应用程序需要完整的源事务处理,请设计事务处理缓冲区,定义大型事务处理的限制,并指定在事务处理开始不可用时应执行的操作。

保存的职位不可用时

要检查变为不可用状态的已保存职位,请检查以下各项:

跟踪保留计划

将线索保留设置为超过恢复点目标以及操作检测和响应时间。例如,如果使用者可以脱机 24 小时,并且事件响应需要 12 小时,则需要 36 小时以上的可用线索,并且存在大量积压和维护的额外保证金。bufferSize 不会延长线索保留期。