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

重要

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

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

备注

本主题内容:

用于数据库复制和故障转移/故障恢复的 Web 界面

注意

在 Snowsight 和 Classic Console 中管理和监控复制以及故障转移/故障恢复仅适用于使用专用连接的账户。

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

账户管理员(具有 ACCOUNTADMIN 角色的用户)可以在 Snowsight 或 Classic Console 中管理复制和故障转移/故障恢复操作。

Snowsight

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

Classic Console

使用 Classic Console 中 Databases Databases 选项卡 选项卡的 Replication 区域可以执行与配置和管理数据库复制相关的大多数操作,包括以下操作:

  • 将本地数据库提升为主数据库

  • 为主数据库(Business Critical Edition 账户或更高版本)启用故障转移。

  • 刷新辅助数据库,一次(手动)或多次(按照计划,使用任务)刷新。

  • 将辅助数据库提升为主数据库(Business Critical Edition 账户或更高版本)。

  • 禁用主数据库的复制和/或故障转移。

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

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

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

先决条件要求

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

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

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

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

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

SHOW REPLICATION ACCOUNTS;
Copy
+------------------+---------------------------------+---------------+------------------+---------+-------------------+
| 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 到账户 myaccount2myaccount3 的故障转移。在此示例中,假设主数据库存储在 myaccount1 账户中,并且所有三个账户都属于组织 myorg。必须从 myaccount1 中执行 ALTER DATABASE 命令。

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

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

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

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

备注

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

示例

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

ALTER DATABASE mydb1 PRIMARY;
Copy

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

SHOW REPLICATION DATABASES;
Copy
语言: 中文