DBAtlas · Veritabanı operasyon atlası

AG'ye veritabanı ekle (automatic seeding) ve seeding ilerlemesini izle

SQL ServerAlways On & HA

Komut

-- Onkosul (primary): FULL recovery ve en az bir FULL yedek
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: replikayi automatic seeding moduna al
ALTER AVAILABILITY GROUP [AG_Musteri]
  MODIFY REPLICA ON N'SQL02' WITH (SEEDING_MODE = AUTOMATIC);

-- 2) Her secondary'de: AG'ye veritabani olusturma izni ver
ALTER AVAILABILITY GROUP [AG_Musteri] GRANT CREATE ANY DATABASE;

-- 3) Primary: veritabanini ekle
ALTER AVAILABILITY GROUP [AG_Musteri] ADD DATABASE [Musteri];

-- 4) Ilerleme (primary veya 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 gecmisi ve hata nedeni:
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;

Ne yapar?

Veritabanını backup/restore yapmadan, endpoint üzerinden VDI stream ile secondary'lere kopyalayarak AG'ye ekler; seeding'in aktarım hızını, tahmini bitişini ve başarısızlık nedenini gösterir.

Ne zaman kullanılır?

Yeni veritabanını AG'ye alırken, yeni bir replika eklerken veya bozulan secondary veritabanını yeniden oluştururken.

Dikkat

Seeding endpoint ağ bağlantısını doldurur ve varsayılan olarak sıkıştırmasızdır; çok büyük DB'de veya zayıf WAN'da manuel backup/restore + JOIN daha öngörülebilirdir. Seeding süresince primary'de log truncate olmaz (log_reuse_wait_desc = AVAILABILITY_REPLICA). 2016'da secondary'de primary ile aynı data/log klasör yolu şarttır; 2017+'da primary dosyaları instance varsayılan yolundaysa secondary kendi varsayılan yolunu kullanır. TDE'li DB'de sertifika önce tüm secondary'lere restore edilmeli. Secondary'de GRANT CREATE ANY DATABASE verilmezse seeding beklemede kalır.

DBAtlas'ta aç →

İlgili