Veritabanı Programlama Dersi 7. Ünite Özet

Açıköğretim ders notları öğrenciler tarafından ders çalışma esnasında hazırlanmakta olup diğer ders çalışacak öğrenciler için paylaşılmaktadır. Sizlerde hazırladığınız ders notlarını paylaşmak istiyorsanız bizlere iletebilirsiniz.

Açıköğretim derslerinden Veritabanı Programlama Dersi 7. Ünite Özet için hazırlanan  ders çalışma dokümanına (ders özeti / sorularla öğrenelim) aşağıdan erişebilirsiniz. AÖF Ders Notları ile sınavlara çok daha etkili bir şekilde çalışabilirsiniz. Sınavlarınızda başarılar dileriz.

Yedekleme, Felaket Yönetimi, Bakım

MS SQL Server Dosya ve Veritabanı Yapısı

MS SQL Server’de oluşturulan bir kullanıcı veritabanında ön tanımlı olarak aşağıdaki dosya türleri bulunur:

MS SQL Server, çalışmak için dört sistem veritabanına ihtiyaç duyar:

Yedekleme

Veritabanlarını çalıştıran sistemler ya da sistemlerin barındığı konumlar, ne kadar önlem alınır ise alınsın tam güvenilirlik sağlayamazlar. Her zaman tanımlanmamış ya da dikkate alınmamış risklerin gerçekleşme olasılığı vardır ve herhangi bir sistemde öngörülmemiş bir risk nedeni ile verilerin kaybolması istenmez. Riskleri telafi edebilmek için veritabanlarının yedeklenmeleri gerekir.

Donanım / altyapı arızaları nedeni ile oluşabilecek veri bütünlüğünün bozulması hâlleri, veritabanına ya da üzerinde çalıştığı sistemlere müdahale eden kullanıcıların yanlış işlemleri nedeni ile oluşabilecek kayıplar ya da veri bütünlüğünün bozulması hâlleri ve yasal nedenlerle herhangi bir verinin eski hâlinin talep edilmesi gibi sebepler nedeni ile veriler yedeklenmelidir.

MS SQL Server’da yedeklemenin 3 çeşidi vardır:

  1. Tam yedekleme: Verinin tümünün tek seferde elde edildiği uygulamalardır.
  2. Fark yedekleme: Fark yedeklemeleri, artımlı yedekleme olarak da anılır. Son tam yedekten itibaren verinin sadece değişen blokları alınarak gerçekleştirilir.
  3. Hareket günlük yedeklemeleri: Hareket günlük yedeklemeleri, verinin kendisini değil, veride yapılan değişiklik işlemlerinin kayıtlarını elde eder ve saklar.

Veritabanı replikasyonu, ana veritabanında gerçekleşen işlemlerin hareket kayıtları kısa periyotlarla çalışan bir işlem aracılığı ile ayrı bir disk alanına dosya blokları şeklinde bırakılır. Kopya veritabanları, bu hareket dosyalarını okur ve işlemleri taklit ederek kendilerini ana veritabanı ile eşitlerler. SQL Server replikasyonun doğası gereği veritabanları eş zamanlı olarak eşitlenemezler, her zaman kopya veritabanları biraz geride kalır. Ancak eş zamanlı çalışmıyor olması ve basitliği nedeni ile veritabanlarına daha az yük getirir ve esnek özellikler sağlar. Ancak MS SQL replikasyonu, ana veritabanının ulaşılamaz olduğu hâllerde kopya veritabanına otomatik olarak geçilmesini sağlamaz. Veritabanı yöneticilerinin sistemlere elle müdahale etmesi gerekir.

Veritabanı ikizleme, beklenmedik bir hata, felaket ya da istenmeyen durumlarda felaketten dönme ve yüksek erişilebilirliği sağlamak için geliştirmiş olan bir çözümdür. İkizleme kullanıldığında felaket durumunda veri kaybının önüne geçilmiş ve yüksek erişilebilirlik sağlanmış olur. Kopya veritabanı sunucuları, ana veritabanı sunucusuna ve birbirlerine doğrudan bağlanır ve gerçekleştirilen işlemler aracısız transfer edilir. Bu sayede kimi yapılandırmalarda “gerçek” eş zamanlı eşitleme sağlanabilir. Diğer yapılandırmalarda da eş zamanlı eşitleme mümkün olur. Ancak eşzamanlı ikizlemede ana veritabanı ile kopya veritabanları arasındaki iletişimin mükemmel olması, kopya veritabanlarının performansının ana veritabanı ile yakın olması gibi gereksinimler getirir. Aksi hâllerde, ikizleme, ana veritabanı performansının ciddi biçimde düşmesine yol açabilir. İkizleme, şahit veritabanı sunucusu kullanıldığında asıl veritabanının devre dışı kaldığı hâllerde otomatik olarak kopya veritabanının devreye girmesine izin verir.

Yedekleme ve geri yükleme maliyeti; yedekleme işlemlerinin kurgu ve hazırlığı için çalışanların emek maliyeti, alınması gereken donanım ya da hizmetlerin maliyeti, yedekleme / geri yükleme işlemlerinin gerektirdiği sistem kaynakları (işlemci ve disk yükleri), yedekleme / geri yükleme işlemlerinin gerektirdiği süre ve yedekleme bütçesi maliyet olarak ele alınır.

Geri Yükleme

Aşağıdaki sebeplerden dolayı geri yükleme işlemi yapılır:

Felaket Yönetimi

Veritabanı yöneticilerinin, verileri güvenliğini her ortamda iş sürekliliğini sağlaması adına koruması gerekir. Diğer yandan sistem altyapısındaki kayıp ve kesintiler çalışmaların durma noktasına gelmesine sebep olur ve onarılması zor olan kayıplara yol açabilir. Bu nedenle veritabanı yöneticileri bir felaket durumu nedeniyle zarar görerek tüm verilerin kaybolmasına karşı felaket kurtarma planları hazırlamalıdır.

Felaket planlarında kullanılan çözüm yaklaşımları şunlardır:

Master veritabanının bütünlüğünün bozulması durumunda veritabanı sunucusu çalışmayacaktır. Öncelikle veritabanı sunucusunu çalışır hâle getirmek için temel bir Master veritabanı oluşturmak gerekir. Bunun için iki yöntem uygulanabilir. Bu yöntemlerde veritabanının kullanıcı giriş bilgileri geri elde edilemeyeceğinden, yedeklenmiş Master veritabanı geri yüklenene kadar SQL Server’ın ilk kurulumu sırasında seçilen ve yönetici olarak kullanılan ilgili işletim sistemi hesabı kullanılmalıdır. TempDB veritabanının zar görmesi durumunda; SQL Server’ın yeniden başlatılması hâlinde Tempdb veritabanı yeniden oluşturulacaktır. Msdb veritabanının zar görmesi durumunda; Msdb veritabanı yedeklerinden kullanıcı veritabanları gibi geri yüklenir.

Veritabanı Bakımı

Veritabanının sürekliliğini ve performansını maksimum düzeyde tutmak için bakım planına ihtiyaç duyulur. Bakım planında veritabanı yedekleri alınacağı için bir felaket durumunda oluşacak zararlar minimum düzeye indirilmiş olur. İndeks bakımı ve istatistiklerin güncellenmesi ile de veritabanı performansı arttırılmış olur. Bu nedenle veritabanı bakım planındaki faaliyetler periyodik olarak yürütülmelidir.

Veri tabanı bakım faaliyetleri aşağıdaki gibi sıralanabilir:

Veritabanları genellikle tablo, indeks vb. içeriği büyük dosyalar içerisinde bir arada tutar ve bloklar (page, block) hâlinde yönetir. Bir tablo ya da indekse ait blokların dosya üzerinde orijinal sırası ile durması, kayıtların da bloklar içerisinde sıralı bir şekilde bulunması hâlinde işlemlerin büyük bölümü sistemin normal performansı ile gerçekleştirilebilecektir. Ancak veritabanları, veri biriktirdikçe ve uygulamalar veriler üzerinde değişiklik yaptıkça tabloları içeren veri dosyaları içerisindeki bloklar faklı yerlere taşınır ve ideal dizilimlerinden uzaklaşır. Parçalanma olarak adlandırılan bu durum, indeksleri barındıran veri dosyaları için de geçerlidir. Aynı şekilde veride yapılan değişiklikler zamanla kayıtların bloklar içerisindeki sırasını da değiştirir.

MS SQL aşağıdaki bakım faaliyetlerini destekler:

MS SQL Server Dosya ve Veritabanı Yapısı

MS SQL Server’de oluşturulan bir kullanıcı veritabanında ön tanımlı olarak aşağıdaki dosya türleri bulunur:

MS SQL Server, çalışmak için dört sistem veritabanına ihtiyaç duyar:

Yedekleme

Veritabanlarını çalıştıran sistemler ya da sistemlerin barındığı konumlar, ne kadar önlem alınır ise alınsın tam güvenilirlik sağlayamazlar. Her zaman tanımlanmamış ya da dikkate alınmamış risklerin gerçekleşme olasılığı vardır ve herhangi bir sistemde öngörülmemiş bir risk nedeni ile verilerin kaybolması istenmez. Riskleri telafi edebilmek için veritabanlarının yedeklenmeleri gerekir.

Donanım / altyapı arızaları nedeni ile oluşabilecek veri bütünlüğünün bozulması hâlleri, veritabanına ya da üzerinde çalıştığı sistemlere müdahale eden kullanıcıların yanlış işlemleri nedeni ile oluşabilecek kayıplar ya da veri bütünlüğünün bozulması hâlleri ve yasal nedenlerle herhangi bir verinin eski hâlinin talep edilmesi gibi sebepler nedeni ile veriler yedeklenmelidir.

MS SQL Server’da yedeklemenin 3 çeşidi vardır:

  1. Tam yedekleme: Verinin tümünün tek seferde elde edildiği uygulamalardır.
  2. Fark yedekleme: Fark yedeklemeleri, artımlı yedekleme olarak da anılır. Son tam yedekten itibaren verinin sadece değişen blokları alınarak gerçekleştirilir.
  3. Hareket günlük yedeklemeleri: Hareket günlük yedeklemeleri, verinin kendisini değil, veride yapılan değişiklik işlemlerinin kayıtlarını elde eder ve saklar.

Veritabanı replikasyonu, ana veritabanında gerçekleşen işlemlerin hareket kayıtları kısa periyotlarla çalışan bir işlem aracılığı ile ayrı bir disk alanına dosya blokları şeklinde bırakılır. Kopya veritabanları, bu hareket dosyalarını okur ve işlemleri taklit ederek kendilerini ana veritabanı ile eşitlerler. SQL Server replikasyonun doğası gereği veritabanları eş zamanlı olarak eşitlenemezler, her zaman kopya veritabanları biraz geride kalır. Ancak eş zamanlı çalışmıyor olması ve basitliği nedeni ile veritabanlarına daha az yük getirir ve esnek özellikler sağlar. Ancak MS SQL replikasyonu, ana veritabanının ulaşılamaz olduğu hâllerde kopya veritabanına otomatik olarak geçilmesini sağlamaz. Veritabanı yöneticilerinin sistemlere elle müdahale etmesi gerekir.

Veritabanı ikizleme, beklenmedik bir hata, felaket ya da istenmeyen durumlarda felaketten dönme ve yüksek erişilebilirliği sağlamak için geliştirmiş olan bir çözümdür. İkizleme kullanıldığında felaket durumunda veri kaybının önüne geçilmiş ve yüksek erişilebilirlik sağlanmış olur. Kopya veritabanı sunucuları, ana veritabanı sunucusuna ve birbirlerine doğrudan bağlanır ve gerçekleştirilen işlemler aracısız transfer edilir. Bu sayede kimi yapılandırmalarda “gerçek” eş zamanlı eşitleme sağlanabilir. Diğer yapılandırmalarda da eş zamanlı eşitleme mümkün olur. Ancak eşzamanlı ikizlemede ana veritabanı ile kopya veritabanları arasındaki iletişimin mükemmel olması, kopya veritabanlarının performansının ana veritabanı ile yakın olması gibi gereksinimler getirir. Aksi hâllerde, ikizleme, ana veritabanı performansının ciddi biçimde düşmesine yol açabilir. İkizleme, şahit veritabanı sunucusu kullanıldığında asıl veritabanının devre dışı kaldığı hâllerde otomatik olarak kopya veritabanının devreye girmesine izin verir.

Yedekleme ve geri yükleme maliyeti; yedekleme işlemlerinin kurgu ve hazırlığı için çalışanların emek maliyeti, alınması gereken donanım ya da hizmetlerin maliyeti, yedekleme / geri yükleme işlemlerinin gerektirdiği sistem kaynakları (işlemci ve disk yükleri), yedekleme / geri yükleme işlemlerinin gerektirdiği süre ve yedekleme bütçesi maliyet olarak ele alınır.

Geri Yükleme

Aşağıdaki sebeplerden dolayı geri yükleme işlemi yapılır:

Felaket Yönetimi

Veritabanı yöneticilerinin, verileri güvenliğini her ortamda iş sürekliliğini sağlaması adına koruması gerekir. Diğer yandan sistem altyapısındaki kayıp ve kesintiler çalışmaların durma noktasına gelmesine sebep olur ve onarılması zor olan kayıplara yol açabilir. Bu nedenle veritabanı yöneticileri bir felaket durumu nedeniyle zarar görerek tüm verilerin kaybolmasına karşı felaket kurtarma planları hazırlamalıdır.

Felaket planlarında kullanılan çözüm yaklaşımları şunlardır:

Master veritabanının bütünlüğünün bozulması durumunda veritabanı sunucusu çalışmayacaktır. Öncelikle veritabanı sunucusunu çalışır hâle getirmek için temel bir Master veritabanı oluşturmak gerekir. Bunun için iki yöntem uygulanabilir. Bu yöntemlerde veritabanının kullanıcı giriş bilgileri geri elde edilemeyeceğinden, yedeklenmiş Master veritabanı geri yüklenene kadar SQL Server’ın ilk kurulumu sırasında seçilen ve yönetici olarak kullanılan ilgili işletim sistemi hesabı kullanılmalıdır. TempDB veritabanının zar görmesi durumunda; SQL Server’ın yeniden başlatılması hâlinde Tempdb veritabanı yeniden oluşturulacaktır. Msdb veritabanının zar görmesi durumunda; Msdb veritabanı yedeklerinden kullanıcı veritabanları gibi geri yüklenir.

Veritabanı Bakımı

Veritabanının sürekliliğini ve performansını maksimum düzeyde tutmak için bakım planına ihtiyaç duyulur. Bakım planında veritabanı yedekleri alınacağı için bir felaket durumunda oluşacak zararlar minimum düzeye indirilmiş olur. İndeks bakımı ve istatistiklerin güncellenmesi ile de veritabanı performansı arttırılmış olur. Bu nedenle veritabanı bakım planındaki faaliyetler periyodik olarak yürütülmelidir.

Veri tabanı bakım faaliyetleri aşağıdaki gibi sıralanabilir:

Veritabanları genellikle tablo, indeks vb. içeriği büyük dosyalar içerisinde bir arada tutar ve bloklar (page, block) hâlinde yönetir. Bir tablo ya da indekse ait blokların dosya üzerinde orijinal sırası ile durması, kayıtların da bloklar içerisinde sıralı bir şekilde bulunması hâlinde işlemlerin büyük bölümü sistemin normal performansı ile gerçekleştirilebilecektir. Ancak veritabanları, veri biriktirdikçe ve uygulamalar veriler üzerinde değişiklik yaptıkça tabloları içeren veri dosyaları içerisindeki bloklar faklı yerlere taşınır ve ideal dizilimlerinden uzaklaşır. Parçalanma olarak adlandırılan bu durum, indeksleri barındıran veri dosyaları için de geçerlidir. Aynı şekilde veride yapılan değişiklikler zamanla kayıtların bloklar içerisindeki sırasını da değiştirir.

MS SQL aşağıdaki bakım faaliyetlerini destekler: