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

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

注釈

このトピックの内容:

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

注意

Snowsight および Classic Console の複製とフェイルオーバー/フェイルバックの管理とモニターは、プライベート接続を使用しているアカウントでのみ利用できます。

その他のアカウントについては、 Snowsightを使用した複製をモニターする および アカウントオブジェクトとデータベースの複製 をご覧ください。

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

Snowsight

ローカルデータベースをプライマリデータベースとして機能させる手順については、 データベース複製およびフェールオーバー/フェールバック用のウェブインターフェイス をご参照ください。

Classic Console

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

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

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

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

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

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

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

以下の手順にある SQL ステートメントの例では、 アカウント識別子organization_name.account_name の形式で使用しています。ただし、 snowflake_region.account_locator の形式のアカウント識別子はサポートされています。

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

前提条件

  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             |
+------------------+---------------------------------+---------------+------------------+---------+-------------------+
Copy

地域 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;
Copy

ステップ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;
Copy