对多个账户的数据库进行故障转移¶
本主题介绍了对不同 区域 的多个账户的复制数据库进行故障转移以进行灾难恢复所需的步骤。
备注
只有账户管理员(具有 ACCOUNTADMIN 角色的用户)才能启用和管理数据库的故障转移。
Snowflake 建议使用 账户复制功能 对数据库进行故障转移。复制和故障转移组 可及时一致地启用多个数据库和其他账户对象的复制。此外,故障转移组还允许将对象集合作为一个单元进行故障转移。有关 功能可用性 和 受支持对象 的完整列表,请参阅 跨多个账户的复制和故障转移简介。
本主题内容:
用于数据库复制和故障转移/故障恢复的 Web 界面¶
注意
在 Snowsight 和 Classic Console 中管理和监控复制以及故障转移/故障恢复仅适用于使用专用连接的账户。
对于所有其他账户,请参阅 使用 Snowsight 监控复制 和 复制账户对象和数据库。
账户管理员(具有 ACCOUNTADMIN 角色的用户)可以在 Snowsight 或 Classic Console 中管理复制和故障转移/故障恢复操作。
Snowsight¶
有关将本地数据库升级为主数据库的说明,请参阅 用于数据库复制和故障转移/故障恢复的 Web 界面。
Classic Console¶
使用 Classic Console 中 Databases 选项卡的 Replication 区域可以执行与配置和管理数据库复制相关的大多数操作,包括以下操作:
将本地数据库提升为主数据库
为主数据库(Business Critical Edition 账户或更高版本)启用故障转移。
刷新辅助数据库,一次(手动)或多次(按照计划,使用任务)刷新。
将辅助数据库提升为主数据库(Business Critical Edition 账户或更高版本)。
禁用主数据库的复制和/或故障转移。
复制和故障转移 SQL 命令的账户标识符¶
以下说明中的示例 SQL 语句使用格式为 organization_name.account_name
的 账户标识符。但是,支持格式为 snowflake_region.account_locator
的账户标识符。
有关更多详细信息,请参阅 用于复制和故障转移的账户标识符。
先决条件要求¶
为一组账户中的主数据库启用复制。
在第 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 权限。
示例¶
-- Promote a secondary database to serve as the primary database.
ALTER DATABASE mydb1 PRIMARY;
-- Verify that the former secondary database was promoted successfully.
SHOW REPLICATION DATABASES;