DBAtlas · 데이터베이스 운영 아틀라스

AG에 데이터베이스 추가 (automatic seeding) 및 seeding 진행 모니터링

SQL ServerAlways On 및 HA

명령어

-- Prerequisite (primary): FULL recovery and at least one FULL backup
SELECT name, recovery_model_desc FROM sys.databases WHERE name = N'Musteri';
BACKUP DATABASE [Musteri] TO DISK = N'D:\Backup\Musteri_pre_ag.bak' WITH COMPRESSION, CHECKSUM, INIT;

-- 1) Primary: switch the replica to automatic seeding
ALTER AVAILABILITY GROUP [AG_Musteri]
  MODIFY REPLICA ON N'SQL02' WITH (SEEDING_MODE = AUTOMATIC);

-- 2) On each secondary: allow the AG to create databases
ALTER AVAILABILITY GROUP [AG_Musteri] GRANT CREATE ANY DATABASE;

-- 3) Primary: add the database
ALTER AVAILABILITY GROUP [AG_Musteri] ADD DATABASE [Musteri];

-- 4) Progress (primary or secondary):
SELECT local_database_name, role_desc, internal_state_desc,
       transferred_size_bytes / 1048576         AS transferred_mb,
       database_size_bytes / 1048576            AS db_mb,
       transfer_rate_bytes_per_second / 1048576 AS mb_s,
       estimate_time_complete_utc, failure_message
FROM   sys.dm_hadr_physical_seeding_stats;

-- 5) Seeding history and failure reason:
SELECT s.start_time, s.completion_time, adc.database_name, ar.replica_server_name,
       s.current_state, s.failure_state_desc, s.error_code, s.number_of_attempts
FROM   sys.dm_hadr_automatic_seeding s
  JOIN sys.availability_databases_cluster adc ON adc.group_database_id = s.ag_db_id
  JOIN sys.availability_replicas ar           ON ar.replica_id = s.ag_remote_replica_id
ORDER BY s.start_time DESC;

하는 일

수동 백업/복원 없이 엔드포인트(VDI)를 통해 데이터베이스를 secondary로 스트리밍하여 AG에 추가한다. seeding 처리량, 예상 완료 시점, 실패 사유를 보여 준다.

사용 시점

AG에 새 데이터베이스를 추가할 때, 새 replica를 추가할 때, 또는 손상된 secondary 데이터베이스를 재구축할 때.

주의

seeding은 엔드포인트 링크를 포화시키며 기본적으로 압축되지 않는다. 매우 큰 데이터베이스나 약한 WAN에서는 수동 백업/복원 + JOIN이 더 예측 가능하다. seeding 중에는 primary 로그가 truncate되지 않는다(log_reuse_wait_desc = AVAILABILITY_REPLICA). 2016에서는 secondary가 primary와 같은 데이터/로그 폴더 경로를 가져야 한다. 2017+에서는 primary 파일이 인스턴스 기본 경로에 있으면 secondary는 자신의 기본 경로를 사용한다. TDE 데이터베이스는 먼저 모든 secondary에 인증서를 복원해야 한다. secondary에 GRANT CREATE ANY DATABASE가 없으면 seeding이 대기 상태로 남는다.

DBAtlas에서 열기 →

관련 항목