アカウントオブジェクトのフェールオーバー

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

このトピックの内容:

前提条件

  1. アカウントのセットでプライマリフェールオーバーグループの複製を有効にします。

  2. 1つ以上のアカウントで、プライマリフェールオーバーグループの少なくとも1つのセカンダリフェールオーバーグループ(つまり、レプリカ)を作成し、フェールオーバーグループ内のオブジェクトに対する最新の更新をオブジェクトに反映するよう、定期的にレプリカを更新(つまり、同期)します。

手順については、 複数のアカウント間にわたるデータベースとアカウントオブジェクトの複製 をご参照ください。

ソースアカウントとして機能するターゲットアカウントの昇格

ターゲットアカウントをソースアカウントとして機能するように昇格するには、 ALTER FAILOVER GROUP...PRIMARY コマンドを実行します。

セカンダリフェールオーバーグループをプライマリフェールオーバーグループに昇格する

注釈

このセクションの例は、 FAILOVER 権限 を持つロールによって実行する必要があります。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

次の例では、現在の myorg 組織の myaccount2 を、フェールオーバーグループ myfg で指定されたオブジェクトの複製用ソースアカウントとして機能するように昇格します。

myaccount2 アカウントから実行:

ALTER FAILOVER GROUP myfg PRIMARY;
Copy

ターゲットアカウントでスケジュールされた複製を再開する

フェールオーバー時に、すべてのセカンダリフェールオーバーグループでスケジュールされた更新が中断されます。自動更新を再開するには、セカンダリフェールオーバーグループのある各 ターゲットアカウント で、 ALTER FAILOVER GROUP ... RESUME を実行する必要があります。

ALTER FAILOVER GROUP myfg RESUME;
Copy

Snowpipe Streamingのためのアクティブチャネルを新しく昇格したソースアカウントで再度開く

Snowpipe Streamingによって 投入されたプライマリデータベースのテーブルは、セカンダリデータベースに複製されます。フェールオーバー後、テーブルのアクティブなSnowpipe Streamingチャネルを再度開き、チャネルの不足しているデータ行を再挿入します。

  1. openChannel API を呼び出して、テーブルのアクティブチャネルを再度開きます。

  2. オフセットトークンをフェッチします。

    1. getLatestCommittedOffsetToken API を呼び出す、 または

    2. SHOW CHANNELS コマンドを実行し、テーブルのアクティブチャネルのリストを取得します。

  3. フェッチしたオフセットトークンからチャネルのデータ行を再挿入します。

Snowpipe StreamingとKafkaコネクタ

KafkaコネクタとSnowpipe Streamingを使用している場合は、フェールオーバー後に以下のステップに従います。

  1. Kafkaコネクタの構成を更新して、新しく昇格したソースアカウントをポイントするようにします。

  2. SHOW CHANNELS コマンドを実行して、アクティブチャネルのリストとオフセットトークンを取得します。各チャネルはKafkaトピックの単一のパーティションに属します。

  3. これらの各パーティション(チャネル)用に、Kafkaトピックでオフセットを手動でリセットします。

  4. Kafkaコネクタを再起動します。

詳細については、次をご参照ください。