[Snowflake] 本番環境から開発環境にデータベースのコピー(クローニング)

スポンサーリンク
Snowflake

Snowflakeで本番環境から開発環境にデータベースをコピーしたいケースが度々あります。今回はその際の手順を記載したものなります。

前提

データベースをコピー(複製)する際に、外部ーブルがあると失敗します。そのため、今回は外部テーブルをコピー対象から除くため、一旦、クローンDBを作成しています。その後、クローンDBをコピーします。

(参考)複製に関する考慮事項 | 複製と外部テーブル

複製に関する考慮事項 | Snowflake Documentation

本番環境での作業

移行用に新しくクローンDBを作成

CREATE OR REPLACE DATABASE <クローンDB名> CLONE <本番DB名>;

開発環境のレプリケーションを有効化

use role ORGADMIN;
select system$global_account_set_parameter(<開発環境のアカウント識別子>, 'ENABLE_ACCOUNT_DATABASE_REPLICATION', 'true');

レプリケーションを作成

use role ACCOUNTADMIN;
CREATE REPLICATION GROUP SRC_REPLICATION_GRP OBJECT_TYPES = DATABASES ALLOWED_DATABASES = <クローンDB名> ALLOWED_ACCOUNTS = <開発環境のアカウント識別子>;

開発環境での作業

開発環境のレプリケーションを有効化

use role ORGADMIN;
select system$global_account_set_parameter(<開発環境のアカウント識別子>, 'ENABLE_ACCOUNT_DATABASE_REPLICATION', 'true');

レプリケーションを作成

use role ACCOUNTADMIN;
CREATE REPLICATION GROUP DEST_REPLICATION_GRP AS REPLICA OF <開発環境のアカウント識別子>SRC_REPLICATION_GRP;

レプリケーションを同期

ALTER REPLICATION GROUP DEST_REPLICATION_GRP REFRESH;

これでコピー作業は完了になります。

以上、『本番環境から開発環境にデータベースのコピー(クローニング)』でした。

コメント

タイトルとURLをコピーしました