【Snowflake】別アカウントにデータベースを複製する方法

Snowflake

はじめに

同一組織で、別のアカウントにデータベースを複製するときの手順を検証します。

前提
同じ組織のアカウントが2つ準備されていること

今回検証で使用する環境のアカウント識別子
ソース環境  :NIOOVAI.DG79999
ターゲット環境:NIOOVAI.TARGET

複製するデータベース

手順

①ソースアカウントの複製を有効にする

use role ORGADMIN;

select
SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER(
   'NIOOVAI.DG79999',
   'ENABLE_ACCOUNT_DATABASE_REPLICATION',
   'true');

②ターゲットアカウントの複製を有効にする

use role ORGADMIN;

select
SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER(
   'NIOOVAI.TARGET'
 , 'ENABLE_ACCOUNT_DATABASE_REPLICATION'
 , 'true');

③ソースアカウントでレプリケーショングループを作成する

use role ACCOUNTADMIN;

CREATE REPLICATION GROUP TEST_GROUP
OBJECT_TYPES = DATABASES
ALLOWED_DATABASES = TEST_DB
ALLOWED_ACCOUNTS = NIOOVAI.TARGET; -- ターゲットアカウントを指定

作成したレプリケーショングループを確認してみる

SHOW REPLICATION GROUPS;

④ターゲットアカウントでレプリケーショングループのレプリカを作成

use role ACCOUNTADMIN;

CREATE REPLICATION GROUP TEST_GROUP
AS REPLICA OF NIOOVAI.DG79999.TEST_GROUP; -- ソースアカウントを記述

作成したレプリケーショングループを確認してみる

SHOW REPLICATION GROUPS;

⑤ソースアカウントのデータベースをターゲットアカウントにコピーする
 ※クエリの実行はターゲットアカウントで行う

use role ACCOUNTADMIN;
ALTER REPLICATION GROUP TEST_GROUP REFRESH;

ターゲットアカウントにデータベースが複製される

※複製した後そのままだと読み取り専用になっているため変更ができない

⑥ターゲットアカウントで作成したレプリケーショングループを削除
 ※ターゲットアカウントで実行

use role ACCOUNTADMIN;
DROP REPLICATION GROUP TEST_GROUP;

削除されていることを確認

SHOW REPLICATION GROUPS;

⑥の手順実行後は編集が可能になる
 ※データベースへのアクセス権限はコピーされないので権限設定を忘れずに。

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