Merhaba arkadaşlar,
Bugünkü trafiğimiz Log Shipping ile Primary Server ile Secondary Server arasında log dosyalarını taşıyarak asıl işlemlerin yapıldığı Primary veritabanında meydana gelebilecek veri kayıplarını engellemeye çalışmak olacak.Veri kayıplarını engellemek demek sizin bir “Disaster Recovery” yani felaketten kurtarma senaryonuzun olduğunu gösterir.
İlk olarak Sql Server ı açıyoruz ve 2 instance ımızla da giriş yapıyoruz.Burdaki senaryomuzda “EROLAKGUL” isimli instance ımız birincil,”MIRRORING” isimli instance ımız ikincil server olacak.İşlemlerimizi “Northwind” veritabanında değişiklikler yaparak gerçekleştireceğiz.
Şimdi ilk olarak Northwind e sağ tıklayıp Task > Ship Transaction Log diyoruz ve gelen ekranda birincil veritabanı için log shipping ayarlarının yapılabilmesi işlemini aktif etmek için kutucuğa onay vermeniz gerekiyor.Eğer hata aldıysanız bu; Recovery Model’inizin “Full” veya “Bulk” da olmadığını gösterir yada sürümünüzün Log Shipping i desteklemediği anlamına gelir.2.hatayı almadıysanız Northwind’e sağ tıklayıp “properties” den “options” a geliyorsunuz ve o ekranda ki “Recovery Model” karşısını “Full” e çekiyorsunuz.
İlk adımlarımızı tekrar atıp aktif etmek için kutucuğu işaretlediğinizde Transaction Log Backup lar için BackUp ayarları açılmış olacak ve şimdi de “BackUp Settings” e tıklıyoruz.
Gelen ekranda 1 ve 2 nolu yere Primary Server için log dosyalarının kopyalanacağı klasöre ait bilgiler girilir.1 nolu yere ağ yolunu ;
ki bu ağ yolunu log back up ları bulundurmak istediğiniz klasöre sağ tıklayıp özelliklerden paylaşıma gelerek “paylaşım” a tıklayıp oradan da kullanıcıyı seçtikten sonra “paylaş” dediğinizde görebilirsiniz.
2 no’lu yere ise o klasörün bulunduğu fiziksel adresi yazıyorsunuz C nin altındaki LogShippingBackUp klasörünün içine kaydettireceğimiz için “C:\LogShippingBackUp” yazıyorum ben..
“Delete files older than” ne kadar süre sonra bu oluşturulacak olan dosyaları silelim diye soruyor bu kısım için 72 saatte bir yani 3 günde 1 sil seçeneği default olarak seçili isterseniz bu kısmı verilerinizin büyüklüğüne göre uzatıp kısaltabilirsiniz.Hemen altında da back up alınmazsa ne kadar süre sonra uyaralım diye bir seçenek var bu kısmın da yine verilerinizin önemine göre süresini uzatıp kısaltabilirsiniz,1 saat default olarak seçili geliyor zaten.
Hemen altında bu sefer Backup jop larının yapılandırıldığı kısım var,burada “Schedule” a tıklayıp alınacak olan backup lar ile ilgili frekansları belirleyebiliriz ;
Buradaki düzenlemelere göre ben backup’ların her gün,5 dk da bir,günün başlangıç ve bitiş tarihleri arasında,bugünden itibaren başlayıp yarınki tarihin başlangıç anına kadar olan bir senaryo seçmiş oldum.”OK” deyip tamamlıyorum.Eski ekranıma da “OK” dedikten sonra ;
Benden secondary database i seçmemi istiyor,”ADD” diyerek Secodary Server instance ımız ve veritabanımızı seçmek için “MIRRORING” instance lı olanı seçip bağlanıyorum;
Bunu da şekilde ki gibi 3 adımda yapıyoruz..Bağlantıyı açtıktan sonra ;
“Initialize Secondary Database” sekmesinde “Yes,generate a full backup of the primary database and restore it into the secondary database” seçeneğini seçerek birincil veritabanının full backup ını al 2.ciye restore et demiş oluyoruz.Karşısındaki “Restore Options” ı tıklıyoruz ve restore işlemlerinin kayıtlarının tutulduğu klasöre ait yolları giriyoruz.”OK” dedikten sonra ;
“Copy Files” sekmesine geçiyoruz..
“Destination folder for copied files” yazan kısıma yine ikincil server ımız için açtığımız klasörün adresini giriyoruz.”Copy Jop” kısmında ise kopyalama işleminin ne sıklıkla yapılacağına dair frekansları giriyoruz.Backup lar 5 dk da bir alınıyordu kopyalama işlemlerini aynı frekanslarla 10 dk da bir yapmasını istediğimi söylüyorum ve “Restore Transaction Log” sekmesine geçiyorum ;
Bu kısımda da restore işlemlerinin 11 dk da bir yani kopyalama işleminden 1 dk sonra yapılmasını söylüyorum.”OK” deyip “Secondary Database Settings” ekranına geri dönüyoruz ve burada da yine “OK” deyip “Database Properties” ekranına geri dönüyoruz.
Secondary server için kullanacağımız instance ile database seçili halde gelmiş oluyor ve son olarak bu adım için “OK” deyip yaptığımız işlemlerin başarılı olup olmadığını görüyoruz ;
İlk çalıştırdığımda başarısız gerçekleştirmişti,klasörlerin paylaşım kısmına “everyone” yazıp ekle dediğinizde ve okuma-yazma izinlerini verdiğinizde işlem yukarıdaki gibi başarıyla sonlanacaktır.Dilerseniz “Report” kısmından mail olarak da gönderebilirsiniz yaptığınız bu işlemleri.
İkincil veritabanımızda “Northwind” database i oluşmuş durumda sağ tarafında açtığım detayda da içindeki tabloların geldiğini görüyoruz.Veritabanını taşımak için ilk önce bir full back alıp restore işlemi gerçekleştirdi bu kısımdan sonra alacağı log backup ları (ki biz 5 dk da bir almasını söyledik) 10 dk da bir diğer klasöre kopyalayıp 11 dk da bir de restore ediyor olacak sistemimiz artık.
Klasörlerdeki durumlar ;
Not 1: Başka bir transaction log backup geri yüklendiği sırada,Sql Server henüz tamamlanmamış işlemleri geri yüklemek için klasörde gördüğünüz TUF (transaction undo file) dosyalarını kullanır.Her restore işleminden sonra TUF dosyası bir sonraki için yeniden oluşur.Ve her zaman TUF dosyasının değişme saati ile mdf ve ldf uzantılı data file larımızın değişme saatleri aynı olur.
Not 2: Bu adımların gerçekleşmesini sağlayan “full ve trans backup alma,kopyalama,restore etme” jop’larını sql server agent altındaki joplarda bulabilirsiniz.
Merabalar,
İki server arasında log shipping yapmaya çalışıyorum. log shipping işlemi başarıyla başlıyor 6-7 saat sonra primary serverdaki backup dosyasına backup almayı kesiyor. ve öylece kalıyor. sorunu bir türlü çözemedim yardımcı olabilir misiniz acaba?
Teşekkür ederim.
BeğenBeğen
Merhaba, aklıma ilk gelen şu oldu, sql server config. manager da servislerin açık olup olmadığını kontrol edebilir misin öncelikle. Agent lar çalışmıyorsa bu durumda schedule ı uygulamayı bırakabilir.
İkincil olarakta bunu client makine de mi yaşıyorsun ? Ben de uygulamayı o zaman için client ta hazırlamıştım,şuan için o instance lar yüklü bile değil. Daha sonra sanal makineler içinde kullandığım server larda denemiştim,daha sağlıklı bir deneyim olur sizin içinde.
BeğenBeğen
Sql server config. manager da servisler çalışıyor (primary). Ama secondary de “sql server browser” çalışmıyordu onu da açtım. diğer servisler çalışıyor.
İki adet sanal makinam var, çalışmalarımı onlar üzerinden yapıyorum. Asıl sorunu primary serverda yaşıyorum. 6-7 saat sonra loglar belirtiğim klasöre düşmüyor. Haliyle restore de yapamıyor.
Not: serverlar 2008 r2 server ve üzerlerinde sql 2014 standart edition kurulu.
Teşekkürler.
BeğenBeğen
klasör e o ana kadar atılmış log ların boyutu nedir ? bir sınırlama getirmiş olabilir misin,klasör ve db ekran görüntülerini mail olarak atar mısın bi bakalım ? olmadı haftasonu teamviewer ile bağlanalım.
BeğenBeğen
Toplamda 262 mb (61 adet log kaydı var). sql yedeği 25 gb civarında (sql backup, BAK file). Sınırlama getirdiğimi sanmıyorum ama nerede böyle birşey yapmış olabilirim acaba o nu da bilmiyorum açıkcası. screenshot’larını mail olarak atacağım.
Teşekkür ederim.
BeğenBeğen