对多个账户的数据库进行故障转移

重要

本节介绍了一种有限的 Database Replication 功能,该功能不同于 账户复制功能。Snowflake 强烈建议使用账户复制功能对数据库进行复制和故障转移。

本主题介绍了对不同 区域 的多个账户的复制数据库进行故障转移以进行灾难恢复所需的步骤。

备注

Use Snowsight for database replication and failover/failback

注意

Managing and monitoring replication and failover/failback in Snowsight are only available to accounts using private connectivity.

对于所有其他账户,请参阅 使用 Snowsight 监控复制 和 复制账户对象和数据库。

Account administrators (users with the ACCOUNTADMIN role) can manage replication and failover/failback actions in Snowsight.

有关将本地数据库升级为主数据库的说明,请参阅 用于数据库复制和故障转移/故障恢复的 Web 界面。

复制和故障转移 SQL 命令的账户标识符

以下说明中的示例 SQL 语句使用格式为 organization_name.account_name 的 账户标识符。但是,支持格式为 snowflake_region.account_locator 的账户标识符。

有关更多详细信息,请参阅 用于复制和故障转移的账户标识符。

先决条件要求

  1. 为一组账户中的主数据库启用复制。

  2. 在第 1 步中指定的一个或多个账户中至少创建主数据库的一个辅助数据库(即副本),并定期使用主数据库的最新更新刷新(即同步)该副本。

有关说明,请参阅 跨多个账户复制数据库。

第 1 步:查看所有启用了复制的账户

查询 SHOW REPLICATION ACCOUNTS,以查看组织中已启用复制的账户列表。

SHOW REPLICATION ACCOUNTS;
+------------------+---------------------------------+---------------+------------------+---------+-------------------+
| snowflake_region | created_on                      | account_name  | account_locator  | comment | organization_name |
|------------------+---------------------------------+---------------+------------------+---------+-------------------|
| AWS_US_WEST_2    | 2018-11-19 16:11:12.720 -0700   | ACCOUNT1      | MYACCOUNT1       |         | MYORG             |
| AWS_US_EAST_1    | 2019-06-02 14:12:23.192 -0700   | ACCOUNT2      | MYACCOUNT2       |         | MYORG             |
+------------------+---------------------------------+---------------+------------------+---------+-------------------+

查看 区域 IDs 的完整列表。

第 2 步:为主数据库启用故障转移

备注

如果您在 跨多个账户复制数据库 中为该主数据库启用了故障转移,请跳过此步骤。

使用 ALTER DATABASE ...ENABLE FAILOVER TO ACCOUNTS。这些任一账户中的主数据库的副本(即辅助数据库)都可以升级为主数据库。

请注意,可以在指定账户中创建主数据库的副本之前 或 之后为主数据库启用故障转移。

示例

启用主数据库 mydb1 到账户 myaccount2 和 myaccount3 的故障转移。在此示例中,假设主数据库存储在 myaccount1 账户中,并且所有三个账户都属于组织 myorg。必须从 myaccount1 中执行 ALTER DATABASE 命令。

ALTER DATABASE mydb1 ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;

第 3 步:将副本数据库提升为主数据库

可以将主数据库的任何副本提升为主数据库,方法是执行 ALTER DATABASE ...PRIMARY 语句。升级后,数据库变为可写入。同时,先前的主数据库变成了只读副本数据库。

在包含您正在升级的辅助数据库的账户中执行该 ALTER DATABASE 语句。

备注

若要升级辅助数据库,用于执行该操作的角色必须拥有关于数据库的 OWNERSHIP 权限。

示例

将辅助数据库提升为主数据库。

ALTER DATABASE mydb1 PRIMARY;

验证以前的辅助数据库是否提升成功。

SHOW REPLICATION DATABASES;