[Snowflake] Replication (복제)

차지예·2026년 6월 12일

Snowflake

목록 보기
47/49
post-thumbnail

1. Replication이란?

Replication(복제) 은 같은 조직(Organization) 내 Snowflake 계정들 사이에서 데이터베이스를 복제하는 기능이다.

  • 데이터베이스 객체와 저장된 데이터를 계정 간 동기화 상태로 유지
  • 리전(Region) 간, 클라우드 플랫폼(AWS/GCP/Azure) 간 복제 지원

💡 핵심: "조직 내 계정 간 DB 복제"


2. Primary vs Secondary Database

구분설명
Primary DB (P)원본 데이터베이스. 모든 DML/DDL 작업이 실행됨
Secondary DBPrimary의 복제본(replica). 읽기 전용(read-only)
  • 기존 permanent / transient DB는 모두 primary로 지정 가능
  • 한 계정 내 여러 DB를 primary로 지정 가능
  • 하나의 primary DB를 조직 내 여러 계정으로 복제 가능

포인트: Secondary DB는 read-only. 모든 쓰기 작업은 Primary에서만 수행.


3. 핵심 SQL 명령어 (⭐⭐)

① 복제 활성화 (Primary 지정)

ALTER DATABASE DB_1
ENABLE REPLICATION TO ACCOUNTS ORG1.account2;

② Secondary DB 생성 (스냅샷 전송)

CREATE DATABASE DB_1_REPLICA
AS REPLICA OF ORG_1.account1.DB_1;
  • Primary 복제 시, DB 객체와 데이터의 스냅샷(snapshot) 이 secondary로 전송됨

③ Secondary DB 갱신 (주기적 새로고침)

ALTER DATABASE DB_1_REPLICA REFRESH;

🔑 명령어 흐름 암기:
ENABLEAS REPLICA OFREFRESH
(활성화 → 복제본 생성 → 새로고침)


4. Replication 주요 특징 & 제약사항 (⭐⭐)

✅ 복제되지 않는 객체

  • External tables / Iceberg tables → 복제 미지원
  • Stage, Pipe → database replication으로는 복제 불가 (account replication 필요)
  • Secrets → 복제 불가
  • Share로부터 생성된 DB → 복제 불가

✅ Refresh(갱신) 실패 조건 ⭐

  • Primary DB에 External table 또는 Iceberg table 포함 시 → refresh 실패
  • 지원되지 않는 source object를 가진 stream 포함 시 → refresh 실패
  • stream의 source object가 drop된 경우 → 실패

✅ Refresh 자동화

  • Task 객체를 구성해 스케줄에 따라 refresh 명령을 자동 실행 가능

✅ 권한(Privileges) 복제 안 됨 ⭐⭐

  • 데이터베이스 객체에 부여된 권한(privileges)은 secondary DB로 복제되지 않음
  • 기존 객체 권한 + future grants 모두 미복제
  • 단, account replication 으로는 권한 복제 가능

✅ Billing (과금) ⭐

  • 복제 과금은 데이터 전송(data transfer) + compute 리소스(credits) 기반
  • 월 과금은 다음에 비례:
    • Primary DB에서 변경된 테이블 데이터 양 (data load / DML 결과)
    • Secondary DB refresh 빈도
  • 과금은 Target account(secondary DB를 저장하는 계정) 에 청구됨
  • Refresh를 중단하면 복제 비용도 멈춤

💰 비용 절감 팁: 복제 대상 DB/객체 선택 + refresh 빈도 조절


5. ⭐ 한 줄 포인트

항목핵심
정의조직 내 계정 간 DB 복제
Secondary DB읽기 전용(read-only)
명령어 3단계ENABLE → AS REPLICA OF → REFRESH
권한 복제❌ 안 됨 (account replication은 가능)
Refresh 자동화Task 객체로 스케줄링
Refresh 실패External/Iceberg table, 잘못된 stream 포함 시
과금 기준data transfer + compute, target 계정에 청구
범위리전 간 + 클라우드 간 모두 지원

🎯 최종 정리 문장
"복제는 조직 안 계정끼리, Primary는 쓰기·Secondary는 읽기 전용,
권한·External table은 안 따라온다, 갱신은 Task로 자동화,
과금은 받는 쪽(target) 이 낸다."


0개의 댓글