笔记本复制¶
备注
要复制笔记本,必须在账户中启用 2025_07 行为变更捆绑包。要 在账户中启用此捆绑包,请执行以下语句:
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2025_07');
复制功能通过使笔记本和其他重要对象在多个账户间可用,为灾难、中断或服务不可用情况下的业务连续性提供支持。由管理员配置的复制组会按预定计划,将账户对象和数据库从主账户复制到一个或多个次要账户。
当笔记本属于复制或故障转移组中包含的数据库时,它们会被复制。在次要账户中,复制的内容是只读的;笔记本可执行但不可编辑。
数据库复制可配置为故障转移组以支持高可用性。当次要故障转移组升级为主组时,所有包含的对象(包括笔记本)将在新的主账户中变为可写状态。
有关更多信息,请参阅 跨多个账户的复制和故障转移简介。
启用复制¶
具有 ORGADMIN 角色的用户必须为组织中的每个源账户和目标账户启用复制:
USE ROLE ORGADMIN;
SELECT SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER(
'<organization_name>.<account_name>',
'ENABLE_ACCOUNT_DATABASE_REPLICATION',
'true');
有关更多信息,请参阅 先决条件:为组织中的账户启用复制。
在主账户中创建复制组¶
要复制笔记本,请在复制组中指定包含该笔记本的数据库:
USE ROLE ACCOUNTADMIN;
CREATE REPLICATION GROUP myrg
OBJECT_TYPES = DATABASES
ALLOWED_DATABASES = db1
ALLOWED_ACCOUNTS = myorg.myaccount2
REPLICATION_SCHEDULE = '10 MINUTE';
在此示例中:
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';
有关语法和用法的更多信息,请参阅 CREATE REPLICATION GROUP。
次要账户行为¶
在次要账户中,您只能在非复制数据库中创建新的笔记本。这些笔记本不包含在复制组中,且完全具备读写权限。
复制的笔记本是只读的。但是,用户可以更改相关的计算资源和外部访问集成 (EAIs)。这些资源必须单独创建或复制。如果它们不可用,笔记本将不会附加这些资源。
在目标账户中创建复制组,作为源账户中复制组 myrg 的副本:
CREATE REPLICATION GROUP myrg
AS REPLICA OF myorg.myaccount1.myrg;
如有必要,您还可以为仓库创建复制组。请注意,账户中的所有仓库都将被复制:
CREATE REPLICATION GROUP mywarehouserg
AS REPLICA OF myorg.myaccount1.mywarehouserg;
复制组也可通过运行以下命令 手动刷新:
ALTER REPLICATION GROUP myrg REFRESH;
创建故障转移组¶
要允许在中断期间将次要账户升级为主账户,请使用故障转移组:
USE ROLE ACCOUNTADMIN;
CREATE FAILOVER GROUP myfg
OBJECT_TYPES = DATABASES
ALLOWED_DATABASES = db1
ALLOWED_ACCOUNTS = myorg.myaccount2
REPLICATION_SCHEDULE = '10 MINUTE';
在此示例中,ALLOWED_DATABASES 是要在故障转移组中创建的数据库。故障转移组中复制的笔记本是只读的,但仍可执行。如果 将故障转移组升级为主组,笔记本将变为可读写状态。
注意事项¶
次要账户中已调度的笔记本在故障转移前会处于暂停状态。故障转移后,调度将恢复运行。
有关复制和任务行为,请参阅 复制的注意事项。
笔记本结果仅存储在运行笔记本的账户中。笔记本的结果不会被复制。
限制¶
故障转移后目前不支持 Git 集成功能。要使推广的次要账户中的笔记本能够重新连接到 Git,您必须重新配置 Git。
容器运行时笔记本¶
使用容器运行时的笔记本无法完全复制。具体而言,计算池不可复制,必须在次要账户中手动创建。
要在次要账户中运行容器运行时笔记本,请执行以下操作:
确定源账户中使用的计算池。
在次要账户中创建具有相同名称和配置的计算池:例如,如果复制的笔记本引用了名为
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;
创建后,复制的笔记本可以使用计算池在次要账户中运行。