类别:

Information Schema表函数

REPLICATION_GROUP_REFRESH_PROGRESS、REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB、REPLICATION_GROUP_REFRESH_PROGRESS_ALL

您可以使用 REPLICATION_GROUP_REFRESH_PROGRESS 系列表函数来查询复制或故障转移组的刷新操作状态:

  • REPLICATION_GROUP_REFRESH_PROGRESS 返回一个 JSON 对象,该对象按名称指示辅助复制或故障转移组的刷新状态。

  • REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB 返回一个 JSON 对象,该对象按查询 ID 指示辅助复制或故障转移组的刷新状态。

  • REPLICATION_GROUP_REFRESH_PROGRESS_ALL 返回一个 JSON 对象,指示所有辅助复制和故障转移组的刷新状态。

备注

  • REPLICATION_GROUP_REFRESH_PROGRESS 仅返回最近 14 天内发生的复制或故障转移组最新刷新活动。

  • REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB 和 REPLICATION_GROUP_REFRESH_PROGRESS_ALL 返回过去 14 天内的复制或故障转移组刷新活动。默认情况下(未提供日期范围实参时),REPLICATION_GROUP_REFRESH_PROGRESS_ALL 返回过去 12 小时的数据。使用可选的 DATE_RANGE_STARTDATE_RANGE_END 实参,在 14 天的保留期内查询自定义范围。

语法

REPLICATION_GROUP_REFRESH_PROGRESS( '<secondary_group_name>' )

REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB( '<query_id>' )

REPLICATION_GROUP_REFRESH_PROGRESS_ALL(
      [ DATE_RANGE_START => <constant_expr> ]
      [ , DATE_RANGE_END => <constant_expr> ] )

实参

'secondary_group_name'

辅助复制或故障转移组的名称。请注意,整个名称必须放在单引号内。

'query_id'

复制组刷新查询的 ID。可以从 Web 界面中的 History History 选项卡 页面获取查询 ID。

以下实参对于 REPLICATION_GROUP_REFRESH_PROGRESS_ALL 是可选的。

DATE_RANGE_START => constant_expr. DATE_RANGE_END => constant_expr

返回复制刷新进度的日期/时间范围。

  • 如果既未指定开始日期,也未指定结束日期,则默认值为过去 12 小时。

  • 如果指定了开始日期但未指定结束日期,则使用 CURRENT_DATE 午夜作为范围的结束时间。

  • 如果指定了结束日期但未指定开始日期,则范围从 DATE_RANGE_END 开始前 12 小时开始算起。

数据保留 14 天。如果请求的范围超出了 14 天的保留期,则该函数将返回错误。

输出

该函数返回以下各列。REPLICATION_GROUP_REFRESH_PROGRESS_ALL 还有其他列,分别为结果集的前两列。

列名称

数据类型

描述

GROUP_NAME

TEXT

指定哪个二级复制或故障转移组对应于结果集中的此行。仅适用于 REPLICATION_GROUP_REFRESH_PROGRESS_ALL。

GROUP_TYPE

TEXT

指定结果集中与该行对应的组是故障转移组还是复制组。值为 FAILOVERREPLICATION。仅适用于 REPLICATION_GROUP_REFRESH_PROGRESS_ALL。

PHASE_NAME

TEXT

到目前为止已完成(或正在进行)的复制阶段的名称。有关阶段列表,请参阅使用说明。

START_TIME

TIMESTAMP_LTZ

复制阶段开始的时间。

END_TIME

TIMESTAMP_LTZ

该阶段结束的时间(如果适用)。如果该阶段正在进行或者是终止阶段 (COMPLETED/FAILED/CANCELED),则为 NULL

PROGRESS

TEXT

  • PRIMARY_UPLOADING_DATA:复制的总字节数的百分比。

  • SECONDARY_DOWNLOADING_METADATA:复制的总对象数的百分比。

  • SECONDARY_DOWNLOADING_DATA:复制的总字节数的百分比。

剩余阶段为空

DETAILS

VARIANT

  • 对于阶段 PRIMARY_UPLOADING_METADATA

    • primarySnapshotTimestamp:主快照的创建时间。格式为纪元时间。

  • 对于阶段 PRIMARY_UPLOADING_DATA

    • totalBytesToReplicate:预计上传的总字节数。

    • totalBytesToUpload:需要上传的总字节数。

    • bytesUploaded:迄今为止上传的总字节数。

    • databases:每个成员数据库包含以下字段的 JSON 对象列表:

      • name:数据库名称。

      • totalBytesToReplicate:预计上传到数据库的总字节数。

  • 对于阶段 SECONDARY_DOWNLOADING_DATA

    • totalBytesToReplicate:预计下载的总字节数。

    • totalBytesToDownload:需要下载的实际字节数。

    • bytesDownloaded:迄今为止下载的实际字节数。

    • databases:每个成员数据库包含以下字段的 JSON 对象列表:

      • name:数据库名称。

      • totalBytesToReplicate:预计下载到数据库的总字节数。

  • 对于阶段 SECONDARY_DOWNLOADING_METADATA

    • totalObjects:要下载的总对象数。

    • completedObjects:迄今为止下载的总对象数。

    • objectTypes:每个对象类型包含以下字段的 JSON 对象列表:

      • objectType:对象的类型(例如,用户、角色、授权、仓库、架构、表、列等)。

      • totalObjects:此类型对象的总数。

      • completedObjects:此类型已完成对象的数量。

  • 对于阶段 FAILED

    • errorCode:失败的错误代码。

    • errorMessage:失败的错误消息。

使用说明

  • 如果未提供 DATE_RANGE_STARTDATE_RANGE_END 实参,REPLICATION_GROUP_REFRESH_PROGRESS_ALL 将返回过去 12 小时的数据。要检索过去 12 小时之前的数据,请明确指定日期范围。数据最多保留 14 天。

  • 仅返回对复制组或故障转移组具有任何权限的角色的行。

  • 仅返回当前账户中辅助复制或故障转移组的行。

  • 当调用 Information Schema 表函数时,会话必须具有正在使用的 INFORMATION_SCHEMA 架构,或者 函数名称必须受到完全限定。有关更多详细信息,请参阅 Snowflake Information Schema

  • 以下是所处理订单中的阶段列表:

    #

    阶段名称

    描述

    1

    SECONDARY_SYNCHRONIZING_MEMBERSHIP

    辅助复制或故障转移组从主组接收有关该组中包括的对象的信息,并更新其成员元数据。

    2

    SECONDARY_UPLOADING_INVENTORY

    辅助复制或故障转移组将目标账户中其对象的清单发送到主组。

    3

    PRIMARY_UPLOADING_METADATA

    主复制或故障转移组在源账户中创建元数据快照并将其发送到辅助组。

    4

    PRIMARY_UPLOADING_DATA

    主复制或故障转移组复制辅助组需要的文件,以协调源账户和目标账户中的对象之间的任何增量。

    5

    SECONDARY_DOWNLOADING_METADATA

    辅助复制或故障转移组应用主复制或故障转移组发送的元数据快照。元数据更新不是以原子方式应用,而是随着时间的推移逐步应用。

    6

    SECONDARY_DOWNLOADING_DATA

    辅助复制或故障转移组将主组发送的文件复制到目标账户。

    7

    COMPLETED / FAILED / CANCELED

    刷新运行状态。

  • PRIMARY_UPLOADING_DATASECONDARY_DOWNLOADING_DATA 阶段,totalBytesToReplicate 值是在复制操作之前估计的。该值可能不同于相应阶段的 totalBytesToUploadtotalBytesToDownload 值。

    例如,如果在 PRIMARY_UPLOADING_DATA 阶段,先前的复制操作上传了一些字节,但在操作完成前被取消,则这些字节将不会再次上传。在这种情况下,totalBytesToUpload 将低于 totalBytesToReplicate

示例

检索复制组 rg1 的当前刷新进度,以执行以下语句:

SELECT phase_name, start_time, end_time, progress, details
  FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS('rg1'));

要通过查询 ID 检索复制组刷新进度,请替换示例中的查询 ID 并执行以下语句:

SELECT phase_name, start_time, end_time, progress, details
  FROM TABLE(
    INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB(
      '012a3b45-1234-a12b-0000-1aa200012345'));

要检索所有故障转移组和复制组过去 12 小时(默认)的刷新进度,请执行以下语句:

SELECT phase_name, start_time, end_time, progress, details
  FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS_ALL());

要检索所有组过去 7 天的刷新进度,请执行以下操作:

SELECT phase_name, start_time, end_time, progress, details
  FROM TABLE(
    INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS_ALL(
        DATE_RANGE_START => DATEADD(D, -7, CURRENT_DATE),
        DATE_RANGE_END => CURRENT_DATE));