리전 및 클라우드 플랫폼 간 공유 복제

Snowflake Marketplace 또는 Data Exchange에서 데이터를 공유할 때 공급자는 원격 리전에서 요청을 받습니다. 이 항목에서는 계정 복제를 사용하여 리전과 클라우드 플랫폼 간에 데이터 공유를 복제하는 방법에 대한 지침을 제공합니다.

계정 복제를 사용하면 원본 계정에서 동일 조직의 하나 이상의 대상 계정으로 오브젝트를 복제할 수 있습니다. 각 대상 계정의 복제된 오브젝트는 보조 오브젝트라고 하며 원본 계정의 기본 오브젝트의 복제본입니다.

중요

원본 Snowflake 계정이 있는 위치와 다른 지리적 리전 또는 국가로 데이터베이스를 복제하는 경우 조직에 데이터를 전송하거나 호스팅할 수 있는 위치에 대한 법적 또는 규제적 제한이 없는지 확인해야 합니다.

이 항목의 내용:

복제 그룹

복제 그룹은 하나 이상의 대상 계정에 단위로서 복제되는, 원본 계정의 정의된 오브젝트 모음입니다. 복제 그룹은 복제된 오브젝트에 대한 읽기 전용 액세스를 제공합니다. 복제 그룹은 컬렉션의 오브젝트(예: 데이터베이스 및 공유)에 대한 특정 시점 일관성을 제공합니다.

공급자는 원본 계정에 기본 복제 그룹을 생성하고, 컨슈머의 대상 계정에 복제를 활성화합니다. 표준 공유의 경우, 데이터 공급자는 리전당 하나의 공유 복사본만 생성하면 됩니다. 컨슈머당 복사본이 아닙니다.

참고

이 항목은 계정 복제 에서 사용할 수 있는 기능의 하위 섹션입니다. 계정 복제는 계정 오브젝트 복제 및 장애 조치 외에도 데이터베이스 및 공유 복제를 가능하게 합니다.

복제된 오브젝트

데이터베이스 복제

이 기능은 데이터베이스 복제를 지원합니다. 스냅샷에는 오브젝트 및 데이터 변경 사항이 포함됩니다. 보조 데이터베이스를 새로 고치는 경우, 데이터베이스와 데이터베이스의 오브젝트(스키마, 테이블, 보기 등)에 대한 권한 부여가 동기화됩니다. 이러한 오브젝트에 대한 역할에 부여된 권한은 원본 계정에서 대상 계정으로 동기화됩니다. 데이터베이스 복제가 지원하는 오브젝트에 대한 권한 부여만 동기화됩니다. 오브젝트 목록은 복제된 데이터베이스 오브젝트 섹션을 참조하십시오.

지원되는 데이터베이스 오브젝트 지원되지 않는 데이터베이스 오브젝트 둘 다에 대한 향후 권한 부여는 데이터베이스 및 스키마 수준에서 동기화됩니다. 보조 데이터베이스가 집합의 기본 데이터베이스가 되도록 승격된 후, 지정된 유형의 오브젝트를 생성하는 경우, 향후 권한 부여에 정의된 대로 역할에 권한이 자동으로 부여됩니다. 향후 자동 권한 부여에 대한 자세한 내용은 향후 권한을 사용하여 권한 부여 관리 간소화하기 를 참조하십시오.

복제 공유

이 기능은 공유 오브젝트의 복제, 그리고 데이터베이스 오브젝트의 공유에 부여된 액세스 권한의 복제를 지원합니다.

대상 계정의 오브젝트를 새로 고치는 사용자

ALTER REPLICATION GROUP … REFRESH 명령을 실행하여 원본 계정에서 대상 계정의 오브젝트를 새로 고치는 사용자는 복제 그룹에 대한 REPLICATE 권한이 있는 역할을 사용해야 합니다. Snowflake는 다음 시나리오에서의 실패를 통해 대상 계정에서 이 사용자를 보호합니다.

  • 사용자가 원본 계정에 없으면 새로 고침 작업이 실패합니다.

  • 이 사용자가 원본 계정에 존재하지만, REPLICATE 권한이 있는 역할이 사용자에게 부여되지 않은 경우 새로 고침 작업이 실패합니다.

복제 권한

사용자가 시스템의 오브젝트에 대해 수행할 수 있는 작업을 지정하기 위해 역할에 부여할 수 있는 복제 권한 목록은 복제 권한 섹션을 참조하십시오.

복제 일정

모범 사례로서 Snowflake는 REPLICATION_SCHEDULE 매개 변수를 사용하여 자동 새로 고침을 예약할 것을 권장합니다. CREATE REPLICATION GROUP 항목으로 새 복제 그룹을 생성할 때 또는 이후에(ALTER REPLICATION GROUP 사용) 일정을 정의할 수 있습니다.

보조 복제 그룹이 생성되면 초기 새로 고침이 자동으로 실행됩니다. 다음 새로 고침은 이전 새로 고침이 시작된 시간과 일정 간격을 기준으로 예약되거나, cron 식을 기반으로 한 다음 유효 시간을 기준으로 예약됩니다. 예를 들어 새로 고침 일정 간격이 10분이고, 이전 새로 고침 작업(예약된 새로 고침 또는 수동으로 트리거된 새로 고침)이 12:01에 시작되면 다음 새로 고침은 12:11에 예약됩니다.

Snowflake는 주어진 시간에 한 번만 새로 고침이 실행되도록 합니다. 다음 새로 고침이 예약되었을 때 새로 고침이 계속 실행 중인 경우, 현재 실행 중인 새로 고침이 완료될 때 다음 새로 고침이 시작되도록 지연됩니다. 예를 들어 매시 정각 15분 후에 새로 고침이 실행되도록 예약되어 있고, 이전 새로 고침이 12:16에 완료된 경우, 이전에 실행된 새로 고침이 완료될 때 다음 새로 고침이 실행되도록 예약됩니다.

복제 그룹 제약 조건

데이터베이스와 공유는 복제 그룹 구성원으로 제한되며, 대상 계정에 고유하게 복제되어야 합니다.

다음 제약 조건이 데이터베이스 및 공유 오브젝트에 적용됩니다.

  • 각 그룹이 다른 대상 계정에 복제되는 한, 오브젝트는 여러 복제 그룹에 있을 수 있습니다.

  • 보조(복제본) 오브젝트는 기본 복제 그룹에 추가할 수 없습니다.

데이터베이스 복제에서 그룹 기반 복제로 전환하기

이전에 리전 및 클라우드 플랫폼 전체에서 안전하게 데이터 공유하기 의 지침에 따라 데이터베이스에 대해 데이터베이스 복제를 활성화한 경우 데이터베이스 복제를 비활성화한 후 데이터베이스를 복제 그룹에 추가해야 합니다.

참고

ACCOUNTADMIN 역할을 사용하여 이 섹션의 SQL 문을 실행하십시오.

1단계: 복제가 활성화된 데이터베이스에 대한 복제 비활성화하기

SYSTEM$DISABLE_DATABASE_REPLICATION 함수를 사용하여 기본 데이터베이스와 이 데이터베이스에 연결된 보조 데이터베이스에 대한 데이터베이스 복제를 비활성화한 후에 기본 데이터베이스를 복제 그룹에 추가합니다.

기본 데이터베이스가 있는 원본 계정에서 다음 SQL 문을 실행합니다.

SELECT SYSTEM$DISABLE_DATABASE_REPLICATION('mydb');
Copy

2단계. 기본 복제 그룹에 데이터베이스 및 공유를 추가하고 보조 복제 그룹 생성하기

데이터베이스 복제를 성공적으로 비활성화했으면 이제 기본 데이터베이스와 기본 공유를 원본 계정의 복제 그룹에 추가할 수 있습니다.

그런 다음 각 대상 계정에 보조 복제 그룹을 생성합니다. 각 대상 계정에서 보조 복제 그룹을 새로 고치면 이전의 모든 보조 데이터베이스가 자동으로 보조 복제 그룹의 구성원으로 추가되고 기본 오브젝트의 변경 사항으로 새로 고쳐집니다.

기본 및 보조 복제 그룹을 생성하고 대상 계정의 오브젝트 자동 새로 고침을 예약하려면 아래 워크플로 섹션을 참조하십시오.

참고

이전에 복제된 데이터베이스를 복제 그룹에 추가하면 Snowflake는 해당 데이터베이스에 대해 이미 복제된 데이터를 다시 복제하지 않습니다. 그룹을 새로 고칠 때 마지막 새로 고침 이후의 변경 사항만 복제됩니다.

워크플로

다음 SQL 문은 데이터베이스 및 공유 복제를 활성화하고 오브젝트를 새로 고치는 워크플로를 보여줍니다. 각 단계는 아래에서 자세히 설명합니다.

선호하는 Snowflake 클라이언트에서 다음 SQL 문을 실행하여 데이터베이스를 활성화하고 복제를 공유하고 일정에 따라 오브젝트를 새로 고칩니다.

원본 계정에서 실행됨

  1. 역할을 생성하고 CREATE REPLICATION GROUP 권한을 부여합니다. 이 단계는 선택 사항 입니다.

    -- Execute the following SQL statements using the ACCOUNTADMIN role:
    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE myrole;
    
    GRANT CREATE REPLICATION GROUP ON ACCOUNT
      TO ROLE myrole;
    
    Copy
  2. 원본 계정에 복제 그룹을 만들고 특정 대상 계정에 복제를 활성화합니다.

    참고

    • 이전에 복제가 활성화된 복제 그룹에 추가할 데이터베이스가 있는 경우, 그룹에 추가하기 전에 이 항목의 데이터베이스 복제에서 그룹 기반 복제로 전환하기 지침에 따라 오브젝트를 복제 그룹과 호환 가능하도록 변환하십시오.

    • 복제 그룹에 데이터베이스를 추가하려면 활성 역할에 데이터베이스에 대한 MONITOR 권한이 있어야 합니다. 데이터베이스 권한에 대한 자세한 내용은 별도 항목의 데이터베이스 권한 섹션을 참조하십시오.

    • 복제 그룹에 공유를 추가하려면 활성 역할에 공유에 대한 OWNERSHIP 권한이 있어야 합니다.

    USE ROLE myrole;
    
    -- Execute the following SQL statement using a role with the CREATE REPLICATION GROUP privilege:
    CREATE REPLICATION GROUP myrg
        OBJECT_TYPES = DATABASES, SHARES
        ALLOWED_DATABASES = db1, db2
        ALLOWED_SHARES = s1
        ALLOWED_ACCOUNTS = myorg.myaccount2, myorg.myaccount3
        REPLICATION_SCHEDULE = '10 MINUTE';
    
    Copy

대상 계정에서 실행됨

  1. 대상 계정에서 역할을 생성하고 CREATE REPLICATION GROUP 권한을 부여합니다. 이 단계는 선택 사항 입니다.

    -- Execute the following SQL statements using the ACCOUNTADMIN role:
    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE myrole;
    
    GRANT CREATE REPLICATION GROUP ON ACCOUNT
        TO ROLE myrole;
    
    Copy
  2. 대상 계정에 복제 그룹을 원본 계정에 있는 복제 그룹의 복제본으로서 생성합니다:

    USE ROLE myrole;
    
     -- Execute the following SQL statement using a role with the CREATE REPLICATION GROUP privilege:
     CREATE REPLICATION GROUP myrg
         AS REPLICA OF myorg.myaccount1.myrg;
    
    Copy

수동으로 보조 복제 그룹 새로 고치기

모범 사례로서 Snowflake는 REPLICATION_SCHEDULE 매개 변수를 사용하여 자동 새로 고침을 예약할 것을 권장합니다. 자세한 내용은 이 항목의 복제 일정 섹션을 참조하십시오. 보조 복제 그룹의 모든 오브젝트를 수동으로 새로 고치려면 대상 계정에서 다음 SQL 문을 실행합니다.

대상 계정의 오브젝트를 수동으로 새로 고치려면 ALTER REPLICATION GROUP … REFRESH 명령을 실행합니다.

참고

대상 계정에서 함수를 호출한 사용자가 원본 계정에서 삭제된 경우 새로 고침 작업이 실패합니다.

역할에 복제 그룹에 대한 REPLICATE 권한 부여하기 — 선택 사항

REPLICATE 권한은 현재 복제되지 않으며 원본 계정 및 대상 계정 둘 다의 복제 그룹에 부여되어야 합니다.

원본 계정에서 실행됨:

-- Execute the following SQL statements using a role with the OWNERSHIP privilege on the group:
GRANT REPLICATE ON REPLICATION GROUP myrg TO ROLE my_replication_role;
Copy

대상 계정에서 실행됨:

-- Execute the following SQL statements using a role with the OWNERSHIP privilege on the group:
GRANT REPLICATE ON REPLICATION GROUP myrg TO ROLE my_replication_role;
Copy

수동으로 보조 복제 그룹 새로 고치기

예를 들어 복제 그룹 myrg 의 오브젝트를 새로 고치려면 대상 계정에서 다음 문을 실행합니다.

USE ROLE my_replication_role;

-- Execute the following SQL statements using a role with the REPLICATE privilege:
ALTER REPLICATION GROUP myrg REFRESH;
Copy

데이터베이스 및 공유 복제하기

전제 조건

계정에서 복제 활성화하기

ORGADMIN 역할이 있는 사용자는 조직에서 둘 이상의 계정에 대해 복제를 활성화해야 합니다. 지침을 전제 조건: 조직의 계정에 대한 복제 활성화 섹션을 참조하십시오.

참고

데이터 복제를 구성하기 전에 기존 계정이 있어야 합니다. 또는 데이터를 공유하고 로컬 계정에 연결하려는 리전에 계정을 생성해야 합니다. 계정 생성에 대한 자세한 내용은 계정 만들기 섹션을 참조하십시오.

원본 계정에서 공유 생성

원본(로컬) 계정에서 이전에 공유를 생성한 경우 이 단계를 건너뛸 수 있습니다.

새 공유를 생성하려면:

  1. ACCOUNTADMIN 역할이 있는 사용자로 Snowflake Classic Console 에 로그인합니다.

  2. 공유를 만들고 공유에 오브젝트를 추가합니다. 자세한 지침은 Secure Data Sharing 시작하기 섹션을 참조하십시오.

1단계: 원본 계정에서 CREATE REPLICATION GROUP 권한이 있는 역할 만들기 — 선택 사항

역할을 생성하고 CREATE REPLICATION GROUP 권한을 부여합니다. 이 단계는 선택 사항입니다. 이 역할을 이미 만든 경우 2단계: 원본 계정에서 기본 복제 그룹 생성하기 항목으로 건너뛰십시오.

-- Execute the following SQL statements using the ACCOUNTADMIN role:
USE ROLE ACCOUNTADMIN;

CREATE ROLE myrole;

GRANT CREATE REPLICATION GROUP ON ACCOUNT
    TO ROLE myrole;
Copy

2단계: 원본 계정에서 기본 복제 그룹 생성하기

기본 복제 그룹을 생성하고 현재(원본) 계정에서 동일 조직의 하나 이상의 대상 계정으로 지정 데이터베이스 및 공유의 복제를 활성화합니다.

복제가 활성화된 모든 계정 보기

복제가 활성화된 조직의 계정 목록을 검색하려면 SHOW REPLICATION ACCOUNTS 항목을 사용하십시오.

SHOW REPLICATION ACCOUNTS;

+------------------------+-------------------------+--------------+-----------------+-----------------+-------------------+
| snowflake_region       | created_on              | account_name | account_locator |  comment        | organization_name |
+------------------------+-------------------------+--------------+-----------------+-----------------+-------------------+
| AWS_US_WEST_2          | 2020-07-15 21:59:25.455 | myaccount1   | myacctlocator1  |                 | myorg             |
+------------------------+-------------------------+--------------+-----------------+-----------------+-------------------+
| AWS_US_EAST_1          | 2020-07-23 14:12:23.573 | myaccount2   | myacctlocator2  |                 | myorg             |
+------------------------+-------------------------+--------------+-----------------+-----------------+-------------------+
| AWS_US_EAST_2          | 2020-07-25 19:25:04.412 | myaccount3   | myacctlocator3  |                 | myorg             |
+------------------------+-------------------------+--------------+-----------------+-----------------+-------------------+
Copy

복제 그룹 구성원 보기

데이터베이스 및 공유 오브젝트에는 구성원 자격에 대한 복제 그룹 제약 조건 이 있습니다. 새 그룹을 생성하거나 기존 그룹에 오브젝트를 추가하기 전에 기존 복제 그룹 및 각 그룹의 오브젝트 목록을 검토할 수 있습니다.

참고

계정 관리자(ACCOUNTADMIN 역할이 있는 사용자) 또는 그룹 소유자(그룹에 대한 OWNERSHIP 권한이 있는 역할)만 이 섹션의 SQL 문을 실행할 수 있습니다.

현재 계정에 연결된 모든 복제 그룹, 그리고 각 그룹의 오브젝트 유형을 봅니다.

SHOW REPLICATION GROUPS;
Copy

복제 그룹 myrg 의 모든 데이터베이스 보기:

SHOW DATABASES IN REPLICATION GROUP myrg;
Copy

복제 그룹 myrg 의 모든 공유 보기:

SHOW SHARES IN REPLICATION GROUP myrg;
Copy

원본 계정에서 대상 계정으로 데이터베이스 및 공유 복제 활성화하기

원본 계정에서 지정된 데이터베이스 및 공유의 복제 그룹을 생성하고 대상 계정 목록에 대한 복제를 활성화합니다. 구문은 CREATE REPLICATION GROUP 섹션을 참조하십시오.

예를 들어, 데이터베이스 db1db2 의 복제를 활성화하고 원본 계정의 s1 을 동일 조직의 myaccount2 계정으로 공유합니다.

원본 계정에서 실행됨:

USE ROLE myrole;

-- Execute the following SQL statement using a role with the CREATE REPLICATION GROUP privilege:
CREATE REPLICATION GROUP myrg
    OBJECT_TYPES = databases, shares
    ALLOWED_DATABASES = db1, db2
    ALLOWED_SHARES = s1
    ALLOWED_ACCOUNTS = myorg.myaccount2;
Copy

3단계: 대상 계정에서 CREATE REPLICATION GROUP 권한이 있는 역할 만들기 — 선택 사항

대상 계정에서 역할을 생성하고 CREATE REPLICATION GROUP 권한을 부여합니다. 이 단계는 선택 사항입니다. 이 역할을 이미 만든 경우 4단계: 대상 계정에 보조 복제 그룹 생성하기 로 건너뜁니다.

-- Execute the following SQL statements using the ACCOUNTADMIN role:
USE ROLE ACCOUNTADMIN;

CREATE ROLE myrole;

GRANT CREATE REPLICATION GROUP ON ACCOUNT
    TO ROLE myrole;
Copy

4단계: 대상 계정에 보조 복제 그룹 생성하기

원본 계정의 기본 복제 그룹의 복제본으로서 대상 계정에 보조 복제 그룹을 생성합니다.

이 항목의 2단계: 원본 계정에서 기본 복제 그룹 생성하기 에서 복제를 활성화한 각 대상 계정에서 CREATE REPLICATION GROUP … AS REPLICA OF 문을 실행합니다.

각 대상 계정에서 실행됨:

USE ROLE myrole;

-- Execute the following SQL statement using a role with the CREATE REPLICATION GROUP privilege:
CREATE REPLICATION GROUP myrg
  AS REPLICA OF myorg.myaccount1.myrg;
Copy

수동으로 보조 복제 그룹 새로 고치기

대상 계정의 보조 복제 그룹을 수동으로 새로 고칩니다. 이렇게 하면 복제 그룹의 모든 오브젝트가 새로 고쳐집니다.

참고

모범 사례로서 Snowflake는 REPLICATION_SCHEDULE 매개 변수를 사용하여 자동 새로 고침을 예약할 것을 권장합니다. 이 항목의 복제 일정 섹션을 참조하십시오.

보조 복제 그룹을 새로 고칩니다.

예를 들어 복제 그룹 myrg 의 오브젝트를 새로 고치려면 대상 계정에서 다음 문을 실행합니다.

-- Only a user with the ACCOUNTADMIN role can execute the following SQL statement:
ALTER REPLICATION GROUP myrg REFRESH;
Copy

복제 그룹 보기

복제 그룹을 보려면 SHOW REPLICATION GROUPS 항목을 사용합니다.

현재 계정과 연결된 모든 기본 및 보조 복제 그룹을 표시하려면 다음 SQL 문을 실행합니다.

SHOW REPLICATION GROUPS;
Copy

명령 출력:

+------------------+-------------------------------+--------------+------+-------------+---------+------------+------------------+--------------------------------------+------------------------------------------+--------------------+-----------------+----------------------+-----------------+------------+
| snowflake_region | created_on                    | account_name | name | type        | comment | is_primary | primary          | object_types                         | allowed_accounts                         | organization_name  | account_locator | replication_schedule | secondary_state | owner      |
+------------------+-------------------------------+--------------+------+-------------+---------+------------+------------------+--------------------------------------+------------------------------------------+--------------------+-----------------+----------------------+-----------------+------------+
| AWS_US_EAST_1    | 2022-01-14 16:59:01.462 -0800 | MYACCOUNT2   | MYRG | REPLICATION | NULL    | false      | MYORG.MYACCOUNT1 |                                      |                                          | MYORG              | MYACCTLOCATOR2  | 15 MINUTE            | SUSPENDED       |  NULL      |
| AWS_US_WEST_2    | 2022-01-14 16:56:10.497 -0800 | MYACCOUNT1   | MYRG | REPLICATION | NULL    | true       | MYORG.MYACCOUNT1 | DATABASES, SHARES                    | MYORG.MYACCOUNT2                         | MYORG              | MYACCTLOCATOR1  | 15 MINUTE            | NULL            |  MYROLE    |
+------------------+-------------------------------+--------------+------+-------------+---------+------------+------------------+--------------------------------------+------------------------------------------+--------------------+-----------------+----------------------+-----------------+------------+
Copy