恢复数据流

您可以恢复永久失败的数据流,而无需创建新的数据流。为此,您可以指定 Datastream 尝试从哪个位置继续从来源读取更改。

数据流恢复概览

正在运行的数据流可能会遇到一些不可恢复的错误,并将其状态更改为 FAILED_PERMANENTLY。此类错误会阻止数据流继续运行,并可能导致数据丢失。

您可以恢复永久失败的数据流,方法是将其设置为忽略错误并继续读取正在进行的事件,而不是重新创建数据流并回填历史数据。如需恢复永久失败的数据流,请重置复制,以开始从另一个复制位置读取数据。每种受支持的来源类型都有自己的复制位置定义:

  • 对于 Oracle 来源,复制位置是数据库中的重做日志文件以及此文件中的系统更改编号 (SCN)。
  • 对于 MySQL 源,复制位置是数据库二进制日志 (binlog) 文件以及此文件中的位置。
  • 对于 PostgreSQL 来源(包括 AlloyDB for PostgreSQL),复制位置是复制槽中的日志序列号 (LSN)。在恢复期间,数据流开始从复制槽中的第一个 LSN 读取数据。

恢复 MySQL 或 Oracle 来源的数据流

您可以使用以下选项恢复 MySQL 或 Oracle 来源的数据流:

  • 从当前位置重试(推荐):选择此选项,尝试从流上次失败的位置进行流式传输。您需要先修复日志文件或从备份中恢复日志文件。建议您使用此选项。

  • 跳过当前位置,从下一个可用位置流式传输:如果缺少一个或多个日志文件,请选择此选项以跳过这些文件,并从下一个可用文件的第一个位置继续流式传输。缺失日志文件中记录的变更将会丢失,但您可以通过执行回填来恢复这些文件。

  • 跳过当前位置,从最近的位置流式传输:如果缺少一个或多个日志文件,请选择此选项以跳过这些文件,并从最新日志文件中的最近位置继续流式传输。缺失日志文件中记录的变更将会丢失,但您可以通过执行回填来恢复这些文件。

  • 从首选的流式传输文件和位置恢复:选择此选项可从特定的日志文件和日志位置继续数据流。如果指定的日志位置与丢失的日志位置不重叠或不紧邻其后,则部分更改可能会丢失。您可以通过执行回填来恢复这些更改。

如需恢复 MySQL 或 Oracle 来源的永久失败的数据流,请执行以下步骤:

  1. 前往 Google Cloud 中的数据流页面。

    转到“数据流”页面

  2. 选中要恢复的数据流左侧的复选框。

  3. 点击恢复

  4. 系统会打开选择恢复策略窗格。选择一个选项。如果您选择从首选的流式传输文件和位置恢复,请输入以下内容:

    • 对于 MySQL 来源:文件名字段中的日志文件名和位置字段中的日志位置。如果您未指定位置,则流会从所指示日志文件中的第一个位置继续。
    • 对于 Oracle 来源:系统变更编号 (SCN) 字段中的系统变更编号 (SCN)。此字段是必填字段。
  5. 点击应用

  6. 数据流恢复后,数据流页面的已恢复列中会显示一个时间戳。

恢复 PostgreSQL 来源的数据流

如需恢复 PostgreSQL 来源的数据流,您需要提供复制槽名称。服务器使用此复制槽向 Datastream 发送事件。复制槽名称可以与用于失败数据流的槽相同,也可以不同:

在日志位置丢失与新复制槽中第一个 LSN 之间发生的任何来源更改事件都将丢失。您可以通过执行回填来恢复这些更改。

如需恢复 PostgreSQL 来源永久失败的数据流,请执行以下步骤:

  1. 前往 Google Cloud 中的数据流页面。

    转到“数据流”页面

  2. 选中要恢复的数据流左侧的复选框。

  3. 点击恢复

  4. 此时会打开定义新的复制槽窗格。

  5. 复制槽名称字段中,提供数据流将尝试从中进行恢复的新复制槽的名称。如果您使用相同的名称重新创建了复制槽,或者想要重复使用在配置来源时指定的槽,则可以将此字段留空。

  6. 点击应用

  7. 数据流恢复后,数据流页面的已恢复列中会显示一个时间戳。

您还可以通过数据流详情页面恢复永久失败的数据流。为此,请在查看有关您的数据流的详细信息时点击恢复数据流

在手动故障切换场景中对 MySQL 来源使用数据流恢复

您可以执行手动故障切换并使用数据流恢复,以免在维护或主实例故障期间从头开始重新创建数据流。通常,Datastream 不支持通过副本进行故障切换,因为它们会破坏 binlog 连续性,但您可以按照以下步骤恢复数据流并确保捕获变更数据:

  1. 停止对主实例的所有写入操作。
  2. 确保数据新鲜度指标设置为 0。这意味着 Datastream 已捕获所有更改,并且没有可从来源读取的新事件。如需了解详情,请参阅监控数据流
  3. 故障切换到新的数据库实例。
  4. 如果需要,请将数据流的连接配置文件更新为新的数据库实例(例如,您可能需要更改数据库主机名或 IP 地址)。如需了解详情,请参阅修改连接配置文件
  5. 从故障切换实例上的特定位置恢复数据流,以确保 CDC 连续性。