複数のアカウントにまたがるデータベースのフェールオーバー

このトピックでは、災害復旧のために、異なる 地域 の複数のアカウントに複製されたデータベースをフェールオーバーするために必要な手順について説明します。

注釈

アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)のみがデータベースのフェールオーバーを有効にして管理できます。

このトピックの内容:

データベース複製およびフェールオーバー/フェールバック用のウェブインターフェイス

アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)は、新しいウェブインターフェイスまたは従来のウェブインターフェイスのいずれかで、複製とフェールオーバー/フェールバックのアクションを管理できます。

新しいウェブインターフェイス

ローカルデータベースをプライマリデータベースとして機能させる手順については、 ローカルデータベースの昇格 をご参照ください。

従来のウェブインターフェイス

Snowflakeウェブインターフェイスの Databases Databases tab タブの Replication エリアを使用して、以下のアクションを含む、データベース複製の構成と管理に関連するほとんどのアクションを実行できます。

  • プライマリデータベースとして機能するようにローカルデータベースを昇格。

  • プライマリデータベース(Business Critical Editionアカウント(またはそれ以上))のフェールオーバーを有効化。

  • セカンダリデータベースを1回(手動)または繰り返し(タスクを使用して、スケジュールに従い)更新。

  • プライマリデータベース(Business Critical Editionアカウント(またはそれ以上))として機能するセカンダリデータベースを昇格。

  • プライマリデータベースの複製および/またはフェールオーバーを無効化。

複製およびフェールオーバー SQL コマンドのアカウント識別子

以下の手順にある SQL ステートメントの例では、 アカウント識別子組織名.アカウント名 の形式で使用しています。ただし、 Snowflakeリージョン.アカウントロケーター の形式のアカウント識別子はサポートされています。

詳細については、 複製およびフェールオーバーのアカウント識別子 をご参照ください。

前提条件

  1. アカウントのセットでプライマリデータベースのレプリケーションを有効にします。

  2. ステップ1で指定された1つ以上のアカウントにプライマリデータベースのセカンダリデータベース(つまり、レプリカ)を少なくとも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             |
+------------------+---------------------------------+---------------+------------------+---------+-------------------+

Snowflakeリージョン IDs の包括的なリストをご参照ください。

ステップ2: プライマリデータベースのフェールオーバーを有効にする

注釈

複数のアカウント間におけるデータベースの複製 でこのプライマリデータベースのフェールオーバーを有効にした場合は、このステップをスキップしてください。

ALTER DATABASE ... ENABLE FAILOVER TO ACCOUNTS ステートメントを使用して、組織内の1つ以上のアカウントへのプライマリデータベースのフェールオーバーを有効にします。これらのアカウントのいずれか(つまり、セカンダリデータベース)にあるこのプライマリデータベースのレプリカは、プライマリデータベースとして機能するように昇格できます。

プライマリデータベースのフェールオーバーの有効化は、指定されたアカウントでプライマリデータベースのレプリカが作成された前、 または 後に行うことができます。

プライマリデータベース mydb1 のアカウント myaccount2 および myaccount3 へのフェールオーバーを有効にします。この例では、プライマリデータベースが myaccount1 アカウントに保存され、3つのアカウントすべてが組織、 myorg に属しているとします。ALTER DATABASE コマンドは、 myaccount1 から実行する必要があります。

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;