DHCP Server'ın veritabanı; Scope'ları, Reservation'ları, seçenekleri (Options) ve istemcilere verilmiş Lease kayıtlarını tutar. Bu veritabanı bozulduğunda ya da sunucu arızalandığında, yapılandırma elle yeniden kurulana kadar Network'teki istemciler IP adresi alamaz. Düzenli ve sunucu dışında saklanan bir yedek, bu süreyi dakikalara indirir.
Bu yazıda DHCP Server veritabanının otomatik yedekleme aralığını ve yolunu değiştiriyor, elle yedek alıyor ve yedekten geri yüklüyorum. Veritabanının sıkıştırılması ve bakımı DHCP veritabanı bakımı makalemin konusu.
DHCP veritabanı yedekleme ve geri yükleme adımları Windows Server 2012 R2'den Windows Server 2025'e kadar aynı yapıdadır. Sürümler arasında ekranlarda küçük farklar olabilir.
1- DHCP Veritabanı ve Yedekleme Nasıl Çalışır?
DHCP veritabanı varsayılan olarak C:\Windows\System32\dhcp klasöründe tutulur. DHCP servisi bu veritabanını belirli aralıklarla kendiliğinden yedekler. Varsayılan aralık 60 dakika, varsayılan yedek yolu C:\Windows\System32\dhcp\Backup klasörüdür. Bu otomatik yedeğin yanında konsoldan istenen anda ve istenen klasöre elle yedek de alınabilir.
|
Yedek Türü |
Ne Zaman Alınır |
Nereye Alınır |
|
Otomatik yedek |
BackupInterval değerine göre, varsayılan 60 dakikada bir |
BackupDatabasePath yolu, varsayılan C:\Windows\System32\dhcp\Backup |
|
Elle yedek |
Konsolda Backup seçildiği ya da Backup-DhcpServer çalıştırıldığı anda |
O anda seçilen klasör |
DHCP servisinin veritabanı, yedek ve günlük yollarıyla ilgili ayarları şu Registry anahtarında tutulur:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters

|
Değer |
Ne Tutar |
Varsayılan |
BackupInterval |
Otomatik yedeğin dakika cinsinden aralığı |
60 |
BackupDatabasePath |
Otomatik yedeğin alındığı klasör |
C:\Windows\System32\dhcp\Backup |
DhcpLogFilePath |
IPv4 DHCP denetim (audit) günlüklerinin klasörü |
C:\Windows\System32\dhcp |
DhcpV6LogFilePath |
DHCPv6 denetim günlüklerinin klasörü |
C:\Windows\System32\dhcp |
Mevcut ayarları DHCP sunucusunda yönetici olarak açtığım PowerShell oturumunda görebiliyorum.
Get-DhcpServerDatabase
Bir DHCP sunucusunu yeni bir sunucuya taşımak için yedek ve geri yükleme yerine Export-DhcpServer ve Import-DhcpServer cmdlet'leri kullanılır.
2- Ön Kontrol
Başlamadan önce şu maddeleri doğruluyorum:
|
Kontrol |
Beklenen Durum |
|
DHCP Server rolü |
Kurulu ve servis çalışıyor |
|
Yetki |
DHCP sunucusunda yerel yönetici |
|
Yedek klasörü |
Yedeğin alınacağı diskte yeterli boş alan var |
|
Ağ paylaşımı (kullanılacaksa) |
DHCP sunucusunun bilgisayar hesabına paylaşımda ve NTFS'te yazma izni verilmiş |
3- Otomatik Yedek Aralığının Değiştirilmesi
Varsayılan 60 dakikalık aralık çoğu ortam için yeterli. Yapılandırmanın sık değiştiği ortamlarda aralık kısaltılabilir. DHCP konsolunda bu ayar yok. Değeri PowerShell ile değiştiriyorum, değişiklik servis yeniden başlatılmadan geçerli olur. Registry'de BackupInterval değerini elle düzenlemek de mümkün, ancak servis bu değeri başlarken okuduğu için o yolda DHCP servisinin yeniden başlatılması gerekir.
Set-DhcpServerDatabase -BackupInterval 30
Kontrol Noktası
Get-DhcpServerDatabase çıktısında BackupInterval(m) değeri girilen dakikayı göstermeli.
4- Elle Yedek Alınması
Yapılandırmada büyük bir değişiklik yapmadan önce ya da yedeği sunucu dışına almak istediğimde elle yedek alıyorum.
1- DHCP konsolunda sunucunun adı üzerinde sağ tıklayıp Backup... seçeneğini seçiyorum.

2- Açılan pencerede varsayılan olarak C:\Windows\System32\dhcp\Backup klasörü geliyor. Elle yedeği otomatik yedeklerden ayırmak için farklı bir klasör seçiyorum.

3- Bu örnekte C:\DHCP_DB_Backup klasörünü seçiyorum.

4- Yedek alındı. Bu klasörü sunucu arızasında da erişilebilmesi için bir Storage birimine ya da yedekleme sistemine kopyalıyorum.

Aynı yedeği PowerShell ile de alabiliyorum. {Yedek Klasörü} yerine yedeğin alınacağı klasörü yazıyorum.
Backup-DhcpServer -Path "{Yedek Klasörü}"
Kontrol Noktası
Yedek klasöründe DhcpCfg dosyası ve veritabanı dosyalarını içeren new klasörü oluşmuş olmalı.
5- Otomatik Yedek Yolunun Değiştirilmesi
Otomatik yedekler varsayılan olarak sistem diskinde tutulur. Sistem diski arızalandığında veritabanıyla birlikte yedekleri de kaybetmemek için otomatik yedek yolunu değiştiriyorum.
1- DHCP konsolunda sunucunun adı üzerinde sağ tıklayıp Properties seçeneğini seçiyorum.


2- Advanced sekmesindeki Backup path alanında varsayılan C:\Windows\System32\dhcp\Backup yolu görünüyor. Bu lab ortamında yolu, Storage üzerinde paylaşıma açtığım \\192.168.1.222\srv001dhcpBackup klasörüyle değiştiriyorum. Bu ayar yalnızca otomatik yedeğin yerini değiştirir, elle alınan yedekleri etkilemez.

3- Değişikliği hızlıca görebilmek için BackupInterval değerini test amacıyla 1 dakikaya düşürmüştüm. Paylaşım klasörüne baktığımda yedeğin dakikada bir alındığını görüyorum.

1 dakikalık aralık yalnızca test içindir. Test bittikten sonra BackupInterval değerini üretim değerine geri alıyorum.
Otomatik yedek yolu bir ağ paylaşımı olduğunda DHCP servisi paylaşıma sunucunun bilgisayar hesabıyla erişir. Bu yüzden paylaşım izinlerinde ve NTFS izinlerinde DHCP sunucusunun bilgisayar hesabına yazma izni veriyorum. Paylaşıma ulaşılamadığı her an otomatik yedek alınamaz ve bu durum yalnızca olay günlüğünde görünür. Yedek DHCP yapılandırmasının tamamını içerdiği için paylaşımın erişimini de kısıtlıyorum.
Daha dayanıklı bir yaklaşım, otomatik yedeği sunucunun sistem diski dışındaki yerel bir diske almak ve yedek klasörünü düzenli olarak yedekleme sistemine kopyalamaktır. Böylece ağ paylaşımına ulaşılamadığında da otomatik yedek alınmaya devam eder. Yolu PowerShell ile de değiştirebiliyorum, değişiklik servis yeniden başlatılmadan geçerli olur. {Yedek Yolu} yerine yeni klasörün yolunu yazıyorum.
Set-DhcpServerDatabase -BackupPath "{Yedek Yolu}"
Kontrol Noktası
Bir yedekleme aralığı sonunda yeni yedek yolunda güncel tarihli yedek dosyaları oluşmalı.
6- Yedekten Geri Yükleme
Restore, sunucudaki mevcut DHCP yapılandırmasının ve Lease kayıtlarının üzerine yazar. Yedekten sonra oluşturulan Scope'lar, Reservation'lar ve verilen Lease'ler kaybolur. Bu yüzden Restore öncesinde mevcut durumu ayrı bir klasöre yedekliyorum. Restore sonucu beklendiği gibi olmazsa geri dönebileceğim tek yol bu yedek.
Restore sonrası, yedekten sonra verilmiş Lease'lerin kayıtları kaybolur. Bu adresler başka istemcilere verilip IP çakışması oluşabilir.
1- DHCP konsolunda sunucunun adı üzerinde sağ tıklayıp Restore... seçeneğini seçiyor ve geri yüklenecek yedeğin klasörünü gösteriyorum.

2- Konsol, geri yükleme için DHCP servisinin durdurulup yeniden başlatılacağını belirtiyor. Servis çalışırken veritabanı dosyaları kullanımda olduğu için geri yükleme servis durdurularak yapılır. Yes ile onaylıyorum.

3- Servis yeniden başlatılıyor.

4- Geri yükleme tamamlandı.

Geri yüklemeyi PowerShell ile de yapabiliyorum. İlk komut mevcut durumu yedekler, ikinci komut seçilen yedeği geri yükler. Cmdlet, servisin yeniden başlatılması için onay ister.
Backup-DhcpServer -Path "{Restore Öncesi Yedek Klasörü}"
Restore-DhcpServer -Path "{Geri Yüklenecek Yedek Klasörü}"
7- Restore Sonrası Doğrulama
Geri yüklemeden sonra servisin çalıştığını ve Scope'ların geri geldiğini PowerShell ile kontrol ediyorum. {Scope ID} yerine kontrol edeceğim Scope'un ağ adresini yazıyorum.
Get-Service -Name DHCPServer
Get-DhcpServerv4Scope
Get-DhcpServerv4Reservation -ScopeId {Scope ID}
Get-DhcpServerv4Lease -ScopeId {Scope ID}
Servisin durumu Running olmalı, Scope ve Reservation listesi yedeğin alındığı andaki durumla eşleşmeli. Ardından DHCP konsolunda IPv4 üzerinde sağ tıklayıp Reconcile All Scopes ile veritabanındaki Lease kayıtlarının tutarlılığını kontrol ediyorum.
Yedekten sonra verilmiş Lease'lerin çakışma yaratmaması için, IPv4 Properties penceresinin Advanced sekmesindeki Conflict detection attempts değerini geçici olarak 1 ya da 2 yapıyorum. Bu ayarla DHCP sunucusu bir adresi vermeden önce ping ile kullanımda olup olmadığını kontrol eder. Lease'ler yeniden oturduktan sonra değeri eski haline getiriyorum.
Sunucu bir DHCP Failover ilişkisindeyse Restore sonrası iki sunucunun yapılandırması farklılaşır. Failover ilişkisini kontrol edip replikasyonu yeniden yapıyorum.
Yedekleme yapısının tamamlandığını şu ölçütlerle anlıyorum: otomatik yedek belirlenen aralıkta sistem diski dışındaki bir yola alınıyor, elle alınan yedekler sunucu dışında saklanıyor ve bir test ortamında yapılan geri yükleme sonrası Scope, Reservation ve Lease kayıtları beklenen durumda görünüyor. Bu noktadan sonra veritabanının sıkıştırılması ve bakımıyla devam edebilirim.
Faydalı olması dileğiyle...
Makale ile ilgili düşüncelerinizi ve sorularınızı aşağıdaki yorum kısmında paylaşmaktan çekinmeyin. Her katkı, içeriğin daha fazla kişiye ulaşmasını ve daha faydalı bir tartışma ortamı oluşmasını sağlar.