Merhaba,
Bu makalemizde SQL Server 2017 üzerinde bir Backup planı oluşturacağız. Senaryomuzda elimizdeki SQL üzerinde küçük bir muhasebe programı bulunuyor. Bu dataların günde bir kez yedeklemesini yapacak ve bunu başka bir noktaya da aktarıyor olacağız.
SQL Server yedeklemesi iş kritik duruma göre çok detaylı planlanabilecek bir operasyondur. Bu planları tüm detayları ile nasıl hazırlayacağınızı Ömer ÇOLAKOĞLU hocamızın makale serisinden okuyabilirsiniz.
Sözü fazla uzatmadan yapılacak adımlarımıza kısaca bakalım.
1. SQL Server e-mail ayarlarının yapılması ve test edilmesi.
2. Operatör tanımlanması ve ayarlarının yapılaması.
3. Maintenance Plan yapılandırması ve Backup kontrolleri.
4. Google Drive üzerine alınan yedeklerin kontrolü.
Şimdi işlem adımlarımıza geçebiliriz.
1-) SQL Server e-Mail Ayarlarının Yapılması
SQL Server ile aramızda iletişim kurmak istiyoruz, yani ona verdiğimiz görevleri zamanında doğru bir şekilde yapmış mı yoksa herhangi bir hata varsa bize bunu bildirmesini istiyoruz. Bunun için SQL Server Agent servisinin çalışıyor ve e-mail ayarlarının doğru bir şekilde yapılandırılmış olması gerekmektedir.
SQL Server Agent Servisi çalışıyor ise sol tarafında yeşil bir ikon belirmektedir.
Aynı zamanda bu servisin durumunu otomatik olarak ayarlıyoruz ki e-mail göndermek istediğinde hazır olarak beklesin.
Şimdi Management sekmesinden Database Mail kabına sağ tık yapıyoruz ve Configure Database Mail diyerek devam ediyoruz.
Bizi bir Configuration yönlendirme Wizard’ı karşılıyor ve Next diyerek devam ediyorum.
Burada 3 seçenek var ilki sıfırdan bir yapılandırma, 2.si daha önce tanımladığımız yapılandırmalar üzerinde değişiklik yapma ve son olarak sistem parametrelerini değiştirme olarak karşımıza çıkıyor. Biz ilk defa bir e-mail konfigürasyonu yapacağımız için Set up Database Mail by performing the following tasks seçerek ilerliyoruz.
Database Mail feature’ları enable konuma alınsın mı diye soruyor Yes diyerek ilerliyorum.
Profil oluşturma ekranı geldi burada mail profilime bir isim veriyorum ve açıklamasına da Gmail yazıyorum. Ardından sağ taraftaki Add.. butonuna tıklıyorum.
İlgili alanları dolduruyorum ve SMTP mail bilgilerimi giriyorum. Buradaki port bilgilisini 587 olarak girmemiz gerekiyor. Benim ayarlarım bir gmail hesabı üzerinden yapılmıştır. Başka bir mail platformu üzerindeki ayarlarınız bu port ile çalışmayabilir onu kurulum öncesinde araştırmanızı öneririm.
Mail profilimiz altına SMTP mail Account’um geldi, buraya birden fazla hesap da tanımlamamız mümkün. Ardından Next diyerek devam ediyorum.
SQL üzerindeki database’lerin erişebileceği bir adet public mail konfigürasyonu seçmemizi istiyor. Burada zaten bizim oluşturduğumuz tek bir profil olduğu için onu seçerek devam ediyorum.
Yaptığımız ayarlarımızın kısa bir özet gösterimini sunuyor. Nextdiyerek ilerliyorum.
Bu ekranda ise Account, Profil ve bu profilin public profil olduğu bilgisini son kez bize hatırlatıyor. Finish diyerek tamamlıyorum.
Konfigurasyonlarımız başarılı bir şekilde tamamlandı ve Success yeşil tikini ve yazıyı gördük.
Şimdi bu ayarlarda kullandığımız Gmailhesabına gidelim ve ayarlardan Daha az güvenli uygulama erişimlerine izin verelim.
Açık konuma alıyorum ve buradaki işlemimi bitiriyorum.
Şimdi bir test maili gönderelim ve ayarlarımız düzgünce çalışıyor mu kontrol edelim.
To yazan kısma göndereceğiniz mail adres bilgilini giriyorsunuz ve Send Test E-Mail diyerek test mailini gönderiyoruz. Ben buraya da yine aynı mail adresini yazıyorum ve o şekilde test ediyorum.
Test Maili’mizin gittiğini bize bu mailin ulaşıp ulaşmadığını soruyor. OK diyerek devam ediyorum.
Mail adresimi kontrol ettiğimde ise mail tarafıma ulaşmış görüyor. Şimdi artık SQL Server makinamız bize mail gönderecek şekilde yapılandırıldı. Artık diğer işlemlerimize geçebiliriz.
2-) Operatör Tanımlanması
Şimdi sıra geldi bir adet operatör tanımlamaya;
Bu operatörü SQL Server tarafında sizin belirlediğiniz işlemlerin yapılıp yapılmadığını öğrenecek bir kişi (muhatap) olarak düşünebilirsiniz. Bizim senaryomuzda ise şu işi üstlenecek SQL Server günlük olarak ayarladığımız saatte bir Backup alma işlemi yapacak ve bunun sonucunu olumlu ya da olumsuz ise bu operatöre bildirecek. Bu operatör’ün bir mail adresi olacağı için bizde o mail adresine gelen mail’ler ile bu işlemlerin günlük olarak bildirimini almış olacağız. Çok teknik bir anlatım yapmak yerine bu şekilde anlatmaya çalıştım.
SQL Server Agent kabının altında Operatorssekmesinde sağ tık yapıyoruz ve New Operator diyerek operatör oluşturmaya başlıyoruz.
Şimdi burada solda 2 adet sekmeden oluşan bazı ayarları gireceğiz. İlk olarak General sekmesinde;
· Name: Operatörümüze bir isim veriyorum ve sağdan Enabled konuma alıyorum.
· E-mail name ve Pager: Buraya operatörümün mail adresini yazıyorum.
· Pager on duty Schedule: Operatörümün hangi günlerde ve hangi saatler arasında çalışacağını belirtiyorum.
Soldaki ikinci sekmeden ise Alets seçerek OK diyorum. Operatör tanımlama işlemim bu kadar.
3-) Maintenance Backup Yapılandırması
Şimdi Maintenance Plan oluşturma işlemlerine geçebiliriz.
Management Plans sağ tık yapıyorum ve New Maintenance Plan diyerek devam ediyorum.
Planıma bir isim veriyorum.
Karşıma açılan ekranda sol taraftaki ToolBox’ı kullarak bir tane Back Up Database Task’ı sürükleyerek ekranın orta kısmına alıyorum. Üzerine çift tıklayarak ayarlarına erişiyorum.
Karşıma üst kısımda 3 sekmeden oluşan bir ayarlar serisi geliyor.
İlk olarak General sekmesinden Backup Type: Full olarak seçiyorum ve alt kısımdan ise yedeklemesini yapacağım Database’lerimi seçiyorum.
İkinci sekme olan Destination kısmından ise;
Bu yedeklemenin nereye yapılacağını seçiyorum. 2 tane database yedekleyeceğim için bunların SQL_BACKUPS klasörü altında alt klasörlere ayrı ayrı yedeklenmesi için “Create a sub-directory for each database” tikini seçiyorum.
Üçüncü sekme olan Options kısmından ise;
Yedeklerimin Compress backup ile sıkıştırılarak yapılmasını belirtiyorum ki disk üzerinde daha az yer tutsun. Devamında ise Copy-ony backup ve Perform checksum seçeneklerini seçiyorum.
Copy-ony Bacup: Yedekleme zincirinin bozulmadan yapılmasını sağlıyor.
Perform Checksum: Alınan yedeklemelerin diske yazıldığının doğruluğunu kontrol ediyor.
Ayarlarımız bu kadar OK diyerek Back Up Database Task’ımızı tamamlıyoruz.
Şimdi yine Toolbox üzerinden bir adet Notify Operator Task alarak orta kısma sürüklüyorum ve onun da üzerine çift tıklayarak ayarlarına erişiyorum.
Buradan daha önce tanımladığım Operator isimli operatörümü seçiyorum. Birden fazla operatör mevcut ise farklı seçimler yapmak mümkün benim şuanda bir adet operatörüm olduğu için onu seçiyorum. Alt kısımda ise bu Operatör’e gidecek olan mail başlığı ve gövde kısmını oluşturuyorum. OK diyerek bu operatöre ait işlemlerimi tamamlıyorum. Bu Task ile Backup işlemi başarılı ise operatörümüze başarılı olduğu mail bildirimini yapmış olacağız.
Şimdi Back Up Database Task ile Notify Operator Task’larını birbirine bağlayalım.
Burada ilk önce Back Up alma işlemini yapacağız ardından işlem başarılı ise mail Operatör’e mail göndereceğiz o yüzden Back Up Database Task’ı alt kısmındaki yeşil ok ile Notify Operator Task’a bağlıyoruz.
Şimdi bir tane daha Notify Operator Task alıyorum ve ayarlarını yapıyorum. Bu ise bizim Back Up alma işlemimizde bir hata var ise Operatöre mail gönderecek olan Task’ımız.
Yine Operatör’ümü seçiyorum ve mail başlığı ve gövde kısmını dolduruyorum. Bu sefer mail body kısmına “HATA – HATA – HATA !!!” yazıyorum ki Backup alma işleminin yapılamadığını belirtiyorum.
Bu Notify Operator Task’ımı da aynı şekilde Back Up Database Task’ıma bağlıyorum. Ardından ise bağladığım yeşil ok’un üzerine bir kez tıklayıp yukarıdan ayar ikonuna basıyorum. Sağda Properties penceresi açılıyor ve oradan Value değerini Failure olarak seçiyorum. Artık Backup işlemi başarısız olursa bildirim bu Operatör Task’ı üzerinden tamamlanacak.
Şimdi son olarak bir tane Maintenance Cleanup Task alıyoruz ve bunu da ekranın orta kısmına sürüklüyoruz. Aynı şekilde çift tıklayarak ayarlarına erişiyorum.
Cleanup Task ile belirttiğimiz yere alınan Backup’ların belirli bir tarihten önceki kısmını siliyor ve gereksiz yere hafızada yer kaplamasını engelliyor olacağız.
Backup’larımın alındığı klasörümü seçiyorum. Ardından “Delete files based on the age of the files at task run time” tikini işaretliyorum. Sağ taraftan Day(s) seçiyorum ve 7 günden önceki alınan backup dosyalarını silmesini belirtiyorum.
Bu silme işlemini Backup başarılı bir şekilde alınmış ve Operatör’e mail gönderilmiş ise devamında yapılmasını istediğim için birinci Notify Operator Task’ımın altına ekliyorum.
Ardından bu şemadaki tüm yapının belirli bir zaman planında yapılması için bir “Job Schedule” tanımlamasını yapmak için kırmızı ok ile gösterdiğim yerdeki minik takvim gibi kısma tıklıyorum.
Karşıma çıkan ekranda Name kısmı otomatik olarak geldi. Bu oluşacak olan Job’un ismi.
Schedule type: Rucurring (sürekli devam etmesini belirtiyorum) ve Enable olarak işaretliyorum.
Frequency: Haftalık olarak Pazar günü hariç her günü seçiyorum.
Daily Frequency: Her gün akşam 21:00 da olmasını belirtiyorum.
Duration: Bu Job’un herhangi bir bitiş tarihi yok biz değiştirmedikçe sürekli olarak devam edecek ve çalışacak.
Job tanımlama işlemimiz de bittiğine göre artık Maintenance planımızı kaydedebiliriz.
Oluşturduğumuz Maintenance Planına ait Job’umuz Jobs sekmesinin altında oluştu.
Şimdi bu Job’u sağ tık yaparak tetikliyorum.
Job başarılı bir şekilde çalıştı.
Şimdi SQL_BACKUPS klasörüme gidiyorum ve bakcup’larımı kontrol ediyorum. Klasörlerim oluşmuş zaten bu şekilde seçmiştik her database için alt klasörleme yap diye belirtmiştik.
Backup’lar da ilgili klasörlerin altında başarılı bir şekilde alınmış.
Mail adresimize girelim ve Operatör’e mail gelmiş mi kontrol edelim.
Burda da son 6 gün boyunca gelen mail bildirimlerini görebilirsiniz.
4-) Google Drive Üzerine Yedeklenen Backup’ların Kontrolü
Şimdi SQL_BACKUP klasörümüzü Google Drive ile senkron yapalım ve buraya alınan yedeklerin bir kopyasını Google’la otomatik olarak taşınmış mı kontrol edelim.
Klasörümüz buraya yedeklenmiş herhangi bir sorun yok. İçerisindeki datalarımızı da kontrol edelim.
Datalarımız da sağlıklı bir şekilde yüklenmiş. Şimdi 7 gün öncesine ait Backup’ların klasörden silindiğini bildiğimize göre Google Drive’ında bunları silmiş olacağını ve çöp kutusunda silinmiş bazı dataların olmasını kontrol edelim.
Evet yapımız sorunsuz çalışıyor ve Backup’larımız gayet başarılı bir şekilde hem lokalde hem de Google Drive üzerinde yedekleniyor.
Bir makalenin daha sonuna geldik. Bu makalemizde SQL Server üzerinde yedekleme planımızı oluşturduk ve bunu hem lokalde hem de bulutta yedekli bir şekilde başarılı bir şekilde tamamladık.
Başka bir makalede görüşmek üzere.