Makale Özeti

Bu yazımda size basit anlamda verilerin(db) önemini ve SQL 2005’de yedek almayı anlatmaya çalışacağım.Öncelikle bilgi ve bilginin önemi ile başlayalım.Yazımın başında şunu da belirtmeliyim ki burada anlatmış olduğum yedekleme ve kurtarma planları değişken olabilir.Yani bu sizin verilerinizin önemine ve elinizdeki donanıma,sağlamcılık anlayışınıza göre değişebilir.Aşağıda belirtmiş olduklarım tamamen temelden ibarettir ve sadece veritabanları için geçerli olan kurallar topluluğu değildir.

Makale

SQL  Server 2005’de Veritabanı Yedekleme(BACKUP)
Merhabalar;
Bu yazımda size basit anlamda verilerin(db) önemini ve SQL 2005’de yedek almayı anlatmaya çalışacağım.Öncelikle bilgi ve bilginin önemi ile başlayalım.Yazımın başında şunu da belirtmeliyim ki burada anlatmış olduğum yedekleme ve kurtarma planları değişken olabilir.Yani bu sizin verilerinizin önemine ve elinizdeki donanıma,sağlamcılık anlayışınıza göre değişebilir.Aşağıda belirtmiş olduklarım tamamen temelden ibarettir ve sadece veritabanları için geçerli olan kurallar topluluğu değildir.
Bilgi, bir kuruluş için çok şey ifade eder ve genellikle en kritik bilgiler veritabanlarında depolanır. Veritabanları, içinde bir kuruluşun müşteri bilgileri,cari bilgiler,ürün bilgileri ve diğer önemli verilerini bulabileceğimiz yerdir.Bir kuruluşun verilerini korumak ve veritabanlarının sürekli kullanılabilir durumda olmasını sağlamak için, sağlam bir veritabanı yedekleme ve kurtarma(disaster recovery) planınız olması gerekir.
Veritabanlarını yedeklemek, verinin yanlışlıkla kaybına, veritabanı bozulmasına, donanım arızasına ve doğal afetlere karşı korur. Veritabanı yedeklerini almak ve bu yedeklerin sağlam ve güvenli bir ortamda saklanmasını sağlamak gerekir.
Yedekleme ve Kurtarma Planı Yaratmak
Bir yedekleme ve kurtarma planı yaratmak veritabanı için sigorta niteliğindedir. Eğer database’inizin(db) yedeği yoksa sizinde veri kaybı olduğunda güvenecek hiçbir şeyinizin olmadığı anlamına gelir.
İlk Yedekleme ve Kurtarma Planlaması
Bu aşamada yapılması gereken hangi veritabanlarının, hangi sıklıkla yedeklenmesi gerektiğini ve daha bir çok şeyi ortaya koymanız gerekir. Böyle bir plan yaratmak için sorulması gereken soruları sıralamak gerekirse;

  • Hangi tür veritabanı yedekliyorsunuz?

Sistem ve kullanıcı veritabanlarının farklı yedekleme ve kurtarma gereksinimleri vardır.Örneğin, ana veritabanı, tüm Microsoft SQL Server işlemleri için hayati önem taşır.Ana veritabanında sorun çıkar ya da ana veritabanı bozulursa, tüm sunucuyu beraberinde götürür.

  • Veritabanındaki bilgi ne kadar önemli?

Verinin önemine karar vermeniz, veritabanını ne zaman ve nasıl yedeklemeniz gerektiğini belirlemenize yardımcı olacaktır. Örneğin bir geliştirme veritabanını haftada bir kez yedeklerken, bir üretim veritabanını büyük olasılıkla her gün yedeklersiniz.Verinin önemi, yedeğin türüne de karar vermenizi sağlar. Geliştirme veritabanı ile büyük olasılıkla her hafta tam yedekleme yaparsınız.Haftanın her günü üzerine veri girilen bir müşteri siparişleri veritabanı ile, büyük olasılıkla hafta da iki defa tam yedekleme yaparsınız, buna ek olarak her gün farka dayalı yedekler alır ve saatte bir  de işlem günlüklerini yedeklersiniz. Hatta, işi belli bir noktaya dek kurtarmaya olanak tanıyan, adlandırılmış günlük işaretleri ayarlamak bile isteyebilirsiniz.

  • Veritabanında hangi sıklıkla değişiklikler yapılır?

Veritabanında hangi sıklıkla değişiklik yapıldığı da, onu ne kadar zaman da bir yedekleyeceğinize karar verirken etkili olur.Salt okunur bir veritabanı,genelde hiç değişmediği için düzgün aralıklarla yedeklenmesi gerekmez.Diğer yandan, her gece güncelleştirilen bir veritabanı, her gece yapılan değişiklikler gönderildiğinde yedeklenmelidir.Her saat güncelleştirilen bir veritabanının ise sürekli yedeği alınmalıdır.

  • Veriyi ne kadar çabuk kurtarmanız gerekir?Yedekleme yapmak için donanıma   sahip misiniz?

Bir yedekleme planı yaratırken, zamanı da hesaba katmak önemlidir.Ondan dolayıdır ki bu iki soru birbirini tamamlıyorlar.Yedekleme prosedüründe hiç şüphesiz donanımın yeri büyüktür.İşin ilerlemesinde çok büyük önemi olan bir veritabanını, süratle çevrimiçi kullanıma döndürmelisiniz; bunu yapmak için yedekleme planınızı değiştirmeniz gerekebilir. Buda seçeceğiniz donanıma dikkat etmeniz anlamına gelmektedir.(External Disk, NAS cihazları,Kaset yedekleme üniteleri vb…)

  • Yedeklemeyi ne zaman zamanlamak gerekir?

Yedeklemeyi, veritabanı kullanımının en az olduğu zaman zamanlamak yedekleme sürecinizi hızlandırır. Ama gerçek hayatta yedeklemeyi, hep az kullanım dönemlerinde yapamayabilirsiniz.Bu yüzden, önemli veritabanlarının ne zaman yedekleneceğini çok dikkatli planlamanız gerekir.

  • Yedekleri büro dışında saklamanız gerekiyor mu?

Bu soruya da vereceğimiz cevabın temelinde veritabanı önemi yatmaktadır.Neden büro dışında saklamak derseniz eğer şöyle açıklayabiliriz. Örneğin; yedeklerinizi database’in bulunduğu ortamda(sistem odası,server odası) sakladığınızı varsayalım.Bu ortamda cıkabilecek herhangi bir fiziksel darp da veya yangın veya su basması tarzı durumlarda db ile birlikte yedeklerinizin de gideceğini unutmamız gerekir.Bunun daha geniş çaplı bir felaket olduğunu varsayarsak büro içinde herhangi bir yerde saklamak da bu risk içine girmektedir.
               
            Backup Alma İşlemine Başlayalım;
Buraya kadar anlattıklarım biraz daha teoride ki konulardı.Şimdi Microsoft SQL Server 2005’de yedek alma işlemini aşama aşama anlatmaya başlayalım.(Referans olarak Express Edition’ı alıyorum)
Öncelikle girmemiz gereken Start\Programs\Microsoft SQL Server 2005\SQL Server Management Studio Express ‘e tıklıyoruz.Ben burada kendi deneme amaçlı oluşturduğum test db’sini  kullanacağım. Databases altında test seçeneğine sağ tıklayarak Tasks\Back Up’a tıklıyoruz.

Karşımıza gelen ekrandaki bazı alanları açıklayacak olursak;
General Sekmesinde Source Frame’i içinde Database alanından yedeğini alacağımız db’yi seçeriz.

Backup Type;
                Full: Tüm db’nin veya dosya gruplarının ve dosyaların yedeklenmesi anlamına gelir.
                Differantial: Dosyaların en son normal backupdan itibaren değişikliklerin yedeklenmesi şeklindeki yedekleme türüdür. Örneğin her Pazar normal ( full ) Backup alıyor isek, Differential  yedekleri de her gün aldığımızı düşünelim : Her Differential yedek ilk normal yedek ile farkını alacaktır. Bu durumda hafta içinde bir dosya eksilirse, Pazar günkü full Backup dönüldükten sonra, sadece dosya kaybolmadan önceki en son Differential  yedek dönülecektir.
Backup Set;
                Name: Backup’ımıza vereceğimiz addır.Tarih ve saat vermek kolaylık teşkil edecektir.
                Description: Backup için açıklama yazabileceğimiz alandır.
                Backup Set Will Expire:  Almış olduğumuz backup için verilen expire süresini belirtir.
Destination;
                Bu alanda disk veya tape sürücü seçebiliriz.
Bu pencerede bulunan üstteki Script menüsü ile de backupımız için kendi yazmış olduğumuz veya başka yerlerden bulabileceğimiz(script center) backup scriptlerimizi çalıştırabiliriz.

Options Sekmesinde ise;
Overwrite media altında,
Back up to the existing media set(Var olan backup üzerine yazma)
                Append to the existing backup set(Var olan backup üzerine ekler)
                Overwrite all existing backup sets(Var olan backup üzerine yazar)

Verify backup when finished(Backup aldıktan sonra veri doğrulaması)
Perform checksum before writing to media(Backup oluşturulmadan önce backup alınan ortamın kontrol edilmesi)

Kullanacağımız seçenekleri belirledikten sonra “OK” tuşuna basarak backup alımına başlayabiliriz.
Eğer backup’ımızda bir problem yoksa başarılı bir şekilde backup’ı aldığımızı belirten aşağıdaki ekran karşımıza gelecektir.

Restore(Yedekten Geri Dönme) Etmek
                Daha önce almış olduğumuz backup dosyasını restore(geri yüklemek) etmek için yine test db’sini kullanacağız. Yine öncelikle girmemiz gereken Start\Programs\Microsoft SQL Server 2005\SQL Server Management Studio Express ‘e tıklıyoruz. Databases altında test seçeneğine sağ tıklayarak Tasks\Restore\Database’e tıklıyoruz.

Karşımıza gelen ekrandaki bazı alanları açıklayacak olursak;
Destination for restore;
                To Database: Restore etmek istediğiniz database’i seçeceğimiz alandır.
                To a point in time:  Geri yüklemek için kullanacağımız son yedek aralığını seçmek için kullanılır.
Alt kısımda zaten hali hazırda son yedeğimiz seçili olarak gelecektir. Eğer bu yedeği geri yükleyeceksek Options sayfasından da istediğimiz seçenekleri belirlediysek “OK” butonuna basabiliriz.

Options sayfasında kullanabileceğimiz seçenekler kısaca şu şekildedir.
Restore etmek istediğimiz dosyayı yine orijinal yerine mi restore etmek istiyoruz. Bunu buradan ayarlayabilirsiniz. Yine kendi yazdığımız script’leri kullanabiliriz…

Sonuç itibari ile giriş niteliğinde olan bu yazımda size manuel olarak Microsoft SQL Server 2005’de Database Backup alma işlemini anlatmaya çalıştım.

 

Mustafa ALTUN

mfaltun@hotmail.com