복제와 장애 조치 모니터링
복제와 장애 조치 모니터링
Standard & Business Critical 기능
- 데이터베이스 및 공유 복제는 모든 계정에서 사용할 수 있어요.
- 기타 계정 객체의 복제와 장애 조치/장애 복구는 Business Critical Edition 이상이 필요해요. 업그레이드 문의는 Snowflake Support에 연락해 주세요.
이 주제는 계정 복제 진행 상황, 이력, 비용을 모니터링하는 방법에 대한 정보를 제공해요.
출처: Snowflake 문서
본문
Snowsight로 복제 모니터링
조직의 복제 및 장애 조치 그룹의 복제 진행 상황과 상태를 모니터링하려면 Snowsight의 Replication 페이지를 사용해요.
새로고침 작업의 상태와 세부정보를 볼 수 있어요. 여기에는 다음이 포함돼요.
- 가장 최근 새로고침 작업의 현재 상태
- 복제본 지연 시간(replica lag time, 마지막 새로고침 작업 이후 경과 시간)
- 그룹 간 복제본 지연 시간 분포
- 다음 예정 새로고침 작업의 날짜와 시간
참고(Note):
- Snowsight는 역할에 MONITOR, OWNERSHIP 또는 REPLICATE 권한이 있는 복제·장애 조치 그룹을 나열해요.
- 새로고침 작업 세부정보는 ACCOUNTADMIN 역할 또는 그룹에 대한 OWNERSHIP 권한이 있는 사용자만 볼 수 있어요.
- 새로고침 작업 세부정보를 보려면 소스 또는 대상 계정에 로그인해야 해요. 로그인하지 않았다면 로그인하라는 메시지가 표시돼요.
소스 계정과 대상 계정은 같은 연결 유형(공용 인터넷)을 사용해야 해요. 그렇지 않으면 대상 계정에 로그인하는 것이 실패해요.
- 현재 계정이 개인 연결(private connectivity)을 사용하면 Snowsight로 그룹이나 연결 객체를 만들거나 수정할 수 없어요. 하지만 Snowsight로 SQL로 생성한 그룹은 모니터링할 수 있어요.
각 복제 또는 장애 조치 그룹의 복제 상태를 보려면 다음 단계를 완료해요.
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Admin » Accounts를 선택해요.
- Replication을 선택한 다음 Groups를 선택해요.
Groups 페이지는 역할에 볼 권한이 있는 모든 그룹의 새로고침 작업 세부정보를 표시해요. 타일을 사용해 뷰를 필터링할 수 있어요.
- 예를 들어 Status 타일이 실패한 새로고침 작업이 있음을 나타내면 타일을 선택해 실패가 있는 그룹을 조사할 수 있어요.
- Longest Replication lag 타일의 지연 시간은 마지막 새로고침 작업 이후 경과한 기간을 말해요. 이것은 보조 복제 또는 장애 조치 그룹이 기본 그룹보다 뒤처지는(lag) 시간 길이예요. 가장 긴 지연 시간은 가장 오래된 보조 복제 그룹이 마지막으로 새로고침된 이후의 시간 길이예요.
- 예를 들어
fg_1,fg_2,fg_3이라는 세 개의 장애 조치 그룹이 각각 10분, 2시간, 12시간의 독립적 복제 일정을 가진다면 가장 긴 지연 시간은 최대 12시간이 될 수 있어요. 하지만fg_3이 최근에 대상 계정에서 새로고침되면 지연 시간이 0으로 재설정되고 다른 장애 조치 그룹이 더 긴 지연 시간을 가질 수 있어요.
- 예를 들어
- Group Lag Distribution 타일의 개별 막대를 선택해 결과를 개별 그룹으로 필터링할 수 있어요.
검색 필드나 드롭다운 메뉴를 사용해 그룹을 필터링할 수도 있어요.
- (검색) 상자로 복제 또는 장애 조치 그룹 이름을 검색할 수 있어요.
- Type을 선택해 복제 또는 장애 조치 그룹별로 결과를 필터링해요.
- Replicating을 선택해 기본(select To) 또는 보조(select From) 그룹별로 필터링해요.
- (계정) 메뉴를 선택해 계정 이름별로 결과를 필터링해요.
- Status를 선택해 새로고침 작업 상태별로 결과를 필터링해요.
- Refresh Cancelled
- Refresh Failed
- Refresh In Progress
- Refresh Successful
복제·장애 조치 그룹에 대한 다음 세부정보를 볼 수 있어요.
| 열 | 설명 |
|---|---|
| Name | 복제 또는 장애 조치 그룹의 이름 |
| Is Replicating | 그룹이 대상 계정으로 복제 중인지 소스 계정에서 복제 중인지 나타냄. 이 열에 destinations available이 포함되어 있으면 보조 복제 또는 장애 조치 그룹이 없음. 사용 가능한 대상 수는 기본 그룹이 복제될 수 있는 대상 계정 수를 나타냄 |
| Status | 최신 새로고침 작업의 상태를 표시. 복제 세부정보에 접근하려면 소스 또는 대상 계정에 로그인해야 함. 로그인하지 않았다면 보조 그룹의 새로고침 작업 상태를 보려면 Sign in을 선택. 소스 계정과 대상 계정은 같은 연결 유형(공용 인터넷)을 사용해야 함. 그렇지 않으면 대상 계정에 로그인하는 것이 실패 |
| Replication Lag | 마지막 새로고침 작업 이후 경과한 시간. 보조 복제 그룹이 기본 복제 그룹보다 "뒤처지는" 시간 길이 |
| Next Refresh | 다음 예정 새로고침 작업의 날짜와 시간 |
복제 또는 장애 조치 그룹을 선택해 각 새로고침 작업에 대한 자세한 정보를 볼 수 있어요. 자세한 내용은 Snowsight의 복제 이력 섹션을 참고해요.
새로고침 작업 진행 상황 모니터링
이 섹션은 Snowsight 또는 SQL을 사용해 특정 복제 또는 장애 조치 그룹의 복제 진행 상황을 모니터링하는 방법에 대한 정보를 제공해요.
Snowsight로 새로고침 작업 진행 상황 모니터링
Snowsight를 사용해 진행 중인 새로고침 작업의 상태와 과거 새로고침 작업 세부정보를 볼 수 있어요.
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Admin » Accounts를 선택해요.
- Replication을 선택하고 Groups를 선택해요.
- 복제 또는 장애 조치 그룹의 이름을 선택해요.
팁(Tip): 계정이 개인 연결을 사용해도 Snowsight로 그룹을 모니터링할 수 있어요. 개인 연결에서는 Snowsight로 그룹이나 연결 객체를 만들거나 수정할 수는 없지만, Snowsight로 SQL로 생성한 그룹은 모니터링할 수 있어요.
자세한 뷰에 대한 자세한 내용은 Snowsight의 복제 이력 섹션을 참고해요.
SQL로 새로고침 작업 진행 상황 모니터링
복제 또는 장애 조치 그룹 새로고침의 진행 상황을 모니터링하려면 Snowflake Information Schema의 REPLICATION_GROUP_REFRESH_PROGRESS, REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB, REPLICATION_GROUP_REFRESH_PROGRESS_ALL 테이블 함수를 쿼리해요.
예시
장애 조치 그룹 myfg의 가장 최근 새로고침 작업 진행 상황을 확인해요.
SELECT phase_name, start_time, end_time, progress, details
FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS('myfg'));
복제 이력 보기
Snowsight 또는 SQL을 사용해 복제 이력을 볼 수 있어요.
참고(Note): 역할에 MONITOR, OWNERSHIP 또는 REPLICATE 권한이 있는 복제·장애 조치 그룹의 복제 이력을 볼 수 있어요.
Snowsight로 복제 이력 보기
그룹의 세부정보 페이지에서 특정 복제 또는 장애 조치 그룹에 대한 각 새로고침 작업의 복제 이력과 세부정보를 볼 수 있어요.
- Snowsight에 로그인해요.
- 내비게이션 메뉴에서 Admin » Accounts를 선택해요.
- Replication을 선택하고 Groups를 선택해요.
- 복제 또는 장애 조치 그룹의 이름을 선택해요.
그룹에 대한 다음 정보를 검토할 수 있어요.
- 그룹 유형(복제 그룹 또는 장애 조치 그룹)
- 복제 일정(예: 10분마다)
- 각 새로고침 작업의 기간
- 복제본 지연 시간(마지막 새로고침 작업 이후 경과 시간)
- 다음 예정 새로고침 작업의 날짜와 시간
팁(Tip): 계정이 개인 연결을 사용해도 Snowsight로 그룹을 모니터링할 수 있어요. 개인 연결에서는 Snowsight로 그룹이나 연결 객체를 만들거나 수정할 수는 없지만, Snowsight로 SQL로 생성한 그룹은 모니터링할 수 있어요.
상태와 기간으로 페이지의 데이터를 필터링할 수 있어요.
- Status를 선택해 새로고침 작업 상태별로 결과를 필터링해요.
- Refresh Cancelled
- Refresh Failed
- Refresh In Progress
- Refresh Successful
- Duration을 선택해 다음 기간의 새로고침 작업 세부정보를 표시해요.
- Last hour
- Last 24 hours
- Last 7 days
- All
- All을 선택하면 지난 14일의 새로고침 작업이 표시돼요.
각 새로고침 작업의 세부정보에는 다음 열이 포함돼요.
| 열 | 설명 |
|---|---|
| Query ID | 새로고침 작업의 쿼리 ID |
| Status | 새로고침 작업의 상태를 표시. 유효한 값에는 Successful, Failed, In Progress가 있음 |
| Ended | 새로고침 작업이 종료된 날짜와 시간 |
| Duration | 새로고침 작업 완료에 걸린 시간. 기간은 복제 단계별로 세분화되어 색상으로 구분됨. 각 색상 세그먼트의 너비는 그 단계에서 보낸 시간의 비율을 나타냄. 아래 이미지는 참고용이며, 추가 세부정보를 위해 새로고침 작업을 선택하면 이 그래프를 볼 수 있음 |
| Transferred | 복제된 바이트 수 |
| Objects | 복제된 객체 수 |
행을 선택해 특정 새로고침 작업에 대한 추가 세부정보를 볼 수 있어요. 여기에는 다음이 포함돼요.
- 각 복제 단계의 기간
- 오류 메시지(실패한 새로고침 작업용)
- 유형과 수별로 복제된 데이터베이스 객체 목록
- 복제된 데이터베이스 수와 데이터베이스 이름
SQL로 복제 이력 보기
지정된 날짜 범위 내에서 특정 복제 또는 장애 조치 그룹의 복제 이력을 보려면 다음 중 하나를 쿼리해요.
- Snowflake Information Schema의 REPLICATION_GROUP_REFRESH_HISTORY, REPLICATION_GROUP_REFRESH_HISTORY_ALL 테이블 함수
- Account Usage의 REPLICATION_GROUP_REFRESH_HISTORY 뷰
예시
Information Schema REPLICATION_GROUP_REFRESH_HISTORY 테이블 함수를 쿼리해 지난 7일 동안 장애 조치 그룹 myfg의 계정 복제 이력을 확인해요.
SELECT PHASE_NAME, START_TIME, END_TIME, TOTAL_BYTES, OBJECT_COUNT
FROM TABLE(information_schema.replication_group_refresh_history('myfg'))
WHERE START_TIME >= CURRENT_DATE() - INTERVAL '7 days';
Account Usage REPLICATION_GROUP_REFRESH_HISTORY 뷰를 쿼리해 이번 달의 계정 복제 이력을 확인해요.
SELECT REPLICATION_GROUP_NAME, PHASE_NAME, START_TIME, END_TIME, TOTAL_BYTES, OBJECT_COUNT
FROM snowflake.account_usage.replication_group_refresh_history
WHERE START_TIME >= DATE_TRUNC('month', CURRENT_DATE());
복제 비용 모니터링
복제에 대한 크레딧 사용량을 모니터링하려면 다음 중 하나를 쿼리해요.
- Account Usage의 REPLICATION_GROUP_USAGE_HISTORY 뷰
- Snowflake Information Schema의 REPLICATION_GROUP_USAGE_HISTORY 테이블 함수
예시
REPLICATION_GROUP_USAGE_HISTORY 테이블 함수를 쿼리해 지난 7일 동안 계정 복제에 사용된 크레딧을 확인해요.
SELECT start_time, end_time, replication_group_name, credits_used, bytes_transferred
FROM TABLE(information_schema.replication_group_usage_history(date_range_start=>DATEADD('day', -7, CURRENT_DATE())));
Account Usage REPLICATION_GROUP_USAGE_HISTORY 뷰를 쿼리해 이번 달 계정 복제 이력에서 복제 또는 장애 조치 그룹이 사용한 크레딧을 확인해요.
SELECT start_time,
end_time,
replication_group_name,
credits_used,
bytes_transferred
FROM snowflake.account_usage.replication_group_usage_history
WHERE start_time >= DATE_TRUNC('month', CURRENT_DATE());
데이터베이스의 복제 비용 모니터링
복제 또는 장애 조치 그룹에 포함된 개별 데이터베이스의 복제 비용은 데이터베이스의 복사된 바이트 수를 검색하고 사용된 크레딧과 연결해 계산할 수 있어요.
예시
다음 예시는 지난 30일 동안 한 복제 그룹의 데이터베이스 복제 비용을 계산해요.
- REPLICATION_GROUP_REFRESH_HISTORY Account Usage 뷰를 쿼리하고 데이터베이스별로 복제된 바이트 수의 합을 계산해요.
- 예를 들어 지난 30일 동안 복제 그룹
myrg의 데이터베이스에 대해 복제된 바이트 수의 합을 계산하려면:
- 예를 들어 지난 30일 동안 복제 그룹
SELECT SUM(value:totalBytesToReplicate) as sum_database_bytes
FROM snowflake.account_usage.replication_group_refresh_history rh,
LATERAL FLATTEN(input => rh.total_bytes:databases)
WHERE rh.replication_group_name = 'MYRG' AND
rh.start_time >= CURRENT_DATE() - INTERVAL '30 days';
데이터베이스 바이트 합계 출력을 확인해요.
+--------------------+
| SUM_DATABASE_BYTES |
|--------------------|
| 22016 |
+--------------------+
- REPLICATION_GROUP_USAGE_HISTORY Account Usage 뷰를 쿼리하고 복제에 사용된 크레딧 수의 합과 전송된 바이트 수의 합을 계산해요.
- 예를 들어 지난 30일 동안 복제 그룹
myrg의 복제에 사용된 크레딧 수와 전송된 바이트 수의 합계를 계산하려면:
- 예를 들어 지난 30일 동안 복제 그룹
SELECT SUM(credits_used) AS credits_used, SUM(bytes_transferred) AS bytes_transferred
FROM snowflake.account_usage.replication_group_usage_history
WHERE replication_group_name = 'MYRG' AND
start_time >= CURRENT_DATE() - INTERVAL '30 days';
사용된 크레딧 합계와 전송된 바이트 합계 출력을 확인해요.
+--------------+-------------------+
| CREDITS_USED | BYTES_TRANSFERRED |
|--------------+-------------------|
| 1.357923604 | 22013 |
+--------------+-------------------+
- 이전 두 단계의 데이터베이스 전송 바이트, 사용 크레딧 합계, 복제 전송 바이트 합계 값을 사용해 데이터베이스의 복제 비용을 계산해요.
(<database_bytes_transferred> / <bytes_transferred>) * <credits_used>
예를 들어:
(22016 / 22013) * 1.357923604 = 1.35810866
Information Schema 테이블 함수 쿼리
지난 14일 이내의 새로고침 작업에는 관련 Information Schema 테이블 함수를 쿼리해요.
-
REPLICATION_GROUP_REFRESH_HISTORY, REPLICATION_GROUP_REFRESH_HISTORY_ALL
-
REPLICATION_GROUP_REFRESH_HISTORY 테이블 함수를 쿼리해 복제 그룹
myrg의 데이터베이스 복제에 대해 복사된 바이트 수의 합을 확인해요.
SELECT SUM(value:totalBytesToReplicate)
FROM TABLE(information_schema.replication_group_refresh_history('myrg')) AS rh,
LATERAL FLATTEN(input => total_bytes:databases)
WHERE rh.phase_name = 'COMPLETED' AND
rh.start_time >= CURRENT_DATE() - INTERVAL '14 days';
- REPLICATION_GROUP_USAGE_HISTORY 테이블 함수를 쿼리해 복제 그룹
myrg의 복제에 사용된 크레딧 수의 합과 전송된 바이트 수의 합을 확인해요.
SELECT SUM(credits_used), SUM(bytes_transferred)
FROM TABLE(information_schema.replication_group_usage_history(
date_range_start => DATEADD('day', -14, CURRENT_DATE()),
replication_group_name => 'myrg'));