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;
これでコピー作業は完了になります。
以上、『本番環境から開発環境にデータベースのコピー(クローニング)』でした。
コメント