複数のアカウントにまたがるデータベースのフェールオーバー¶
このトピックでは、災害復旧のために、異なる 地域 の複数のアカウントに複製されたデータベースをフェールオーバーするために必要な手順について説明します。
注釈
アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)のみがデータベースのフェールオーバーを有効にして管理できます。
Snowflakeでは、データベースのフェールオーバーに アカウント複製機能 を使用することを推奨しています。 複製グループとフェールオーバーグループ を使用すると、ポイントインタイムの整合性を保った複数のデータベースと他のアカウントオブジェクトの複製が可能になります。さらに、フェールオーバーグループを使用すると、オブジェクトのコレクションを単位としてフェールオーバーできます。 機能の可用性 と サポートされているオブジェクト の完全なリストについては、 複数のアカウント間にわたる複製とフェールオーバーの概要 をご参照ください。
このトピックの内容:
データベース複製およびフェールオーバー/フェールバック用のウェブインターフェイス¶
注意
Snowsight および Classic Console の複製とフェイルオーバー/フェイルバックの管理とモニターは、プライベート接続を使用しているアカウントでのみ利用できます。
その他のアカウントについては、 Snowsightを使用した複製をモニターする および アカウントオブジェクトとデータベースの複製 をご覧ください。
アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)は、 Snowsight または Classic Console のいずれかで、複製とフェールオーバー/フェールバックのアクションを管理できます。
Snowsight¶
ローカルデータベースをプライマリデータベースとして機能させる手順については、 データベース複製およびフェールオーバー/フェールバック用のウェブインターフェイス をご参照ください。
Classic Console¶
Classic Console の Databases タブの Replication 領域を使用して、以下のアクションを含む、データベース複製の構成と管理に関連するほとんどのアクションを実行できます。
プライマリデータベースとして機能するようにローカルデータベースを昇格。
プライマリデータベース(Business Critical Editionアカウント(またはそれ以上))のフェールオーバーを有効化。
セカンダリデータベースを1回(手動)または繰り返し(タスクを使用して、スケジュールに従い)更新。
プライマリデータベース(Business Critical Editionアカウント(またはそれ以上))として機能するセカンダリデータベースを昇格。
プライマリデータベースの複製および/またはフェールオーバーを無効化。
複製およびフェールオーバー SQL コマンドのアカウント識別子¶
以下の手順にある SQL ステートメントの例では、 アカウント識別子 を organization_name.account_name
の形式で使用しています。ただし、 snowflake_region.account_locator
の形式のアカウント識別子はサポートされています。
詳細については、 複製およびフェールオーバーのアカウント識別子 をご参照ください。
前提条件¶
アカウントのセットでプライマリデータベースの複製を有効にします。
ステップ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 |
+------------------+---------------------------------+---------------+------------------+---------+-------------------+
地域 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;