複数のアカウントにわたるデータベース複製の概要

この機能により、(同じ組織内の)Snowflakeアカウント間でデータベースを複製し、データベースオブジェクトと保存データの同期を維持できます。データベース複製は、 地域 および クラウドプラットフォーム でサポートされています。

注釈

Snowflakeは、 複数のアカウント間にわたる複製とフェールオーバーの概要 を使用してデータベースを複製することを推奨しています。 複製グループとフェールオーバーグループ を使用すると、グループ内にあるオブジェクトのポイントインタイムの一貫性を保ったまま、複数のデータベースと他のアカウントオブジェクトを複製できます。 機能の可用性サポートされているオブジェクト の完全なリストについては、 複数のアカウント間にわたる複製とフェールオーバーの概要 をご参照ください。

このトピックの内容:

プライマリデータベースとは何ですか?

複製は、既存の永続データベースまたは一時データベースに対して有効にできます。複製を有効にすると、データベースが プライマリデータベース として指定されます。アカウント内の任意の数のデータベースをプライマリデータベースとして指定できます。同様に、プライマリデータベースは組織内の任意の数のアカウントに複製できます。これには、各ターゲットアカウントで指定されたプライマリデータベースのレプリカとして セカンダリデータベース を作成することが含まれます。これらのアカウントは通常、同じまたは異なるクラウドプラットフォーム上の他のリージョンにあるか、ソースアカウントと同じリージョンにある場合もあります。

すべての DML/DDL 操作はプライマリデータベースで実行されます。各読み取り専用のセカンダリデータベースは、プライマリデータベースのスナップショットで定期的に更新し、すべてのデータとデータベースオブジェクト(つまり、スキーマ、テーブル、ビューなど)の DDL 操作を複製できます。

データベース複製の概要

複製されたデータベースオブジェクトの包括的なリストについては、 複製されたデータベースオブジェクト をご参照ください。

アカウント内の他のオブジェクト

データベースの複製は データベースに対してのみ サポートされています。アカウント内にある他の型のオブジェクトは、 アカウントの複製 で複製できます。アカウントの複製でサポートされているオブジェクトの完全なリストについては、 複製されたオブジェクト をご参照ください。

アクセス制御

データベースオブジェクトに付与された権限は、セカンダリデータベースには複製 されません。これには、既存のデータベースオブジェクトに対する権限の付与と、将来のオブジェクトに対する付与(つまり、将来の付与)が含まれます。

付与された権限は、 アカウントの複製 で複製できます。

パラメーター

アカウントパラメーターは、データベースの複製では複製 されません。アカウントパラメーターは、 アカウントの複製 で複製できます。

スキーマまたはスキーマオブジェクトレベルで設定されたオブジェクトパラメーターが複製されます。

パラメーター

オブジェクト

DATA_RETENTION_TIME_IN_DAYS

スキーマ、テーブル

DEFAULT_DDL_COLLATION

スキーマ、テーブル

MAX_DATA_EXTENSION_TIME_IN_DAYS

スキーマ、テーブル

PIPE_EXECUTION_PAUSED [1]

スキーマ、パイプ

QUOTED_IDENTIFIERS_IGNORE_CASE

スキーマ、テーブル

パラメーターの複製は、データベース内のオブジェクト(スキーマ、テーブル)にのみ適用でき、パラメーターが CREATE <オブジェクト> <パラメーター> または ALTER <オブジェクト> ... SET <パラメーター> を使用して明示的に設定されている場合にのみ適用されます。データベースレベルのパラメーターは複製されません。

プライマリデータベースのオブジェクトに明示的に設定されたパラメーターは、セカンダリデータベースのオブジェクトに設定されたパラメーターを上書きします。たとえば、プライマリデータベースに DATA_RETENTION_TIME_IN_DAYS が10に設定されたスキーマ s1 があり、セカンダリデータベースにデータベースレベルで DATA_RETENTION_TIME_IN_DAYS が1に設定されている場合、セカンダリデータベースにあるスキーマ s1 の DATA_RETENTION_TIME_IN_DAYS は複製後、10に設定されます。

セカンダリデータベースのデータベースレベルで明示的に設定されたパラメーターは上書きされません。たとえば、セカンダリデータベースのパラメーター DATA_RETENTION_TIME_IN_DAYS が明示的に1に設定され、プライマリデータベースのパラメーター DATA_RETENTION_TIME_IN_DAYS が明示的に10に設定されている場合、セカンダリデータベースの DATA_RETENTION_TIME_IN_DAYS は、複製後も1に設定されたままになります。

[1] PIPE オブジェクトは複製されないことに注意してください。PIPE_EXECUTION_PAUSED パラメーターがプライマリデータベースのスキーマレベルで設定されている場合は、セカンダリデータベースに複製されます。フェールオーバーの際にセカンダリデータベースがプライマリデータベースに昇格され、パイプが作成されると、パラメーター設定が有効になります。

下位エディションのアカウントへのデータベース複製

次のいずれかの条件に該当する場合、ローカルデータベースをプライマリデータベースとして機能するように昇格すると、Snowflakeはエラーメッセージを表示します。

  • プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにありますが、下位エディションには、複製が承認された1つ以上のアカウントがあります。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。

  • プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにあり、HIPAA 規制と HITRUST CSF に従ってアカウントに PHI データを保存するために署名されたビジネスアソシエイト契約が整っています。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がありません。

この動作は、Business Critical(またはそれ以上)のアカウントの管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐために実装されています。

アカウント管理者は、 ALTER DATABASE ... ENABLE REPLICATION TO ACCOUNTS ステートメントを実行するときに IGNORE EDITION CHECK 句を含めることにより、このデフォルトの動作を上書きできます。IGNORE EDITION CHECK が設定されている場合、プライマリデータベースは任意のSnowflakeエディションの指定されたアカウントに複製できます。

データベース複製の現在の制限

  • 共有から作成されたデータベースは複製できません。

  • プライマリデータベースに以下のいずれかが含まれている場合、リフレッシュ操作は失敗します。

    • イベントテーブル

    • 外部テーブル

サポートされていないソースオブジェクトを含むストリームがプライマリデータベースに含まれている場合は、データベースの複製または更新操作に失敗します。いずれかのストリームのソースオブジェクトがドロップされている場合も、操作に失敗します。

複製されたソースオブジェクトでは、追加のみのストリームはサポートされていません。

  • CREATE DATABASE ... AS REPLICA コマンドは、 WITH TAG 句をサポートしていません。

    セカンダリデータベースは読み取り専用であるため、この句はサポートされません。プライマリデータベースが WITH TAG 句を指定している場合は、セカンダリデータベースを作成する前に句を削除します。データベースに WITH TAG 句があるかどうかを確認するには、Snowflakeアカウントで GET_DDL 関数を呼び出し、関数の引数にプライマリデータベースを指定します。データベースにタグが設定されている場合、関数の出力には ALTER DATABASE ... SET TAG ステートメントが含まれます。

  • ステージとパイプの複製はサポートされていません。アカウント複製を使用して、ステージとパイプを複製できます。詳細については、 ステージ、パイプ、ロード履歴の複製 をご参照ください。

  • シークレット はサポートされていません。複製グループまたはフェールオーバーグループを使用して、シークレットを複製できます。