障害復旧を構成する

2番目のインスタンスを使用するよう Snowflake Connector for ServiceNow® を構成して、障害復旧をサポートできます。

Snowflake Connector for ServiceNow® 障害復旧のサポートについて

Snowflake Connector for ServiceNow® は、構成されたテーブルに関するメタデータとアプリケーションインスタンス内の独自の構成を保存します。アプリケーションがドロップされたり破損したりすると、この内部状態は失われます。これを防ぐため、コネクタは次のような特定のイベント時に、取り込まれたデータと一緒にメタデータを宛先データベースにエクスポートします。

  • 新しいインジェスションのスケジューリング

  • リロードの終了

  • リロードのキャンセル

エクスポート処理では、エクスポート先のスキーマに複数のテーブルが作成され、コネクタの内部状態が格納されます。これらのテーブルには取り込まれたデータは含まれませんが、アプリケーションがドロップされたり破損したりした後にコネクタの状態を回復するために不可欠です。複製すると、これらのテーブルを使用して、別のSnowflakeアカウントのコネクタの状態を回復することもできます。エクスポート処理により、以下のテーブルが作成されます。

  • APP_CONFIG_SFSDKEXPORT_V1

  • APP_STATE_SFSDKEXPORT_V1

  • CONNECTOR_ERRORS_LOG_SFSDKEXPORT_V1

  • INGESTION_PROCESS_SFSDKEXPORT_V1

  • INGESTION_RUN_SFSDKEXPORT_V1

  • NOTIFICATIONS_STATE_SFSDKEXPORT_V1

  • RESOURCE_INGESTION_DEFINITION_SFSDKEXPORT_V1

  • __CONNECTOR_STATE_EXPORT

既存のデータやレポートをコネクタの新しいインスタンスにインポートします。

Snowflake Connector for ServiceNow® がアンインストールされている、または破損している場合、宛先データベースが削除されていなければ、以前に構成したテーブルのインジェスションを再開できます。コネクタで構成されたテーブルのメタデータは、取り込まれたデータと一緒に宛先データベースに保存されます。

新しいコネクタインスタンスをインストールした後もデータの取り込みを継続するには、以下を実行します。

  1. コネクタを構成する

    Snowsightを使用したコネクタのインストールと構成 または SQL コマンドを使用したコネクタのインストールおよび構成 の指示に従ってコネクタを構成してください。コピー先のデータベースとスキーマを選択する場合は、コネクタの前のインスタンスによって取り込まれたデータを含む既存のスキーマを選択します。

  2. コネクタに必要な権限を付与する

    注釈

    このステップは、SQL コマンドを使用してコネクタをインストールし構成した場合にのみ必要です。Snowsight を使用してコネクタをインストールした場合は、このステップを省略できます。

    次のコマンドを実行して、新しくインストールされたコネクタが既存のスキーマ内のすべてのオブジェクトの所有者になるようにします。

    system$grant_ownership_to_application('your_application_instance', true, '<database>', '<schema>');
    
    Copy

    条件: <database> および <schema> は、それぞれ既存のデータベースとスキーマの名前です。

  3. コネクタを一時停止する

    call pause_connector();
    
    Copy
  4. 既存のデータとテーブル構成をインポートする

    インストールされたアプリケーションのコンテキストから以下のコマンドを実行して、既存のデータとテーブル構成をインポートします。

    call import_state(force => true);
    
    Copy

    **force**パラメーターは**true**にセットされ、新しくインストールされたコネクタに加えられた可能性のある変更が、古いインストールからのテーブル構成と内部データで上書きされるようにします。

  5. コネクタを再開する

    call resume_connector();
    
    Copy

この時点で、Snowflake Connector for ServiceNow® コネクタの新しいインスタンスは、既存のテーブルのインジェスションを再開する必要があります。

デスティネーション データベースとコネクタの状態を別の Snowflake デプロイメントに複製します。

このセクションでは、複製先データベースのコンテンツを複製する手順について説明します。宛先データベースには、取り込まれたデータと、コネクタで構成されたテーブルのメタデータが格納されます。コネクタまたはコネクタによってダウンロードされるデータがビジネスにとって重要な場合は、別のリージョンにSnowflakeのセカンダリアカウントを設定し、宛先データベースをセカンダリアカウントに複製することを検討しましょう。

規約と定義

障害復旧の構成プロセスでは、次の用語と定義が使用されます。

宛先データベース

コネクタによって取り込まれるデータのターゲットとして構成されたデータベース。これは、コネクタの内部状態がエクスポートされるデータベースでもあります。

宛先スキーマ

コネクタによって取り込まれるデータのターゲットとして構成されたスキーマ。

内部ステージ

コネクタの内部データと構成(たとえばテーブル構成、インジェスション状態、エラーログなど)。

コネクタインスタンス

Snowflakeアカウントにインストールされている Snowflake Connector for ServiceNow® コネクタインスタンス。

ACCOUNT_PRIM

プライマリアカウント名の例

ACCOUNT_SEC

セカンダリ(レプリカ)アカウント名の例

APP_PRIM

プライマリアカウントにインストールされた Snowflake Connector for ServiceNow® コネクタインスタンス名の例

APP_SEC

セカンダリアカウントにインストールされた Snowflake Connector for ServiceNow® コネクタインスタンス名の例

DST_DB.DST_SCHEMA

コネクタインスタンス(データが取り込まれ、コネクタの内部状態が保存される)の宛先スキーマ名の例

DST_DB

コネクタ用に構成された宛先データベース名の例

MYORG

組織名の例(両方のアカウントが同じ組織である必要があります)。

概要

アカウントにインストールすると、Snowflake Connector for ServiceNow® コネクタ(コネクタインスタンス)は、データやプロシージャなどを含む通常のデータベースとして表示されます。ただし、通常のデータベースと同じようにセカンダリアカウントに複製することはできません。現在のところ、コネクタインスタンスとその内部状態をレプリカアカウントに複製するネイティブなメカニズムはありません。具体的には、インストールされたアプリケーションを複製グループに追加できません。

コネクタインスタンスを直接複製する代わりに、構成されたテーブルのメタデータを、コネクタの設定プロセス中に構成された宛先スキーマにエクスポートします。状態はそこに保存され、取り込まれたデータと一緒に複製することができます。

たとえば、宛先スキーマ DST_DB.DST_SCHEMA にデータを取り込むようにコネクタを構成した場合、コネクタは内部状態をこのスキーマに自動的に保存します。その後、以下のコマンドを使用して、取り込んだデータと内部状態の両方を複製できます。

create replication group connector_dest_database_group
  object_types = databases
  allowed_databases = dst_db
  allowed_accounts = ...;
Copy

取り込んだデータと構成レポートの複製セットアップ

注意

ディザスタリカバリのプロシージャを常にテストし、データと状態の複製が期待どおりに機能していることを確認します。

先に進む前に、Snowflake複製 についてよく理解しておきましょう。

以下のセクションには、Snowflakeのすべてのバージョンに適用される説明が記載されています。

  1. プライマリアカウントへのコネクタのインストール

    プライマリアカウントに Snowflake Connector for ServiceNow® をインストールして構成します。詳細な手順については、Snowsightを使用したコネクタのインストールと構成 または SQL コマンドを使用したコネクタのインストールおよび構成 をご参照ください。

    プライマリアカウントで複製グループを作成し、 DST_DB を許可データベースとして追加します。

    -- on primary account
    create replication group connector_rep_group_prim
      object_types = databases
      allowed_databases = dst_db
      allowed_accounts = myorg.account_sec
      replication_schedule = '10 minute';
    
    Copy
  2. セカンダリアカウントでの複製の設定

    DST_DB をプライマリアカウントからセカンダリアカウントに複製するには、セカンダリアカウントに新しい複製グループを作成します。

    -- on secondary account
    create replication group connector_rep_group_sec
      as replica of myorg.account_prim.connector_rep_group_prim;
    
    alter replication group connector_rep_group_sec refresh;
    
    Copy

    この時点で、読み取り専用の DST_DB データベースがセカンダリアカウント上に作成され、プライマリアカウントからのデータが構成されたスケジュールに従って複製されるはずです。

  3. セカンダリアカウントにコネクタをインストールする

    プライマリアカウントと同じ方法で、セカンダリアカウントに Snowflake Connector for ServiceNow® をインストールし、構成します。複製データベースとスキーマにデータを取り込むインスタンスを指定します。複製が実行されている間(セカンダリアカウントの複製グループがドロップされるまで)、データベースは読み取り専用モードになります。コネクタは、読み込み専用データベースをインジェスションターゲットとして使用するように構成できますが、データベースが読み書きモードに移行するまでデータを取り込むことはできません。

    セカンダリアカウントでコネクタを構成した後、実行してコネクタを一時停止します。

    -- on secondary account
    call pause_connector();
    
    Copy

    この時点で、コネクタがインストールされ、プライマリアカウントに障害が発生した場合に引き継ぐ準備ができています。

リカバリープロシージャ

プライマリデプロイメントが使用できなくなった場合は、セカンダリアカウントでコネクタインスタンスを構成して、インジェスションを続行します。

重要

すべての手順はセカンダリアカウントで実行する必要があります。

  1. 複製グループを削除する

    セカンダリアカウントの複製グループをドロップして、複製されたデータベースを読み取り/書き込みモードに移行します。

    drop replication group connector_rep_group_sec;
    
    Copy
  2. 既存のデータベースオブジェクトの所有権をコネクタに付与する

    以下を実行して、複製スキーマ内のすべてのオブジェクトの所有権をコネクタに付与します。

    call system$grant_ownership_to_application('app_sec', true, 'dst_db', 'dst_schema');
    
    Copy
  3. 状態をインポートする

    プライマリアカウントから複製された状態でコネクタを初期化します。

    call import_state(true);
    
    Copy
  4. コネクタを再開する

    実行でコネクタを再開します。

    call resume_connector();
    
    Copy

    この時点で、セカンダリアカウントのコネクタは、プライマリアカウントのコネクタが終了したところから継続して、データのインジェスションを再開するはずです。

    注釈

    プライマリアカウントとセカンダリアカウントの両方が同じ組織に属していることを確認してください。複製スケジュールは要件に応じて調整できます。