笔记本复制

备注

要复制笔记本,必须在账户中启用 2025_07 行为变更捆绑包。要 在账户中启用此捆绑包,请执行以下语句:

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2025_07');
Copy

复制功能通过使笔记本和其他重要对象在多个账户间可用,为灾难、中断或服务不可用情况下的业务连续性提供支持。由管理员配置的复制组会按预定计划,将账户对象和数据库从主账户复制到一个或多个次要账户。

当笔记本属于复制或故障转移组中包含的数据库时,它们会被复制。在次要账户中,复制的内容是只读的;笔记本可执行但不可编辑。

数据库复制可配置为故障转移组以支持高可用性。当次要故障转移组升级为主组时,所有包含的对象(包括笔记本)将在新的主账户中变为可写状态。

有关更多信息,请参阅 跨多个账户的复制和故障转移简介

启用复制

具有 ORGADMIN 角色的用户必须为组织中的每个源账户和目标账户启用复制:

USE ROLE ORGADMIN;
SELECT SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER(
    '<organization_name>.<account_name>',
    'ENABLE_ACCOUNT_DATABASE_REPLICATION',
    'true');
Copy

有关更多信息,请参阅 先决条件:为组织中的账户启用复制

在主账户中创建复制组

要复制笔记本,请在复制组中指定包含该笔记本的数据库:

USE ROLE ACCOUNTADMIN;

CREATE REPLICATION GROUP myrg
    OBJECT_TYPES = DATABASES
    ALLOWED_DATABASES = db1
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';
Copy

在此示例中:

  • ALLOWED_DATABASES - 包含笔记本的数据库的名称。

  • ALLOWED_ACCOUNTS - 要复制到的次要账户。

  • REPLICATION_SCHEDULE - 复制发生的频率(例如,“10 MINUTE”或“1 HOUR”)。

复制仓库

若要在次要账户中按预期运行复制的笔记本,则必须单独复制或重新创建任何关联对象,例如仓库、EAIs 和任务。

要复制仓库,请将该仓库包含在复制/故障转移组的 OBJECT_TYPES 参数中。

-- Create a new warehouse if required
CREATE WAREHOUSE IF NOT EXISTS mywarehouse
  WAREHOUSE_SIZE = 'X-SMALL'
  AUTO_SUSPEND = 60
  AUTO_RESUME = TRUE
  COMMENT = 'Warehouse for Snowflake Notebooks';

-- Set up warehouse replication
CREATE REPLICATION GROUP mywarehouserg
  OBJECT_TYPES = WAREHOUSES
  ALLOWED_ACCOUNTS = myorg.myaccount2
  REPLICATION_SCHEDULE = '10 MINUTE';
Copy

有关语法和用法的更多信息,请参阅 CREATE REPLICATION GROUP

次要账户行为

在次要账户中,您只能在非复制数据库中创建新的笔记本。这些笔记本不包含在复制组中,且完全具备读写权限。

复制的笔记本是只读的。但是,用户可以更改相关的计算资源和外部访问集成 (EAIs)。这些资源必须单独创建或复制。如果它们不可用,笔记本将不会附加这些资源。

在目标账户中创建复制组,作为源账户中复制组 myrg 的副本:

CREATE REPLICATION GROUP myrg
    AS REPLICA OF myorg.myaccount1.myrg;
Copy

如有必要,您还可以为仓库创建复制组。请注意,账户中的所有仓库都将被复制:

CREATE REPLICATION GROUP mywarehouserg
    AS REPLICA OF myorg.myaccount1.mywarehouserg;
Copy

复制组也可通过运行以下命令 手动刷新

ALTER REPLICATION GROUP myrg REFRESH;
Copy

创建故障转移组

要允许在中断期间将次要账户升级为主账户,请使用故障转移组:

USE ROLE ACCOUNTADMIN;
CREATE FAILOVER GROUP myfg
  OBJECT_TYPES = DATABASES
  ALLOWED_DATABASES = db1
  ALLOWED_ACCOUNTS = myorg.myaccount2
  REPLICATION_SCHEDULE = '10 MINUTE';
Copy

在此示例中,ALLOWED_DATABASES 是要在故障转移组中创建的数据库。故障转移组中复制的笔记本是只读的,但仍可执行。如果 将故障转移组升级为主组,笔记本将变为可读写状态。

注意事项

  • 次要账户中已调度的笔记本在故障转移前会处于暂停状态。故障转移后,调度将恢复运行。

  • 有关复制和任务行为,请参阅 复制的注意事项

  • 笔记本结果仅存储在运行笔记本的账户中。笔记本的结果不会被复制。

限制

  • 故障转移后目前不支持 Git 集成功能。要使推广的次要账户中的笔记本能够重新连接到 Git,您必须重新配置 Git。

容器运行时笔记本

使用容器运行时的笔记本无法完全复制。具体而言,计算池不可复制,必须在次要账户中手动创建。

要在次要账户中运行容器运行时笔记本,请执行以下操作:

  1. 确定源账户中使用的计算池。

  2. 在次要账户中创建具有相同名称和配置的计算池:例如,如果复制的笔记本引用了名为 compute_pool 的计算池,则在次要账户中创建该计算池:

-- In the secondary account, create a new compute pool with a matching name and configuration

CREATE COMPUTE POOL compute_pool
  MIN_NODES = 1
  MAX_NODES = 10
  INSTANCE_FAMILY = CPU_X64_XS;
Copy

创建后,复制的笔记本可以使用计算池在次要账户中运行。

语言: 中文