여러 계정에 걸쳐 데이터베이스 장애 조치하기

여러 계정에 걸쳐 데이터베이스 장애 조치하기

이 주제는 재해 복구를 위해 서로 다른 리전의 여러 계정에 걸쳐 복제된 데이터베이스를 장애 조치(failover)하는 데 필요한 단계를 설명해요.

출처: Snowflake User Guide - Failing over databases

본문

중요: 이 섹션은 계정 복제(account replication) 기능과는 다른 제한된 데이터베이스 복제 기능을 설명해요. Snowflake는 데이터베이스를 복제하고 장애 조치하는 데 계정 복제 기능을 사용할 것을 강력히 권장해요.

참고:

  • 데이터베이스에 대한 장애 조치를 활성화하고 관리할 수 있는 것은 계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)뿐이에요.
  • Snowflake는 데이터베이스 장애 조치에 계정 복제 기능 사용을 권장해요. 복제 및 장애 조치 그룹은 시점 일관성(point-in-time consistency)으로 여러 데이터베이스와 다른 계정 객체의 복제를 활성화해요. 장애 조치 그룹은 객체 모음을 단위로 장애 조치하는 것도 추가로 활성화해요. 기능 가용성과 지원되는 객체의 전체 목록은 여러 계정에 걸친 복제·장애 조치 소개를 참고해요.

Snowsight로 데이터베이스 복제와 장애 조치/복귀 사용하기

주의: Snowsight에서 복제와 장애 조치/복귀(failback)를 관리·모니터링하는 것은 프라이빗 연결을 사용하는 계정에서만 사용할 수 있어요. 그 외 계정은 Snowsight로 복제 모니터링과 계정 객체·데이터베이스 복제를 참고해요.

계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)는 Snowsight에서 복제와 장애 조치/복귀 작업을 관리할 수 있어요. 로컬 데이터베이스를 기본 데이터베이스로 승격시키는 지침은 데이터베이스 복제·장애 조치/복귀용 웹 인터페이스를 참고해요.

복제·장애 조치 SQL 명령용 계정 식별자

아래 지침의 예시 SQL 문은 organization_name.account_name 형식의 계정 식별자를 사용해요. 하지만 snowflake_region.account_locator 형식의 계정 식별자도 지원돼요.

사전 요구 사항

  • 일련의 계정에서 기본(primary) 데이터베이스에 대한 복제를 활성화해요.
  • 1단계에서 지정된 계정 중 하나 이상에 기본 데이터베이스의 보조(secondary) 데이터베이스(즉 복제본)를 최소 하나 만들고, 복제본을 기본 데이터베이스의 최신 갱신과 정기적으로 새로 고침(즉 동기화)해요.

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

SHOW REPLICATION ACCOUNTS를 쿼리해 조직 안에서 복제가 활성화된 계정의 목록을 확인해요.

SHOW REPLICATION ACCOUNTS;

+------------------+---------------------------------+---------------+------------------+---------+-------------------+
| snowflake_region | created_on                      | account_name  | account_locator  | comment | organization_name |
|------------------+---------------------------------+---------------+------------------+---------+-------------------|
| AWS_US_WEST_2    | 2018-11-19 16:11:12.720 -0700   | ACCOUNT1      | MYACCOUNT1       |         | MYORG             |
| AWS_US_EAST_1    | 2019-06-02 14:12:23.192 -0700   | ACCOUNT2      | MYACCOUNT2       |         | MYORG             |
+------------------+---------------------------------+---------------+------------------+---------+-------------------+

2단계: 기본 데이터베이스에 대한 장애 조치 활성화하기

참고: 이 기본 데이터베이스에 대한 장애 조치를 이미 여러 계정에 걸친 데이터베이스 복제에서 활성화했다면 이 단계를 건너뛰어요.

ALTER DATABASE … ENABLE FAILOVER TO ACCOUNTS 문으로 기본 데이터베이스에 대한 장애 조치를 조직 안의 하나 이상의 계정으로 활성화해요. 이 계정들 중 어느 하나의 기본 데이터베이스 복제본(즉 보조 데이터베이스)은 기본 데이터베이스 역할을 하도록 승격될 수 있어요. 기본 데이터베이스에 대한 장애 조치 활성화는 지정된 계정에 기본 데이터베이스의 복제본이 만들어진 전후 어느 때든 수행할 수 있어요.

예시:

기본 데이터베이스 mydb1에 대한 장애 조치를 계정 myaccount2와 myaccount3으로 활성화해요. 이 예시에서 기본 데이터베이스가 myaccount1 계정에 저장되어 있고 세 계정 모두 조직 myorg에 속한다고 가정해요. ALTER DATABASE 명령은 myaccount1에서 실행해야 해요.

ALTER DATABASE mydb1 ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;

3단계: 복제본 데이터베이스를 기본 데이터베이스로 승격하기

ALTER DATABASE … PRIMARY 문을 실행해 기본 데이터베이스의 어떤 복제본이든 기본 데이터베이스 역할을 하도록 승격할 수 있어요. 승격되면 데이터베이스는 쓰기 가능해져요. 동시에 이전 기본 데이터베이스는 읽기 전용 복제본 데이터베이스가 돼요. 승격하는 보조 데이터베이스가 들어 있는 계정에서 ALTER DATABASE 문을 실행해요.

참고: 보조 데이터베이스를 승격하려면 연산을 수행하는 역할이 데이터베이스에 대한 OWNERSHIP 권한이 있어야 해요.

예시:

보조 데이터베이스를 기본 데이터베이스 역할을 하도록 승격해요.

ALTER DATABASE mydb1 PRIMARY;

이전 보조 데이터베이스가 성공적으로 승격됐는지 확인해요.

SHOW REPLICATION DATABASES;

더 알아보기