笔记本复制

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

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

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

For more information, see Introduction to replication and failover across multiple accounts.

启用复制

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

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

For more information, see Prerequisite: Enable replication for accounts in the organization.

在主账户中创建复制组

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

USE ROLE ACCOUNTADMIN;

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

在此示例中:

  • ALLOWED_DATABASES - the name of the database that contains the notebook.
  • ALLOWED_ACCOUNTS - the secondary account to replicate to.
  • REPLICATION_SCHEDULE - how frequently replication occurs (for example, ’10 MINUTE’ or ’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';

For more information on syntax and options, see CREATE REPLICATION GROUP.

次要账户行为

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

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

Create a replication group in the target account as a replica of the replication group myrg in the source account:

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

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

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

The replication group can also be refreshed manually by running the following command:

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';

In this example, ALLOWED_DATABASES is the database to be created in the failover group. The replicated notebook in the failover group is read-only, but still executable. If you promote the failover group to primary, the notebook becomes read-write.

注意事项

  • 次要账户中已调度的笔记本在故障转移前会处于暂停状态。故障转移后,调度将恢复运行。
  • For replication and task behavior, see Replication considerations.
  • 笔记本结果仅存储在运行笔记本的账户中。笔记本的结果不会被复制。

限制

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

容器运行时笔记本

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

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

  1. 确定源账户中使用的计算池。
  2. Create a compute pool with the same name and configuration in the secondary account: For example, if a replicated notebook references a compute pool named compute_pool, create that compute pool in the secondary account:
-- 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;

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