Azure SQL'de Hızlandırılmış Veritabanı Kurtarma

Şunlar için geçerlidir:Azure SQL VeritabanıAzure SQL Yönetilen Örneği

Hızlandırılmış Veritabanı Kurtarma (ADR), SQL Server veritabanı altyapısı kurtarma işlemini yeniden tasarlayarak özellikle uzun süre çalışan işlemlerin varlığında veritabanı kullanılabilirliğini büyük ölçüde geliştiren bir SQL Server veritabanı altyapısı özelliğidir.

ADR şu anda SQL Server 2019'dan başlayarak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics'teki veritabanları ve Azure VM'lerinde SQL Server için kullanılabilir. SQL Server'da ADR hakkında bilgi için bkz . Hızlandırılmış veritabanı kurtarmayı yönetme.

Not

ADR, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde varsayılan olarak etkindir. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde ADR'nin devre dışı bırakılması desteklenmez.

Genel Bakış

ADR'nin birincil avantajları şunlardır:

  • Hızlı ve tutarlı veritabanı kurtarma

    ADR ile, uzun süre çalışan işlemler genel kurtarma süresini etkilemez ve sistemdeki etkin işlemlerin sayısından veya boyutlarından bağımsız olarak hızlı ve tutarlı veritabanı kurtarmayı etkinleştirir.

  • Anlık işlem geri alma

    ADR ile işlem geri alma işlemi, işlemin etkin olduğu zamandan veya gerçekleştirilen güncelleştirme sayısından bağımsız olarak anlık olarak gerçekleştirilir.

  • Agresif günlük kesilmesi

    ADR ile işlem günlüğü, etkin uzun süre çalışan işlemlerin varlığında bile agresif bir şekilde kesilir ve bu da kontrolden çıkmasını önler.

Standart veritabanı kurtarma işlemi

Veritabanı kurtarma, ARIES kurtarma modelini izler ve aşağıdaki diyagramda gösterilen ve diyagramın ardından daha ayrıntılı olarak açıklanan üç aşamadan oluşur.

current recovery process

  • Analiz aşaması

    Son başarılı denetim noktasının (veya en eski kirli sayfa LSN'sinin) başından sonuna kadar işlem günlüğünün ileri doğru taranmasını, veritabanının durduğu anda her işlemin durumunu belirlemek için.

  • Yineleme aşaması

    İşlenen tüm işlemleri yineleyerek veritabanını kilitlenme anında olduğu duruma getirmek için işlem günlüğünü en eski kaydedilmemiş işlemden sonuna kadar ileri doğru tarayın.

  • Geri alma aşaması

    Kilitlenme anında etkin olan her işlem için, günlüğü geriye doğru geçirerek bu işlemin gerçekleştirdiği işlemleri geri alır.

Bu tasarıma bağlı olarak, SQL Server veritabanı altyapısının beklenmeyen bir yeniden başlatma işleminden kurtarılması için geçen süre (kabaca) kilitlenme sırasında sistemdeki en uzun etkin işlemin boyutuyla orantılıdır. Kurtarma için tüm eksik işlemlerin geri alınması gerekir. Gereken süre, işlemin gerçekleştirdiği çalışmayla ve etkin olduğu süreyle orantılıdır. Bu nedenle, kurtarma işlemi uzun süre çalışan işlemlerin (büyük bir tabloya yönelik büyük toplu ekleme işlemleri veya dizin oluşturma işlemleri gibi) varlığında uzun sürebilir.

Ayrıca, bu tasarıma dayalı büyük bir işlemin iptali/geri alınması da yukarıda açıklanan Geri Alma kurtarma aşamasını kullandığından uzun sürebilir.

Ayrıca, SQL Server veritabanı altyapısı uzun süre çalışan işlemler olduğunda işlem günlüğünü kesemez çünkü kurtarma ve geri alma işlemleri için bunlara karşılık gelen günlük kayıtları gereklidir. SQL Server veritabanı altyapısının bu tasarımının bir sonucu olarak, bazı müşteriler işlem günlüğünün boyutunun çok büyük olması ve çok büyük miktarda sürücü alanı tüketmesi sorunuyla karşı karşıya kalır.

Hızlandırılmış Veritabanı Kurtarma işlemi

ADR, SQL Server veritabanı altyapısı kurtarma işlemini şu şekilde tamamen yeniden tasarlayarak yukarıdaki sorunları giderir:

  • En eski etkin işlemin başından/başlangıcına kadar günlüğü taramaktan kaçınarak sabit bir zaman/anlık işlem yapın. ADR ile işlem günlüğü yalnızca son başarılı denetim noktasından (veya en eski kirli sayfa Günlük Sırası Numarasından (LSN) işlenir. Sonuç olarak, kurtarma süresi uzun süre çalışan işlemlerden etkilenmez.
  • İşlemin tamamı için günlüğü işlemeye gerek kalmadığından gerekli işlem günlüğü alanını simge durumuna küçültün. Sonuç olarak, denetim noktaları ve yedeklemeler gerçekleştikçe işlem günlüğü agresif bir şekilde kesilebilir.

ADR, tüm fiziksel veritabanı değişikliklerini sürüm oluşturarak ve yalnızca sınırlı olan ve neredeyse anında geri alınabilen mantıksal işlemleri geri alarak yüksek düzeyde hızlı veritabanı kurtarması sağlar. Kilitlenme sırasında etkin olan tüm işlemler durduruldu olarak işaretlenir ve bu nedenle, bu işlemler tarafından oluşturulan tüm sürümler eşzamanlı kullanıcı sorguları tarafından yoksayılabilir.

ADR kurtarma işlemi, geçerli kurtarma işlemiyle aynı üç aşamaya sahiptir. Bu aşamaların ADR ile nasıl çalıştığı aşağıdaki diyagramda gösterilmiştir ve diyagramın ardından daha ayrıntılı olarak açıklanmıştır.

ADR recovery process

  • Analiz aşaması

    SLOG'un yeniden yapılandırılması ve sürüme dönüştürülemeyen işlemler için günlük kayıtlarının kopyalanmasıyla işlem daha önce olduğu gibi kalır.

  • Yineleme aşaması

    İki faza ayrılmış (P)

    • 1. Aşama

      SLOG'dan (son denetim noktasına kadar en eski kaydedilmemiş işlem) yineleyin. Yineleme, SLOG'dan yalnızca birkaç kaydı işlemesi gerektiğinden hızlı bir işlemdir.

    • 2. Aşama

      İşlem Günlüğü'nden yineleme işlemi son denetim noktasından başlar (en eski kaydedilmemiş işlem yerine)

  • Geri alma aşaması

    ADR ile Geri Alma aşaması, sürüme alınamayan işlemleri geri almak için SLOG ve satır düzeyi sürüm tabanlı Geri Alma gerçekleştirmek için Mantıksal Geri Alma ile Kalıcı Sürüm Deposu (PVS) kullanılarak neredeyse anında tamamlanır.

ADR kurtarma bileşenleri

ADR'nin dört temel bileşeni şunlardır:

  • Kalıcı sürüm deposu (PVS)

    Kalıcı sürüm deposu, geleneksel tempdb sürüm deposu yerine veritabanında oluşturulan satır sürümlerini kalıcı hale gelen yeni bir SQL Server veritabanı altyapısı mekanizmasıdır. PVS hem kaynak yalıtımını etkinleştirir hem de okunabilir ikincillerin kullanılabilirliğini geliştirir.

  • Mantıksal geri döndürme

    Mantıksal geri döndürme, satır düzeyi sürüm tabanlı Geri Alma gerçekleştirmekten sorumlu zaman uyumsuz işlemdir. Bu işlem, tüm sürüme alınan işlemler için anlık işlem geri alma ve geri alma sağlar. Mantıksal geri döndürme şu şekilde gerçekleştirilir:

    • Durdurulan tüm işlemleri takip etme ve bunları diğer işlemler için görünmez olarak işaretleme.
    • İşlem günlüğünü fiziksel olarak taramak ve değişiklikleri birer birer geri almak yerine tüm kullanıcı işlemleri için PVS kullanarak geri alma gerçekleştirme.
    • İşlem durdurulduktan hemen sonra tüm kilitler serbest bırakıyoruz. İptal işlemi yalnızca bellekteki değişiklikleri işaretlemeyi içerdiğinden, işlem çok verimlidir ve bu nedenle kilitlerin uzun süre tutulması gerekmez.
  • SLOG

    SLOG, sürümlenmemiş işlemler (meta veri önbelleği geçersiz kılınması, devralmaları kilitleme vb.) için günlük kayıtlarını depolayan ikincil bir bellek içi günlük akışıdır. SLOG şöyledir:

    • Düşük hacimli ve bellek içi
    • Denetim noktası işlemi sırasında seri hale getirilerek diskte kalıcı hale getirildi
    • İşlemler işlendikçe düzenli aralıklarla kesiliyor
    • Yalnızca sürümlenmemiş işlemleri işleyerek yinelemeyi ve geri almayı hızlandırır
    • Yalnızca gerekli günlük kayıtlarını koruyarak agresif işlem günlüğü kesilmesini etkinleştirir
  • Temizleyici

    Temizleyici, düzenli aralıklarla uyanan ve gerekmeyen sayfa sürümlerini temizleyen zaman uyumsuz işlemdir.

Hızlandırılmış Veritabanı Kurtarma (ADR) desenleri

AdR'den en çok yararlanan iş yükü türleri şunlardır:

  • ADR, uzun süre çalışan işlemlere sahip iş yükleri için önerilir.
  • AdR, etkin işlemlerin işlem günlüğünün önemli ölçüde büyümesine neden olduğu durumları gören iş yükleri için önerilir.
  • ADR, uzun süre çalışan kurtarma (beklenmeyen hizmet yeniden başlatma veya el ile işlem geri alma gibi) nedeniyle uzun süre veritabanı kullanılamayan iş yükleri için önerilir.

Hızlandırılmış Veritabanı Kurtarma için en iyi yöntemler

  • Veritabanında uzun süre çalışan işlemlerden kaçının. ADR'nin bir amacı, uzun süren etkin işlemleri yineleme nedeniyle veritabanı kurtarmayı hızlandırmak olsa da, uzun süre çalışan işlemler sürüm temizlemeyi geciktirebilir ve PVS'nin boyutunu artırabilir.

  • Veri tanımı değişiklikleri veya DDL işlemleriyle büyük işlemlerden kaçının. ADR, kurtarmada kullanılan DDL işlemlerini izlemek için bir SLOG (sistem günlük akışı) mekanizması kullanır. SLOG yalnızca işlem etkinken kullanılır. SLOG denetim noktası oluşturulur, bu nedenle SLOG kullanan büyük işlemlerden kaçınmak genel performansa yardımcı olabilir. Bu senaryolar SLOG'un daha fazla alan kaplamasına neden olabilir:

    • Birçok DLL tek bir işlemde yürütülür. Örneğin, bir işlemde hızlı bir şekilde geçici tablolar oluşturup bırakarak.

    • Tabloda değiştirilmiş çok fazla sayıda bölüm/dizin vardır. Örneğin, bu tür bir tablodaki DROP TABLE işlemi, işlem günlüğünün kesilmesini geciktiren ve geri alma/yineleme işlemlerini geciktiren büyük bir SLOG belleği ayırması gerektirir. Geçici çözüm, dizinleri ayrı ayrı ve aşamalı olarak bırakabilir ve ardından tabloyu bırakabilir. SLOG hakkında daha fazla bilgi için bkz . ADR kurtarma bileşenleri.

  • Gereksiz iptal edilen durumları önleyin veya azaltın. Yüksek bir durdurma oranı PVS temizleyici ve daha düşük ADR performansı üzerinde baskı oluşturur. İptaller yüksek oranda kilitlenme, yinelenen anahtar veya diğer kısıtlama ihlallerinden kaynaklanabilir.

    • DMV, sys.dm_tran_aborted_transactions SQL Server örneğinde durdurulan tüm işlemleri gösterir. sütun, nested_abort işlemin tamamlandığını gösterir ancak PVS temizleme işlemini engelleyebilecek iptal edilen bölümler (kaydetme noktaları veya iç içe işlemler) vardır. Daha fazla bilgi için bkz . sys.dm_tran_aborted_transactions (Transact-SQL).

    • PVS temizleme işlemini iş yükleri arasında veya bakım pencereleri sırasında el ile etkinleştirmek için kullanın sys.sp_persistent_version_cleanup. Daha fazla bilgi için bkz . sys.sp_persistent_version_cleanup.

  • Depolama kullanımı, yüksek durdurma işlemi ve diğer faktörlerle ilgili sorunlar gözlemlerseniz bkz . SQL Server'da Hızlandırılmış Veritabanı Kurtarma (ADR) Sorunlarını Giderme.

Sonraki adımlar