监控复制和故障切换

本主题提供了有关如何监控账户复制进度、历史记录和成本的信息。

本主题内容:

使用 Snowsight 监控复制

要监控组织中 复制组和故障转移组 的复制进度和状态,请使用 Snowsight 中的 Replication 页面。

您可以查看刷新操作的状态和详细信息,其中包括:

  • 最近刷新操作的当前状态。

  • 副本滞后时间(自上次刷新操作以来的时间)。

  • 各组的副本滞后时间分布。

  • 下一次计划刷新操作的日期和时间。

备注

  • Snowsight 列出了其中具有 MONITOR、OWNERSHIP 或 REPLICATE 权限角色的复制组和故障转移组。

  • 刷新操作详细信息仅对具有 ACCOUNTADMIN 角色或组的 OWNERSHIP 权限的用户可用。

  • 您必须登录目标账户才能查看刷新操作详细信息。如果没有,系统将提示您登录。

    源账户和目标账户都必须使用相同的连接类型(公共互联网)。否则,登录目标账户将失败。

要查看每个复制组或​​故障转移组的复制状态,请完成以下步骤:

  1. 登录到 Snowsight 并导航至 Admin » Accounts

  2. 选择 Replication,然后选择 Groups

Groups 页面显示了具有查看权限角色所在所有组的 刷新操作详细信息。您可以使用磁贴来筛选视图。

  • 例如,如果 Status 磁贴指示刷新操作失败,您可以选择该磁贴来调查存在故障的组。

  • Longest Replication lag 磁贴中的滞后时间指的是自上次刷新操作以来的持续时间。这是辅助复制组或故障转移组*滞后*于主要组的时间长度。最长滞后时间指的是自最旧的辅助复制组上次刷新以来的时间长度。

    例如,如果您有三个故障转移组 fg_1fg_2fg_3,其独立的复制计划分别为 10 分钟、2 小时和 12 小时,则最长滞后时间可能长达 12 小时。但是,如果 fg_3 在目标账户中最近刷新过,则其滞后时间会重置为 0,不同的故障转移组可能会有更长的滞后时间。

  • 您可以选择 Group Lag Distribution 磁贴中的单个条形图来将结果筛选到单个组。

您还可以使用搜索字段或下拉菜单来筛选组:

  • 您可以使用 |sf-search-icon|(搜索)框按复制组或故障转移组名称进行搜索。

  • 选择 Type 即可按复制组或故障转移组筛选结果。

  • 选择 Replicating 即可按主要组(选择 To)或次要组(选择 From)进行筛选。

  • 选择 |sf-account-icon|(账户)菜单即可按账户名称筛选结果。

  • 选择 Status 即可按刷新操作状态筛选结果:

    • Refresh Cancelled

    • Refresh Failed

    • Refresh In Progress

    • Refresh Successful

您可以查看有关复制组和故障转移组的以下详细信息:

描述

Name

复制组或故障转移组的名称。

Is Replicating

指示组是否正在复制 目标账户或 源账户复制。

如果此列包含 可用的目标,则不存在辅助复制组或故障转移组。可用目标的数量表示主要组可以复制到的目标账户数量。

Status

显示最新刷新操作的状态。

您必须登录目标账户才能访问复制详细信息。如果您没有登录,请选择 Sign in 以查看辅助组的刷新操作状态。

源账户和目标账户都必须使用相同的连接类型(公共互联网)。否则,登录目标账户将失败。

Replication Lag

自上次刷新操作以来的时间长度。这是辅助复制组“滞后”于主要复制组的时间长度。

Next Refresh

下一次计划刷新操作的日期和时间。

您可以选择一个复制组或故障转移组,查看有关每次刷新操作的详细信息。有关更多信息,请参阅 Snowsight 中有关复制历史记录的部分

监控刷新操作的进度

本节提供了有关如何使用 Snowsight 或 SQL 监控特定复制组或故障转移组的复制进度的信息。

使用 Snowsight 监控刷新操作的进度

您可以使用 Snowsight 查看正在进行的刷新操作的状态以及历史刷新操作的详细信息。

  1. 登录到 Snowsight 并导航至 Admin » Accounts

  2. 依次选择 ReplicationGroups

  3. 选择复制组或故障转移组的名称。

有关详情视图的详细信息,请参阅 Snowsight 中有关复制历史记录的部分

使用 SQL 监控刷新操作的进度

要监控复制组或故障转移组刷新的进度,请查询 REPLICATION_GROUP_REFRESH_PROGRESS、REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB 表函数(在 Snowflake Information Schema 中)。

示例

查看故障转移组 myfg 最近的刷新操作进度:

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

查看复制历史记录

您可以使用 Snowsight 或 SQL 查看复制历史记录。

备注

您可以查看具有 MONITOR、OWNERSHIP 或 REPLICATE 权限的复制组和故障转移组的复制历史记录。

使用 Snowsight 查看复制历史记录

您可以在组的详细信息页面中查看特定复制组或故障转移组每个刷新操作的复制历史记录和详细信息。

  1. 登录到 Snowsight 并导航至 Admin » Accounts

  2. 依次选择 ReplicationGroups

  3. 选择复制组或故障转移组的名称。

然后,您可以查看有关该组的以下信息:

  • 组类型(复制组或故障转移组)。

  • 复制计划(例如,每 10 分钟一次)。

  • 每次刷新操作的持续时间。

  • 副本滞后时间(自上次刷新操作以来的时间长度)。

  • 下一次计划刷新操作的日期和时间。

您可以按状态和时间段对页面上的数据进行筛选:

  • 选择 Status 即可按刷新操作状态筛选结果:

    • Refresh Cancelled

    • Refresh Failed

    • Refresh In Progress

    • Refresh Successful

  • 选择 Duration 以显示以下时间段的刷新操作详细信息:

    • Last hour

    • Last 24 hours

    • Last 7 days

    • All

    选择 All 显示最近 14 天的刷新操作。

每次刷新操作的详细信息包括以下列:

描述

Query ID

刷新操作的查询 ID。

Status

显示刷新操作的状态。有效值包括 SuccessfulFailedIn Progress

Ended

刷新操作结束的日期和时间。

Duration

刷新操作完成所需的时间长度。

持续时间按 复制阶段 进行了细分,并用颜色进行了编码。每个色段的宽度表示在该阶段花费的时间比例。

以下图像仅供参考。当您 选择刷新操作 了解更多详情时,系统将显示此图表。

用颜色编码的复制阶段和持续时间。

Transferred

复制的字节数。

Objects

复制的对象数量。

选择一行以查看有关特定刷新操作的其他详细信息,包括:

  • 每个复制阶段的持续时间。

  • 错误消息(针对失败的刷新操作)。

  • 按类型和数量复制的数据库对象列表。

  • 复制的数据库数量和数据库名称。

使用 SQL 查看复制历史记录

要查看指定日期范围内特定复制组或故障转移组的复制历史记录,请查询以下内容之一:

示例

查询 Information Schema REPLICATION_GROUP_REFRESH_HISTORY 表函数,以查看最近 7 天故障转移组 myfg 的账户复制历史记录:

SELECT PHASE_NAME, START_TIME, END_TIME, TOTAL_BYTES, OBJECT_COUNT
  FROM TABLE(information_schema.replication_group_refresh_history('myfg'))
  WHERE START_TIME >= current_date - interval '7 days';
Copy

查询 Account Usage REPLICATION_GROUP_REFRESH_HISTORY 视图,以查看当月账户复制历史记录:

SELECT REPLICATION_GROUP_NAME, PHASE_NAME, START_TIME, END_TIME, TOTAL_BYTES, OBJECT_COUNT
  FROM snowflake.account_usage.replication_group_refresh_history
  WHERE START_TIME >= date_trunc('month', current_date());
Copy

监控复制成本

要监控复制的 Credit 使用量,请查询以下内容之一:

示例

查询 REPLICATION_GROUP_USAGE_HISTORY 表函数,以查看最近 7 天用于账户复制的 Credit 使用情况:

SELECT start_time, end_time, replication_group_name, credits_used, bytes_transferred
  FROM table(information_schema.replication_group_usage_history(date_range_start=>dateadd('day', -7, current_date())));
Copy

查询 Account Usage REPLICATION_GROUP_USAGE_HISTORY 视图,以查看当月复制组或故障转移组用于账户复制的 Credit 使用情况历史记录:

SELECT start_time, 
  end_time, 
  replication_group_name, 
  credits_used, 
  bytes_transferred
FROM snowflake.account_usage.replication_group_usage_history
WHERE start_time >= DATE_TRUNC('month', CURRENT_DATE());
Copy

监控数据库的复制成本

对于包含在复制或故障转移组中的单个数据库的复制成本,可以通过检索数据库的复制字节数并将其与使用的 Credit 相关联来计算。

示例

查询 Account Usage 视图

以下示例计算最近 30 天某个复制组中数据库的复制成本。

  1. 查询 REPLICATION_GROUP_REFRESH_HISTORY Account Usage 视图,并计算每个数据库复制的字节数总和。

    例如,要计算最近 30 天复制组 myrg 中数据库复制的字节数总和,可参考以下内容:

    select sum(value:totalBytesToReplicate) as sum_database_bytes
    from snowflake.account_usage.replication_group_refresh_history rh,
        lateral flatten(input => rh.total_bytes:databases)
    where rh.replication_group_name = 'MYRG'
    and rh.start_time >= current_date - interval '30 days';
    
    Copy

    请注意数据库字节数总和的输出:

    +--------------------+
    | SUM_DATABASE_BYTES |
    |--------------------|
    |              22016 |
    +--------------------+
    
    Copy
  2. 查询 REPLICATION_GROUP_USAGE_HISTORY Account Usage 视图,并计算用于复制的 Credit 总数和复制的字节数总和。

    例如,要计算最近 30 天复制组 myrg 的 Credit 使用情况总数和复制的字节数总和,可参考以下内容:

    select sum(credits_used) as credits_used, SUM(bytes_transferred) as bytes_transferred
    from snowflake.account_usage.replication_group_usage_history
    where replication_group_name = 'MYRG'
    and start_time >= current_date - interval '30 days';
    
    Copy

    请注意 Credit 使用总数和传输字节数总和的输出:

    +--------------+-------------------+
    | CREDITS_USED | BYTES_TRANSFERRED |
    |--------------+-------------------|
    |  1.357923604 |             22013 |
    +--------------+-------------------+
    
    Copy
  3. 使用前两个步骤中传输字节的数据库值、使用的 Credit 总数以及复制的所有字节总数,计算数据库的复制成本:

    (<database_bytes_transferred> / <bytes_transferred>) * <credits_used>

    例如:

    (22016 / 22013) * 1.357923604 = 1.35810866)

查询 Information Schema 表函数

如需了解最近 14 天的刷新操作,可查询关联的 Information Schema 表函数。

  1. 查询 REPLICATION_GROUP_REFRESH_HISTORY 表函数,查看复制组 myrg 的数据库复制的字节数总和:

    select sum(value:totalBytesToReplicate)
      from table(information_schema.replication_group_refresh_history('myrg')) as rh,
      lateral flatten(input => total_bytes:databases)
      where rh.phase_name = 'COMPLETED'
      and rh.start_time >= current_date - interval '14 days';
    
    Copy
  2. 查询 REPLICATION_GROUP_USAGE_HISTORY 表函数,查看复制组 myrg 的 Credit 使用总数和传输的字节数总和:

    select sum(credits_used), sum(bytes_transferred)
      from table(information_schema.replication_group_usage_history(
          date_range_start=>dateadd('day', -14, current_date()),
          replication_group_name => 'myrg'
      ));
    
    Copy
语言: 中文