複数のアカウント間にわたる複製とフェールオーバーの概要¶
この機能により、 ソース アカウントから同じ組織内にある1つ以上の ターゲット アカウントにオブジェクトを複製できるようになります。各ターゲットアカウントで複製されたオブジェクトは、 セカンダリ オブジェクトと呼ばれ、ソースアカウントの プライマリ オブジェクトのレプリカです。複製は、 リージョン および クラウドプラットフォーム 全般でサポートされています。
このトピックの内容:
複製とフェールオーバー/フェールバックのリージョンサポート¶
Amazon Web Services、Google Cloud Platform、およびMicrosoft Azure全般のSnowflakeの全リージョンで、複製をサポートしています。
お客様は、 リージョングループ 内のすべてのリージョンで複製できます。異なるリージョングループ内のリージョン間(つまり、Snowflake商用リージョンからSnowflake政府またはVirtual Private Snowflakeリージョン)で複製するには、 Snowflakeサポート にお問い合わせください。
複製グループとフェールオーバーグループ¶
複製グループ は、1つ以上のターゲットアカウントにユニットとして複製される、ソースアカウント内のオブジェクトの定義済みコレクションです。複製グループは、複製されたオブジェクトへの読み取り専用アクセスを提供します。
フェールオーバーグループ は、フェールオーバーも可能な複製グループです。ターゲットアカウントのセカンダリフェールオーバーグループは、複製されたオブジェクトに読み取り専用アクセスを提供します。セカンダリフェールオーバーグループがプライマリフェールオーバーグループに昇格すると、読み取り/書き込みアクセスが利用可能になります。フェールオーバーグループで許可されているアカウントのリストで指定されているターゲットアカウントは、プライマリフェールオーバーグループとして機能するように昇格できます。
複製グループとフェールオーバーグループは、ターゲットアカウント上のオブジェクトに対して特定時点における一貫性を提供します。複製またはフェールオーバーグループに含めることができるオブジェクトは、以下の 複製されたオブジェクト にリストされています。
複製機能/エディションのマトリックス¶
一部の複製機能は、Business Critical Edition(またはそれ以上)でのみ使用可能であることに注意してください。次のテーブルに、各Snowflakeエディションにおける複製機能の可用性をリストします。
機能 |
標準 |
Enterprise |
Business Critical |
VPS |
---|---|---|---|---|
データベース複製 |
✔ |
✔ |
✔ |
✔ |
共有複製 |
✔ |
✔ |
✔ |
✔ |
複製グループ |
✔ |
✔ |
✔ |
✔ |
アカウントオブジェクト(データベースおよび共有以外)複製 |
✔ |
✔ |
||
フェールオーバーグループ |
✔ |
✔ |
||
Tri-Secret Secure で保護されたデータ |
✔ |
✔ |
複製されたオブジェクト¶
この機能は、以下にリストされているオブジェクトの複製をサポートします。データベース複製および共有複製は、すべてのエディションで利用できます。その他すべてのオブジェクトの複製は、Business Critical Edition(またはそれ以上)でのみ使用できます。機能の可用性の詳細については、 複製機能/エディションのマトリックス をご参照ください。
オブジェクト |
タイプまたは機能 |
複製 |
メモ |
---|---|---|---|
✔ |
一部のデータベースの複製はサポートされていないか、更新操作に失敗する可能性があります。詳細については、 複製の現在の制限 をご参照ください。 |
||
✔ |
サポートされているタイプに関するその他の注意事項と詳細については、 統合複製 をご参照ください。 |
||
✔ |
|||
✔ |
|||
✔ |
グループに |
||
✔ |
|
||
✔ |
インバウンド共有 (プロバイダーからの共有)の複製はサポート されていません。 |
||
✔ |
|||
✔ |
データベースの複製¶
この機能は、データベースの複製をサポートします。スナップショットには、オブジェクトとデータへの変更が含まれます。 roles
が(同じまたは異なる複製またはフェールオーバーグループで)複製される場合、データベースの更新では、アカウントにあるセカンダリデータベースとデータベース内のオブジェクト(スキーマ、テーブル、ビューなど)に対する権限の付与も同期されます。詳細については、 データベースオブジェクトの付与 をご参照ください。
一部のデータベースの複製はサポートされていないか、更新操作に失敗する可能性があります。詳細については、 複製の現在の制限 をご参照ください。
複製されたデータベースオブジェクト¶
プライマリデータベースが複製されると、そのデータベースオブジェクトとデータのスナップショットがセカンダリデータベースに転送されます。ただし、一部のデータベースオブジェクトは複製されません。次の表には、セカンダリデータベースに複製されるデータベースオブジェクトが示されています。
これらのオブジェクトに関する特定の使用情報については、 複製に関する考慮事項 をご参照ください。
オブジェクト |
タイプまたは機能 |
複製 |
メモ |
---|---|---|---|
テーブル |
永続テーブル |
✔ |
|
一時テーブル |
✔ |
||
仮テーブル |
|||
クラスタ化されたテーブルの自動クラスタリング |
✔ |
||
外部テーブル |
プライマリデータベースに外部テーブルが存在する場合、セカンダリデータベースの作成またはリフレッシュはブロックされます。 . 将来のリリースを計画しています。 |
||
動的テーブル |
✔ |
詳細については、 複製と動的テーブル をご参照ください。 |
|
テーブルの制約 |
✔ |
データベースの外部キーが別のデータベースのプライマリ/ユニークキーを参照する場合を除きます。 . |
|
イベントテーブル |
イベントテーブルがプライマリデータベースに存在する場合、セカンダリデータベースの更新はブロックされます。 |
||
シーケンス |
✔ |
||
ビュー |
ビュー |
✔ |
ビューが別のデータベースのオブジェクト(例: テーブル列、他のビュー、 UDFs、またはステージ)を参照する場合は、 . 両方のデータベースを複製する必要があります。 |
マテリアライズドビュー |
✔ |
||
セキュアビュー |
✔ |
||
ファイル形式 |
✔ |
||
ステージ |
ステージ |
✔ |
複製およびフェールオーバーグループでのみサポートされます。データベース複製はサポートされていません。 . 詳細については、 ステージ、パイプ、ロード履歴の複製 をご参照ください。 |
仮ステージ |
|||
パイプ |
✔ |
複製およびフェールオーバーグループでのみサポートされます。データベース複製はサポートされていません。 . 詳細については、 ステージ、パイプ、ロード履歴の複製 をご参照ください。 |
|
ストアドプロシージャ |
✔ |
詳細については、 ストアドプロシージャとユーザー定義関数の複製(UDFs) をご参照ください。 |
|
ストリーム |
✔ |
詳細については、 複製とストリーム をご参照ください。 |
|
タスク |
✔ |
詳細については、 複製とタスク をご参照ください。 |
|
UDFs |
✔ |
詳細については、 ストアドプロシージャとユーザー定義関数の複製(UDFs) をご参照ください。 |
|
ポリシー |
列レベルのセキュリティ(マスキング) |
✔ |
マスキング、行アクセス、およびタグベースのマスキングポリシーについては、 ポリシー複製に関する考慮事項 をご参照ください。 |
行アクセスポリシー |
✔ |
||
タグベースのマスキングポリシー |
✔ |
||
セッションポリシー |
✔ |
セッション、パスワード、認証ポリシーについては、 複製とセキュリティポリシー をご参照ください。 |
|
パスワードポリシー |
✔ |
||
認証ポリシー |
✔ |
||
タグ |
オブジェクトのタグ付け |
✔ |
タグについては、 複製とタグ をご参照ください。 |
アラート |
✔ |
||
シークレット |
外部 API 認証のシークレット |
✔ |
複製グループとフェールオーバーグループを使用することで、シークレットを複製できます。詳細については、 複製とシークレット をご参照ください。 |
ネットワークルール |
✔ |
ネットワークルールを使用するネットワークポリシーの複製については、 ネットワークポリシーの複製 を参照してください。 |
|
クラスインスタンス |
Snowflake クラス のインスタンス(例: ANOMALY_DETECTION クラスや BUDGET クラスのインスタンス)は複製されません。Snowflakeクラスの全リストについては、 利用可能なクラス をご参照ください。 |
||
パッケージポリシー |
Python UDF、 UDTF、ストアドプロシージャ |
✔ |
ソースアカウントに パッケージポリシー が設定されている場合、アカウントオブジェクトを正常に複製するには、パッケージポリシーを含むデータベースを、同じまたは異なる複製グループまたはフェールオーバーグループ内のターゲットアカウントに複製する必要があります。そうでない場合、更新操作は ダングリング参照エラー で失敗します。 |
データベースの複製と暗号化¶
Snowflakeは、保管中およびソースアカウントとターゲットアカウント間で転送中のメタデータとデータセットを保護します。アカウント マスターキー (AMK)は、 階層キーモデル に示すように、アカウント内のキー階層を暗号化します。Snowflakeは、ターゲットアカウントで Tri-Secret Secure を有効にしているかどうかに関係なく、ターゲットアカウントのアカウントマスターキーとキー階層を使用して、ターゲットアカウントの複製されたデータを暗号化します。
ターゲットアカウントでTri-Secret Secureを有効にすると、Snowflakeはターゲットアカウントの複合マスターキーと対応するキー階層を使用してデータを暗号化します。ターゲットアカウントでは、デフォルトでTri-Secret Secureが有効になっていないことに注意してください。この機能を有効にする必要があります。
Snowflakeのデータ暗号化の詳細については、 Snowflakeのエンドツーエンド暗号化について をご参照ください。
統合複製¶
Business Critical Edition(またはそれ以上)が必要です。アップグレードについては、 Snowflakeサポート にお問い合わせください。
アカウントの複製では、次の機能に対する統合の複製がサポートされています。
次のタイプのセキュリティ統合:
フェデレーション認証および SSO (すなわち SAML2)
SCIM
Snowflake OAuth
外部 OAuth
セキュリティ統合の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。
API 統合。
API 統合をターゲットアカウントに複製した後、複製された外部関数にリモートサービスへのアクセス権を付与する必要があります。詳細については、 API 統合のリモートサービスの更新 をご参照ください。
次のタイプの通知統合:
TYPE = EMAIL
TYPE = QUEUE (DIRECTION = OUTBOUND を使用)
ストレージ統合。
ストレージ統合を複製する場合、ターゲットアカウントでクラウドストレージの新しい信頼関係を確立する必要があります。詳細については、 セカンダリストレージ統合のためにクラウドストレージアクセスを構成する をご参照ください。
外部アクセス統合。
外部アクセス統合の詳細については、 外部ネットワークアクセスの概要 をご参照ください。
ネットワークポリシーの複製¶
Business Critical Edition(またはそれ以上)が必要です。
この機能は、ネットワークポリシーの複製をサポートします。
詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。
パラメーターの複製¶
Business Critical Edition(またはそれ以上)が必要です。
この機能は、アカウントレベルのパラメーターとオブジェクトパラメーターの複製をサポートします。オブジェクトパラメーターは、オブジェクトが複製グループに含まれている場合に複製されます。たとえば、 WAREHOUSES
が複製される場合は、ウェアハウス固有のパラメーター(例: STATEMENT_TIMEOUT_IN_SECONDS)が複製されます。完全なリストについては、 オブジェクトパラメーター をご参照ください。
アカウントレベルのパラメーター複製には、すべての アカウントパラメーター および アカウントに設定されたパラメーター が含まれます。複製グループのオブジェクトタイプのリストに ACCOUNT PARAMETERS
が含まれている場合は、アカウントレベルのパラメーター(例: DATA_RETENTION_TIME_IN_DAYS)が複製されます。
リソースモニターの複製¶
Business Critical Edition(またはそれ以上)が必要です。
この機能は、リソースモニターと、リソースモニターで付与された権限をロールに複製することをサポートします。セカンダリリソースモニターは、プライマリと同じクォータリセットスケジュールに従います。たとえば、プライマリリソースモニターのクォータが月の1日にリセットされ、セカンダリがその月の15日に最初に複製された場合、そのクォータはプライマリとともに翌月の1日にリセットされます。
リソースモニターのメール通知設定の複製¶
リソースモニターのメール通知設定は、リソースモニターの複製には含まれません。管理者以外のユーザーに対するメール通知は、リソースモニターで複製できます。ただし、アカウント管理者の通知設定は、現在複製されません。
複製グループまたはフェールオーバーグループの
object_types
リストにusers
とresource monitors
が含まれている場合、管理者以外のユーザーの通知設定は複製されます。ウェアハウスレベルのリソースモニターの
notify_users
リストはターゲットアカウントに複製されます。管理者以外のユーザーのメール通知 は、ターゲットアカウントで送信されます。
複製グループまたはフェールオーバーグループの
object_types
リストにresource monitors
が含まれ、users
が含まれない場合、セカンダリウェアハウスレベルのリソースモニターのnotify_users
リストは空になります。アカウント管理者の通知設定は 複製されません。
アカウント管理者は、ウェブインターフェイスを使用して、各アカウントで メール通知を有効にする 必要があります。
アカウント管理者がソースおよび/またはターゲットアカウントでメール通知を有効にしている場合、リソースモニター通知はアカウント管理者に送信されます。
ロールの複製¶
Business Critical Edition(またはそれ以上)が必要です。
この機能は、ロール階層を含む、ロールの複製をサポートします。アクセス権限を複製するには、ロールオブジェクトを複製する必要があります。複製されたアクセス権限は、以下の ロールと付与の複製 にリストされています。
注釈
ORGADMIN ロールを含む、すべてのロールが複製されます。
ユーザーの複製¶
Business Critical Edition(またはそれ以上)が必要です。
この機能は、ターゲットアカウントへのユーザーとそのプロパティの複製、次のユーザー認証方法、また SCIM を使用したユーザーとグループのプロビジョニングをサポートします。
認証方法 |
ターゲットアカウントで動作 |
メモ |
---|---|---|
パスワード |
✔ |
|
MFA のパスワード(多要素認証) |
✔ |
ソースアカウントの MFA に登録されているユーザーは、各ターゲットアカウントにログインする際、MFA に個別に登録する必要があります。 |
✔ |
ソースアカウントの MFA に登録されているユーザーは、各ターゲットアカウントにログインする際、MFA に個別に登録する必要があります。 |
|
キーペア認証 |
✔ |
|
✔ |
フェデレーション SSO (つまり、 SAML2)セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。 |
|
✔ |
OAuth セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。 |
|
✔ |
OAuth セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。 |
|
✔ |
SCIM セキュリティ統合の複製の詳細については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。 |
注釈
USERS
および ROLES
オブジェクトがターゲットアカウントに複製される場合、これらのオブジェクト型はターゲットアカウントで読み取り専用であり、変更できません。ユーザーとロールは、ソースアカウント内で作成してから、各ターゲットアカウントに複製する必要があります。 複製と読み取り専用のセカンダリオブジェクト をご参照ください。
ウェアハウスの複製¶
Business Critical Edition(またはそれ以上)が必要です。アップグレードについては、 Snowflakeサポート にお問い合わせください。
この機能は、ウェアハウスとウェアハウスに付与された権限をロールに複製することをサポートします(roles
が複製される場合)。プライマリウェアハウスの状態は複製されません。ウェアハウスは中断状態で各ターゲットアカウントに複製され、ターゲットアカウントで再開できます。
ロールと付与の複製¶
Business Critical Edition(またはそれ以上)が必要です。
オブジェクトの付与をロールに複製するには、ロールをソースアカウントからターゲットアカウントに複製する必要があります。複製またはフェールオーバーグループでロールを複製するには、 object_types
リストに roles
を含める必要があります。ロールは、権限が付与されているデータオブジェクトとは別の複製グループまたはフェールオーバーグループに含めることができます。
roles
が複製されると、次の場合に 限り、オブジェクトに対する付与はターゲットアカウントに複製されます。
権限が、オブジェクトの所有者によって、またはオブジェクトの所有者により WITH GRANT OPTION パラメーターを使用して権限を付与されたロールで間接的に付与された。
権限付与の被付与者と付与者の両方のロールが、ターゲットアカウントにある。
オブジェクトが複製されます(つまり、オブジェクト型が
object_types
リストに含まれます)。
上記以外の場合は、オブジェクトに対する付与は複製されません。
注釈
ターゲットアカウントのアクティブなパイプに対する OWNERSHIP 権限を持つロールがドロップされた場合は、更新操作に失敗します。
複製グループおよびフェールオーバーグループの権限は複製 されません。REPLICATE または FAILOVER 権限が複製グループまたはフェールオーバーグループに付与されている場合、これらの権限はソース および ターゲットアカウントの両方で付与する必要があります。これらの権限の詳細については、 複製権限 をご参照ください。
データベースオブジェクトの付与¶
roles
と databases
がターゲットアカウント(同じ、または異なる複製、またはフェールオーバーグループ内)に複製される場合は、セカンダリデータベースを更新すると、データベースとデータベース内のオブジェクト(スキーマ、テーブル、ビューなど)の権限付与が、ターゲットアカウントの既存のロール(つまり、ターゲットアカウントに複製されたロール)と同期されます。データベース複製でサポートされているオブジェクトに対する権限付与のみが同期されることに注意してください。サポートされるオブジェクトのリストについては、 複製されたデータベースオブジェクト をご参照ください。
外部テーブルの複製は現在サポートされていません。その結果、外部テーブルに対する権限の付与も複製されません。
オブジェクトに対する将来の付与¶
ロールがターゲットアカウントに複製される場合は、データベースまたはスキーマレベルで付与される 将来の付与 がターゲットアカウントに複製されます。これには、複製でサポートされていないオブジェクトに対する将来の付与も含まれます。たとえば、外部テーブルの複製はまだサポートされていないものの、外部テーブルに対する将来の付与は複製されます。ターゲットアカウントで外部テーブルを作成すると、将来の外部テーブルで付与される権限は意図したとおりに具体化されます。
オブジェクトの作成と所有権¶
ソースアカウントからの更新中にターゲットアカウントに新しいオブジェクトが作成され、ロールがターゲットアカウントに複製されない場合は、新しいオブジェクトの OWNERSHIP 権限が ACCOUNTADMIN ロールに付与されます。
ロールがターゲットアカウントに複製されると、 OWNERSHIP 権限は、ロールが次に複製されるときに、ソースアカウントの OWNERSHIP 権限を持つロールと同じターゲットアカウントのロールに付与されます。オブジェクトとロールが同じ複製(またはフェールオーバー)グループにあると、ターゲットアカウントで新しいオブジェクトが作成されると同時にロールが複製される場合があります。
ターゲットアカウントのオブジェクトをリフレッシュするユーザー¶
ALTER FAILOVER GROUP ... REFRESH コマンドを実行して、ソースアカウントからターゲットアカウントのオブジェクトを更新するユーザーは、フェールオーバーグループに対して REPLICATE 権限を持つロールを使用する必要があります。Snowflakeは、次のシナリオで失敗することにより、ターゲットアカウントでこのユーザーを保護します。
ユーザーがソースアカウントに存在しない場合は、更新操作に失敗します。
ユーザーがソースアカウントに存在するが、REPLICATE 権限を持つロールがユーザーに付与されていない場合は、更新操作に失敗します。
複製スケジュール¶
ベストプラクティスとして、Snowflakeは、 REPLICATION_SCHEDULE パラメーターを使用して自動更新をスケジュールすることをお勧めします。スケジュールは、 CREATE <オブジェクト> を使用して、新しい複製またはフェールオーバーグループを作成するときか、後で(ALTER <オブジェクト> を使用して)定義できます。
セカンダリ複製またはフェールオーバーグループが作成されると、最初の更新が自動的に実行されます。次回の更新は、前回の更新が開始された日時とスケジュール間隔、またはcron式に基づいた次の有効時間に基づいてスケジュールされます。たとえば、更新スケジュール間隔が10分で、前回の更新操作(スケジュールされた更新または手動でトリガーされた更新)が12:01に開始される場合、次の更新は12:11にスケジュールされます。
Snowflakeは、一度に1回の更新のみが実行されるようにします。次回の更新がスケジュールされているときに更新がまだ実行中の場合、現在実行中の更新が完了後に次回の更新が遅れて開始されます。たとえば、更新が毎時正時15分後に実行されるようにスケジュールされており、前の更新が12:16に完了する場合、次の更新は、前に実行中の更新完了後に実行がスケジュールされます。
スケジュールされた複製を一時停止および再開する¶
更新の実行中は、セカンダリフェールオーバーグループをプライマリグループに昇格させることはできません。正常にフェールオーバーするには、ターゲットアカウントでスケジュールされた複製を中断します。フェールオーバーの完了後に、スケジュールされた複製を再開します。構文については、 ALTER FAILOVER GROUP をご参照ください。
注釈
スケジュールされた複製を中断しても、現在進行中の更新操作は中断されません。現在の更新が完了した後に追加の更新がスケジュールされないように、スケジュールを中断します。
下位エディションのアカウントへの複製¶
次のいずれかの条件に該当する場合、Snowflakeはステートメントの実行時にエラーメッセージを表示します。
データベースのみおよび/または共有オブジェクトがあるプライマリ複製グループはBusiness Critical(またはそれ以上)のアカウントにあるが、複製を承認された1つ以上のアカウントは下位エディションにある。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。
任意の オブジェクトタイプ があるプライマリ複製またはフェールオーバーグループがBusiness Critical(またはそれ以上)のアカウントにあり、 HIPAA および HITRUST CSF 規制に従ってアカウントに PHI データを格納するための署名済みビジネスアソシエイト契約が整っている。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が有効化された1つ以上のアカウントに対してはそのような契約がない。
この動作は、Business Critical(またはそれ以上)のアカウントの管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐために実装されています。
アカウント管理者(ACCOUNTADMIN ロールを持つユーザー)または CREATE REPLICATION GROUP/CREATE FAILOVER GROUP または OWNERSHIP 権限のあるロールを持つユーザーは、 CREATE <オブジェクト> または ALTER <オブジェクト> ステートメントの実行時に IGNORE EDITION CHECK 句を含めることで、このデフォルトの動作を上書きできます。IGNORE EDITION CHECK が設定されている場合、プライマリ複製またフェールオーバーグループは、これらの特定のシナリオでSnowflakeの下位エディション上の指定されたアカウントに複製できます。
注釈
フェールオーバーグループは、Business Critical Edition(またはそれ以上)のアカウントでのみ作成できます。したがって、フェールオーバーグループは、Business Critical Edition(またはそれ以上)のアカウントに のみ 複製できます。
複製の現在の制限¶
共有から作成されたデータベースは複製できません。
プライマリデータベースに以下のいずれかが含まれている場合、リフレッシュ操作は失敗します。
サポートされていないソースオブジェクトを含むストリームがプライマリデータベースに含まれている場合は、データベースの複製または更新操作に失敗します。いずれかのストリームのソースオブジェクトがドロップされている場合も、操作に失敗します。
複製されたソースオブジェクトでは、追加のみのストリームはサポートされていません。
外部テーブルとIcebergテーブルの制限を回避するには、 2024_02バンドル を有効にして更新処理中にこれらのテーブルをスキップします。詳細については、 複製: リフレッシュ操作時に外部テーブルとIcebergテーブルをスキップする(保留中) をご参照ください。
以前の脚注を参照してください。