0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake MLSI コマンド備忘録

0
Posted at

Snowflake MLSI コマンド備忘録

1. Source側:MLSI作成

USE ROLE ACCOUNTADMIN;

CREATE STORAGE INTEGRATION <MLSI_NAME>
  TYPE = EXTERNAL_STAGE
  STORAGE_LOCATIONS =
  (
    (
      NAME = 'PRIMARY_S3'
      STORAGE_PROVIDER = 'S3'
      STORAGE_BASE_URL = 's3://<PRIMARY_BUCKET>'
      STORAGE_AWS_ROLE_ARN =
        'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>'
      STORAGE_AWS_EXTERNAL_ID = '<EXTERNAL_ID>'
      ENCRYPTION = ( TYPE = 'AWS_SSE_S3' )
    ),
    (
      NAME = 'SECONDARY_S3'
      STORAGE_PROVIDER = 'S3'
      STORAGE_BASE_URL = 's3://<SECONDARY_BUCKET>'
      STORAGE_AWS_ROLE_ARN =
        'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>'
      STORAGE_AWS_EXTERNAL_ID = '<EXTERNAL_ID>'
      ENCRYPTION = ( TYPE = 'AWS_SSE_S3' )
    )
  )
  ENABLED = TRUE
  STORAGE_ALLOWED_LOCATIONS = ('*')
  ACTIVE = 'PRIMARY_S3';

2. Source側:Snowflake IAM情報取得

DESC STORAGE INTEGRATION <MLSI_NAME>;

控える値:

STORAGE_AWS_IAM_USER_ARN
STORAGE_AWS_EXTERNAL_ID

AWS IAM RoleのTrust Policy設定で使用する。


3. Failover GroupにStorage Integrationを追加

既存のReplication対象を残したうえで INTEGRATIONS を追加する。

ALTER FAILOVER GROUP <FAILOVER_GROUP_NAME> SET
  OBJECT_TYPES = DATABASES, INTEGRATIONS
  ALLOWED_DATABASES = <DATABASE_NAME>
  ALLOWED_INTEGRATION_TYPES = STORAGE INTEGRATIONS;

ROLESもReplication中の場合:

ALTER FAILOVER GROUP <FAILOVER_GROUP_NAME> SET
  OBJECT_TYPES = DATABASES, ROLES, INTEGRATIONS
  ALLOWED_DATABASES = <DATABASE_NAME>
  ALLOWED_INTEGRATION_TYPES = STORAGE INTEGRATIONS;

事前確認:

SHOW FAILOVER GROUPS;

OBJECT_TYPES は追加ではなく再指定になるため、既存対象を落とさないよう注意。


4. Target側:Refresh

ALTER FAILOVER GROUP <FAILOVER_GROUP_NAME> REFRESH;

5. Target側:ACTIVE Location変更

ALTER STORAGE INTEGRATION <MLSI_NAME>
  SET ACTIVE = 'SECONDARY_S3';

確認:

DESC STORAGE INTEGRATION <MLSI_NAME>;

確認観点:

ACTIVE = SECONDARY_S3

6. Target側:Snowflake IAM情報取得

DESC STORAGE INTEGRATION <MLSI_NAME>;

控える値:

STORAGE_AWS_IAM_USER_ARN

AWS IAM RoleのTrust Policyには、Source / Target双方のSnowflake IAM User ARNを許可する。


7. External Stage作成

CREATE STAGE <DATABASE_NAME>.<SCHEMA_NAME>.<STAGE_NAME>
  RELATIVE_URL = '/<RELATIVE_PATH>/'
  STORAGE_INTEGRATION = <MLSI_NAME>;

Storage Location直下を使う場合:

CREATE STAGE <DATABASE_NAME>.<SCHEMA_NAME>.<STAGE_NAME>
  RELATIVE_URL = ''
  STORAGE_INTEGRATION = <MLSI_NAME>;

Primary / Secondary S3では同じ相対パス構成にする。


8. Stage接続確認

LIST @<DATABASE_NAME>.<SCHEMA_NAME>.<STAGE_NAME>;

9. Failover

Target側:

ALTER FAILOVER GROUP <FAILOVER_GROUP_NAME> PRIMARY;

ACTIVE LocationはTarget側で事前に SECONDARY_S3 に設定済みのため、Failover時の変更は不要。


10. Failback

元Source側で最新状態を取得:

ALTER FAILOVER GROUP <FAILOVER_GROUP_NAME> REFRESH;

Refresh完了後:

ALTER FAILOVER GROUP <FAILOVER_GROUP_NAME> PRIMARY;

参考:公式ドキュメント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?