Canlı bir SQL Server yedeklemesi sırasında ne olur?


18

Bazı arkadaşlarım hala çalışırken bir SQL Server veritabanını yedekleyebileceğimi söylediğimde şaşırdılar ve bunun nasıl mümkün olduğunu merak ettiler. SQL Server'ın hala çevrimiçi durumdayken bir veritabanını yedekleyebileceğini biliyorum, ancak neden mümkün olduğunu açıklayamıyorum. Benim sorum bu veritabanı üzerinde ne etkisi var?

Yedekleme çalışırken veriler değiştirilirse (bir ekleme, güncelleme veya silme), yedekleme bu değişiklikleri içerecek mi yoksa daha sonra veritabanına eklenecek mi?

Günlük dosyasının burada önemli bir rol oynadığını varsayıyorum ama nasıl olduğundan emin değilim.

edit: Not olarak, benim durumum SQL Server Agent kullanarak veritabanlarını ve bu işlem sırasında veritabanı değişikliklerin etkilerini yedekleme içerir.

Yanıtlar:


24

Tam yedekleme hem verileri hem de günlüğü içerir. Veriler için yedekleme içine veritabanı basitçe kopya her sayfa, gibidir o sayfasını okur an. Daha sonra yedekleme ortamına tüm 'ilgili' günlüğü ekler. Bu, en azından yedekleme işleminin başlangıcındaki LSN ile yedekleme işleminin sonundaki LSN arasındaki tüm günlüğü içerir. Gerçekte, yedekleme işleminin başlangıcında tüm etkin işlemleri ve çoğaltma için gereken günlüğü içermesi gerektiğinden, genellikle daha fazla günlük vardır. Bkz . Tam veritabanı yedeklemeleri hakkında birkaç efsane kaldırma .

Veritabanı geri yüklendiğinde, tüm veri sayfaları veritabanı dosyalarına kopyalanır, daha sonra tüm günlük sayfaları günlük dosyalarına kopyalanır. Veritabanı şu anda tutarsız, çünkü birbiriyle senkronize edilemeyen veri sayfası görüntüleri içeriyor. Ama şimdi normal bir iyileşme var. Günlük yedekleme sırasında tüm günlüğü içerdiğinden, kurtarma işleminin sonunda veritabanı tutarlıdır.


1
Harika gönderi ve bağlantı iyi bir örnek sağladı. Teşekkürler.
Sean Howat

Çok özlü. Aferin!
allen1

2

Yedekleme sırasında, veritabanı için anlık görüntü oluşturulur ve veriler bu anlık görüntüden yedekleme için okunur. Gerçek canlı DB işlemleri yedekleme işlemini etkilemez.


1

Sadece kopyalayamazsınız, çünkü soruda belirttiğiniz gibi veritabanının ortasında kopyada değişiklikler olabilir.

Veritabanı işlevselliğinin farkında olan ve daha sonra işletim sistemi işlevleri aracılığıyla bir "anlık görüntü" alan veya veritabanını güvenli bir duruma (mysql kullanılıyorsa mysqldump gibi) dökmek için bir yardımcı program kullanabilen aracılarla yapılmalıdır.

Aksi takdirde, bozulabilecek bir yedek alırsınız ve geri yükleyene kadar bilmezsiniz. Sanırım Joel ve Jeff son zamanlarda StackOverflow podcast'inde biraz konuştular.

Ve günlük dosyasının önemli olduğu konusunda haklısınız. Günlük / günlük dosyası gerçek verilerle senkronize değilse, dosyaları geri yüklemek bozulmaya neden olur.

Veritabanını tanıyan bir aracı veya anlık görüntü uygulaması veya veri dökümü sırasında güncellemelere müdahale etmeden veriyi veriyi bırakarak düzgün bir şekilde nasıl bağlayacağının farkında olan veritabanının güvenli bir durumu kullanılarak alınan bir yedeklemeye kaynar. ortaya çıkan dosyayı açın.


Bu daha genel bir cevap ama ben ilk başta SQL Server Agent ile çalıştığını dahil etmeyi unuttum. Yönteme rağmen bu süreçte neler olabileceğine dair bazı iyi detaylar sağladı, bu yüzden yine de yardımcı oldu! Teşekkürler.
Sean Howat

0

Bunu yapmanın pek çok yolu vardır (genel olarak konuşursak, MSSQL normalde bunu nasıl yapar? Windows'ta VSS gibi özellikler.


Ayrıca sıfırdan itibaren MVCC tabanlı veritabanları (PostGres gibi), yedekleme çalışması sırasında başlatılan işlemlerle veri dosyalarında güncellemelere izin verirken, yedeklemenin kopyaladığı bir anlık görüntüyü korumak için bu davranış kümesinden yararlanabilir. Dediğiniz gibi, kullanılan yöntem veri depolama motorunun temel tasarımına ve işlem işleme özelliklerine bağlıdır.
David Spillett

-1

Yalnızca kopya yedekleme olarak bilinenleri alabilirsiniz. Çevrimiçi iken veritabanını etkilemez


Salt kopya yedekleme nedir? Nasıl Yapılır? Dikkate alınması gereken uyarılar var mı? Böyle bir canavara ait örneklerin bağlantıları var mı? Bir cevap gönderecekseniz, 2-3 yıl içinde birisinin bu soruyu sorup sormadığını bulmak için neyin yararlı olabileceğini hayal edin.
rnxrx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.