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이 대기 상태로 남는다.