Advertisement

Responsive Advertisement

Exchange Üzerinde Dtabase İşlemleri

 

 


  • iki adet Database oluşturmak
  • Database özelliklerini düzenlemek
  • Database adını değiştirmek
  • Database başka diske taşımak
  • Database stabdart 1tb boyutunu 2Tb yapmak
  • Database içindeki mailleri başka bir database taşımak
  • Database silmek
  • Log dosyalarının diski doldurmaması için otomatik silinmesi
  • DB'nin kendi kendini temizleme (Online Defragmentation) saatlerini ayarlama.

1. Temel Kontrol (Hangi DB Nerede Aktif?)

Tüm veritabanlarını ve o an hangi sunucuda bağlı (mounted) olduklarını listelemek için şu komutu kullanın:

PowerShell

Get-MailboxDatabase -Status | Select-Object Name, Server, Mounted
  • Name: Veritabanının adı (Hala default isimdeyse o uzun rakamlar).

  • Server: Veritabanının o an aktif olarak çalıştığı sunucu.

  • Mounted: True ise o sunucuda hizmet veriyor demektir.

2. Detaylı DAG Kopya Durumu (En Sağlıklı Görünüm)

Sizin için en öğretici komut budur; çünkü sadece aktif olanı değil, pasif kopyaların sağlığını da gösterir:

PowerShell

Get-MailboxDatabaseCopyStatus -Identity *
  • Status = Mounted: Bu satırdaki sunucu, veritabanının o anki aktif sahibidir.

  • Status = Healthy: Bu satırdaki sunucu, veritabanının yedek (pasif) kopyasını barındırır.


DB adını ecp panelden ve edb adını değiştirmek

Her zaman "isimlendirme, dökümantasyonun temelidir" . belirlediğimiz Merkez ve Fabrika lokasyon stratejisine göre, kafa karıştıran o varsayılan (default) isimlerden kurtulalım.

Hem ECP (Exchange Admin Center) panelinde görünen mantıksal ismi hem de diskteki fiziksel .edb dosya adını eşitlemek için izleyeceğimiz en güvenli rota şudur:

1. Önerilen Standart İsimlendirme Tablosu

Mevcut (Default) İsim Yeni Mantıksal İsim (ECP) Yeni Dosya Adı (.edb) Birincil Sunucu (Active)
Mailbox Database 177... DB_MERKEZ_01 DB_MERKEZ_01.edb EXCHANGE (Merkez)
Mailbox Database 065... DB_FABRIKA_01 DB_FABRIKA_01.edb EXCHANGE2 (Fabrika)

2. Uygulama Adımları (Teknik Prosedür)

DAG yapısı aktif olduğu için dosya ismini değiştirmek "canlı cerrahi" gibidir. Şu sırayı takip etmeliyiz:

Adım A: Pasif Kopyaları Kaldırma

DAG açıkken dosya yolu değiştirilemez. Önce EXCHANGE2 üzerindeki kopyayı (veya tersi) kaldırmalısınız.

  • ECP: Databases > DB seç > Sağdaki "Remove" (Pasif kopya için).

Adım B: Mantıksal ve Fiziksel İsim Değişikliği

Exchange Management Shell (EMS) üzerinden şu komutları sırayla çalıştırın (Örnek Merkez DB için):

  1. İsmi Değiştirin:

    Get-MailboxDatabase "Mailbox Database 1773237686" | Set-MailboxDatabase -Name "DB_MERKEZ_01"

  2. Veritabanını Ayırın (Dismount):

    Dismount-Database "DB_MERKEZ_01" -Confirm:$false

  3. EDB Dosya Adını ve Yolunu Eşitleyin:

    Move-DatabasePath "DB_MERKEZ_01" -EdbFilePath "C:\ExchangeDatabases\DB_MERKEZ_01\DB_MERKEZ_01.edb"

    (Bu komut dosyayı fiziksel olarak da adlandırır ve taşır).

  4. Tekrar Bağlayın:

    Mount-Database "DB_MERKEZ_01"

Adım C: DAG Kopyasını Tekrar Oluşturma

İsimler eşitlendikten sonra, yüksek erişilebilirliği tekrar aktif edin:

  • Add-MailboxDatabaseCopy -Identity "DB_MERKEZ_01" -MailboxServer EXCHANGE2 -ActivationPreference 2

aynı işlemi fabrika db içinde yapalım

her zaman "bir işi bir kere yap, tam yap" . Merkez veritabanı için hazırladığımız o temiz yapıyı şimdi Fabrika (EXCHANGE2) tarafındaki veritabanı için de uygulayalım.

Fabrika lokasyonundaki kullanıcıların ana evi olacak olan DB_FABRIKA_01 için izlemeniz gereken tam PowerShell (EMS) rotası şudur:

1. Fabrika Veritabanı İsimlendirme ve Yapılandırma Tablosu

Mevcut (Default) İsim Yeni Mantıksal İsim (ECP) Yeni Dosya Adı (.edb) Birincil Sunucu (Active)
Mailbox Database 0651986762 DB_FABRIKA_01 DB_FABRIKA_01.edb EXCHANGE2 (Fabrika)

2. Uygulama Adımları (Adım Adım Kodlar)

Bu işlemi yaparken EXCHANGE (Merkez) üzerindeki pasif kopyanın kaldırılmış olduğundan emin olun.

Adım A: Mantıksal İsmi Güncelleyin

PowerShell

Get-MailboxDatabase "Mailbox Database 0651986762" | Set-MailboxDatabase -Name "DB_FABRIKA_01"

Adım B: Veritabanını Ayırın (Dismount)

Not: Bu işlem sırasında fabrika sunucusunda mailbox'ı olan kullanıcıların bağlantısı kısa süreliğine kesilecektir.

PowerShell

Dismount-Database "DB_FABRIKA_01" -Confirm:$false

Adım C: Dosya Yolunu ve İsmini Eşitleyin

Bu komut dosyayı fiziksel olarak da adlandırır ve taşıyarak profesyonel bir düzen sağlar.

PowerShell

Move-DatabasePath "DB_FABRIKA_01" -EdbFilePath "C:\ExchangeDatabases\DB_FABRIKA_01\DB_FABRIKA_01.edb"

Adım D: Veritabanını Tekrar Bağlayın (Mount)

PowerShell

Mount-Database "DB_FABRIKA_01"

Adım E: DAG Kopyasını (Merkez Sunucusuna) Ekleyin

PowerShell

Add-MailboxDatabaseCopy -Identity "DB_FABRIKA_01" -MailboxServer EXCHANGE -ActivationPreference 2

Teknik Tavsiyem

her iki veritabanı da artık temiz isimlere sahip olduktan sonra, bir defaya mahsus Get-MailboxDatabaseCopyStatus -Identity * komutuyla her şeyin "Healthy" (Sağlıklı) ve "Mounted" (Bağlı) olduğunu teyit edin.


Teknik Tavsiyem

bu işlem sırasında veritabanı "Dismount" edileceği için o DB içindeki kullanıcılar kısa bir süre mail erişimi sağlayamazlar. Bu yüzden mesai saati dışında yapmanız veya dökümantasyonunuzda bir "bakım penceresi" (maintenance window) tanımlamanız ISO 27001 süreçleri için çok daha şık duracaktır.


Database ve Log dosyalarını ayrı ayrı disklerde duracak şekilde ayarlamak

her zaman "hata mesajları, sistemin güvenliğini koruyan bariyerlerdir"

1. Hata Teşhisleri

  • Hata 1 (Root Directory): "Exchange can't store database (.edb) files in the root directory." Exchange, güvenlik ve dosya sistemi yönetimi gereği .edb dosyasının direkt K:\ kök dizininde durmasına izin vermez; mutlaka bir alt klasör (Örn: K:\DB_MERKEZ_01\) içinde olmalıdır.

  • Hata 2 (Replicated Databases): "Move-DatabasePath is not allowed for replicated databases." DAG yapısı aktifken ve veritabanının pasif kopyaları varken fiziksel yol değiştirilemez; çünkü diğer sunucu (EXCHANGE2) hala eski yolu aramaya devam edecektir.


2. Çözüm: Adım Adım Güvenli Taşıma Prosedürü

Bu hataları gidermek ve dosyalarınızı K: ile L: sürücülerine taşımak için şu sırayı takip etmelisiniz:

  1. Pasif Kopyayı Kaldırın:

    Önce EXCHANGE2 üzerindeki kopyayı silmelisiniz. (EMS: Remove-MailboxDatabaseCopy -Identity "DB_MERKEZ_01\EXCHANGE2").

  2. Klasörlü Yol ile Taşıma Komutunu Ateşleyin:

    Fiziksel klasörleri de içerecek şekilde komutu şu haliyle çalıştırın (Exchange klasörleri otomatik oluşturacaktır):

    PowerShell

    Move-DatabasePath -Identity "DB_MERKEZ_01" -EdbFilePath "K:\DB_MERKEZ_01\DB_MERKEZ_01.edb" -LogFolderPath "L:\Merkez1"
  3. Kopyayı Tekrar Ekleyin:

    Taşıma bittikten sonra yüksek erişilebilirliği geri getirin:

    PowerShell

    Add-MailboxDatabaseCopy -Identity "DB_MERKEZ_01" -MailboxServer EXCHANGE2 -ActivationPreference 2

Teknik Tavsiyem (Mimarın Gözüyle)

Taşıma bittikten sonra Get-MailboxDatabase -Status | FL *Path* komutuyla her şeyin tam istediğiniz gibi K: ve L: üzerinde olduğunu teyit edin. Bu işlem bittiğinde, C: sürücünüzdeki o yoğun I/O yükünün kalktığını ve sistemin daha stabil tepki verdiğini Proxmox üzerinden göreceksiniz.


Database Ayarları

Database stabdart 1tb boyutunu 2Tb yapmak

her zaman "sistemin sınırlarını önceden belirle". Exchange Server 2019 Standard Edition sürümünde veritabanı boyutu varsayılan olarak 1024 GB (1 TB) ile sınırlandırılmıştır. Bu sınıra yaklaştığınızda veritabanı kendiliğinden "Dismount" olur ve hizmet kesintisi yaşanır.

Bu sınırı 2 TB (2048 GB) seviyesine çıkarmak için Kayıt Defteri (Registry) üzerinde şu değişikliği yapmalısınız:

1. Kayıt Defteri (Registry) Düzenlemesi

Her iki Exchange sunucunuzda (EXCHANGE ve EXCHANGE2) şu adımları izleyin:

  1. Regedit'i yönetici olarak açın.

  2. Şu yola gidin:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS&lt;Server Name&gt;\Private-<database GUID>

  • Not: kısmında ismini değiştirdiğimiz veritabanının kimliğini görmelisiniz.
  1. Burada Database Size Limit in GB adında yeni bir DWORD (32-bit) değeri oluşturun (varsa düzenleyin).
  2. Değer verisini Decimal (Ondalık) tabanında 2048 olarak girin.

2. Değişikliğin Devreye Alınması

Kayıt defteri ayarının aktif olması için Microsoft Exchange Information Store servisini yeniden başlatmanız veya veritabanını ayırıp tekrar bağlamanız (Dismount / Mount) gerekir.

Database içindeki mail kutularını başka bir database taşımak

sistemin sadece donanımsal değil, verisel olarak da dengeli (load balanced) olması gerekli. Veritabanlarını lokasyon bazlı (Merkez/Fabrika) olarak ayırdığımıza göre, şimdi kullanıcıları ilgili veritabanlarına taşıma ve bu süreci izleme vaktidir.

Exchange dünyasında bu işleme "Mailbox Move Request" diyoruz

  1. Veritabanı İçindeki Kullanıcıları Listeleme

Bir veritabanında kimlerin olduğunu görmek için şu komutu kullanabilirsiniz:

PowerShell

Get-Mailbox -Database "DB_MERKEZ_01" | Select-Object Name, Alias, PrimarySmtpAddress
  1. Kullanıcıyı Başka Bir Veritabanına Taşıma

Belirlediğiniz bir kullanıcıyı (veya tüm listeyi) hedef veritabanına taşımak için New-MoveRequest komutunu kullanıyoruz:

Tek bir kullanıcıyı taşımak için:

PowerShell

New-MoveRequest -Identity "ferhat.yildiz" -TargetDatabase "DB_FABRIKA_01" -BatchName "FabrikaTasima"

Veritabanındaki tüm kullanıcıları topluca taşımak için:

PowerShell

Get-Mailbox -Database "DB_MERKEZ_01" | New-MoveRequest -TargetDatabase "DB_FABRIKA_01" -BatchName "TopluTasima"

  1. Taşıma Kuyruğunun Durumunu Görüntüleme

Taşıma işlemi arka planda (asenkron) çalışır. Durumu anlık izlemek için şu komutları kullanmalısınız:

Genel özet:

PowerShell

Get-MoveRequest | Get-MoveRequestStatistics

Yüzdesel ilerleme ve detaylı durum:

PowerShell

Get-MoveRequest -BatchName "FabrikaTasima" | Get-MoveRequestStatistics | Select-Object DisplayName, StatusDetail, PercentComplete, TotalMailboxSize
  • StatusDetail = InProgress: Taşıma devam ediyor.

  • StatusDetail = Completed: Taşıma başarıyla bitti.

  • StatusDetail = Queued: Sıra bekliyor.


Yorum Gönder

0 Yorumlar

İletişim Formu