2014-08-28 15 views
8

Oldukça basit bir soru. Firebird, nbackup adında bir yedekleme aracına sahiptir, buna karşın artımlı yedeklemeler yapabilirsiniz. Eğer doğru sırayla yedeğini yoksaFirebird'den nbackup ile yapılan son artımlı yedekleme düzeyini bilmek mümkün mü?

aracı (örneğin, bir seviye 0 yedekleme, daha sonra bir seviye 2 yapın) şikayet ediyor. Ardından, aracın veritabanında son yedeklemenin düzeyini belirten bir bayrak koyduğunu varsayalım.

Belgeleme bu bilgileri almak nasıl

here sağlanır?

cevap

9

olarak bildiğim kadarıyla tek yol tablosu RDB$BACKUP_HISTORY sorgulamaktır (bunun için hiçbir hizmet yöneticisi çağrı var). Geçen yedeği almak için kullanabilirsiniz:

SELECT RDB$BACKUP_ID, RDB$TIMESTAMP, RDB$BACKUP_LEVEL, RDB$GUID, RDB$SCN, RDB$FILE_NAME 
FROM RDB$BACKUP_HISTORY 
ORDER BY RDB$TIMESTAMP DESC 
ROWS 1 

RDB$BACKUP_HISTORY aşağıdaki sütunları vardır tablosu:

  • RDB$BACKUP_LEVEL geri seviyesine kadar yedekleme

    • RDB$BACKUP_ID birincil anahtar
    • RDB$TIMESTAMP damgası
    • RDB$GUID yedeğinin guid'i (bu, ayrıca kontrol dosyalarında kontrol ve c halt bağımlılıkları) yedekleme
    • RDB$SCN en yüksek sayfa işaretleyici() aşağıya bakınız oluşturulan yedekleme

    Nbackup veritabanı sayfalarının fiziksel yedekleme yapar ve

  • RDB$FILE_NAME dosya adı. SCN (sayfa taraması için kısa ...) veritabanı sayfalarını işaretlemek için kullanılan bir sayıdır. Bu sayı her bir yedekleme durumu değişikliğinde artar, nbackup ile her yedekleme için 3 durum değişikliği vardır: nbak_state_normal (yedekleme yok) -> nbak_state_stalled (veritabanı delta dosyasına yazılır) -> nbak_state_merge (delta dosyasını veritabanına yeniden birleştirme) -> nbak_state_normal (yedek yok).

    ilk yedekleme

    SCN 0, ikinci SCN 3, vb (hangi düzeyde önemli değil) alır.

    • SCN 0: Sayfalar herhangi yedekleme
    • SCN 1 öncesi: Sayfalar yazılı/yedek
    • SCN 2 sırasında delta dosyasına güncelleme: yazılı Sayfalar/ana yedekleme içine delta dosyasının birleştirme sırasında güncelleştirilmiş (Ben emin değilim rağmen ana dosya içine geri yazılı delta dosyasından sayfalar SCN 1 olsun veya 2)
    • SCN 3 ise: sayfalar
    • ...
    • SCN 6 birleştirme ilk yedekleme + biten sonra/yazılı güncellenen : İkinci b bittikten sonra yazılan/güncellenen sayfalar ackup + Eğer bir seviye 1 yedeğini zaman

    birleştirme, son 0 seviyesinde yedekleme arar ve bu seviye 0 yedekleme SCN (ve benzeri) daha yüksek bir SCN'de ile tüm sayfaları yedekler. Bu ayrıca Firebird 2.1 sürüm notlarında açıklanmıştır: New On-line Incremental Backup.Bir yedekleme ve bunların nedenini RDB$BACKUP_HISTORY tabloyu temizlemek ve 0'a geri tüm sayfaların SCN sıfırlar gbak ile geri olduğunu

    Not o gbak yerine fiziksel bir yedekleme mantıksal yedek oluşturur olduğunu. Böylece gbak kullanarak bir geri yükleme, tüm veritabanını yeniden yazacaktır (ve sayfa boyutunu bile değiştirebilir). Bu, daha sonraki yedeklemeler için bir başlangıç ​​noktası olarak anlamsız bir şekilde nbackup ile önceki yedekleri oluşturur: Yeni bir seviye 0 ile başlamanız gerekir.

    Bu bilgiler nbackup kılavuzunda eksik olduğundan, Firebird izleyicide bir bilet oluşturdum: http://tracker.firebirdsql.org/browse/DOC-94

  • +1

    Tam olarak aradığım şey ve daha fazlası. Teşekkür ederim! Umarım bu pek çok insana yardım eder. – Epiplon

    İlgili konular