Aracılığıyla paylaş


Always On kullanılabilirlik grubu için ikincil veritabanı hazırlama

Şunlar için geçerlidir: SQL Server

Bu konu başlığında, SQL Server Management Studio, Transact-SQL veya PowerShell kullanarak SQL Server'da bir AlwaysOn kullanılabilirlik grubu için veritabanının nasıl hazırlandığı açıklanmaktadır. Veritabanı hazırlamak için iki adım gerekir:

  1. NORECOVERY ile RESTORE komutunu kullanarak birincil veritabanının son yedeğini ve sonraki günlük yedeklemelerini sekonder kopyayı barındıran her sunucu örneğine geri yükleyin.
  2. Geri yüklenen veritabanını kullanılabilirlik grubuna ekleyin.

Tip

Mevcut bir günlük gönderim yapılandırmanız varsa, bir veya daha fazla ikincil veritabanıyla birlikte günlük gönderimi birincil veritabanını bir kullanılabilirlik grubu birincil çoğaltmasına ve bir veya daha fazla ikincil çoğaltmaya dönüştürebilirsiniz. Daha fazla bilgi için bkz. Günlük Gönderiminden Always On Kullanılabilirlik Gruplarına (SQL Server) geçiş önkoşulları.

Önkoşullar ve kısıtlamalar

  • Veritabanını yerleştirmeyi planladığınız sistemin ikincil veritabanları için yeterli alana sahip bir disk sürücüsüne sahip olduğundan emin olun.

  • İkincil veritabanının adı, birincil veritabanının adıyla aynı olmalıdır.

  • Her geri yükleme işlemi için NORECOVERY ile RESTORE kullanın.

  • İkincil veritabanının birincil veritabanından farklı bir dosya yolunda (sürücü harfi dahil) bulunması gerekiyorsa, geri yükleme komutunun, veritabanı dosyalarının her biri için, bunları ikincil veritabanının yoluna belirtmek için WITH MOVE seçeneğini de kullanması gerekir.

  • Veritabanı dosya grubunu dosya grubuna göre geri yüklerseniz, veritabanının tamamını geri yüklemeyi unutmayın.

  • Veritabanını geri yükledikten sonra, son geri yüklenen veri yedeklemeden sonra oluşturulan her günlük yedeğini (NORECOVERY ile) geri yüklemeniz gerekir.

Recommendations

  • SQL Server'ın tek başına örneklerinde, mümkünse belirli bir ikincil veritabanının dosya yolunun (sürücü harfi dahil) ilgili birincil veritabanının yoluyla aynı olmasını öneririz. Bunun nedeni, ikincil veritabanı oluştururken veritabanı dosyalarını taşırsanız, ikincil veritabanında daha sonraki bir eklenti dosyası işlemi başarısız olabilir ve ikincil veritabanının askıya alınmasına neden olabilir.

  • İkincil veritabanlarınızı hazırlamadan önce, ikincil çoğaltmaların başlatılması tamamlanana kadar kullanılabilirlik grubundaki veritabanlarında zamanlanmış günlük yedeklemelerini askıya almanızı kesinlikle öneririz.

Security

Bir veritabanı yedeklendiğinde TRUSTWORTHY veritabanı özelliği KAPALI olarak ayarlanır. Bu nedenle TRUSTWORTHY, yeni geri yüklenen bir veritabanında her zaman KAPALI olur.

Permissions

BACKUP DATABASE ve BACKUP LOG izinleri, varsayılan olarak sysadmin sabit sunucu rolü üyeleri ile db_owner ve db_backupoperator sabit veritabanı rollerinin üyelerine aittir. Daha fazla bilgi için bkz . BACKUP (Transact-SQL).

Geri yüklenen veritabanı sunucu örneğinde mevcut olmadığında RESTORE deyimi CREATE DATABASE izinleri gerektirir. Daha fazla bilgi için bkz . RESTORE (Transact-SQL).

SQL Server Management Studio'yu kullanma

Uyarı

Yedekleme ve geri yükleme dosya yolları birincil çoğaltmayı barındıran sunucu örneği ile ikincil çoğaltmayı barındıran her örnek arasında aynıysa, Yeni Kullanılabilirlik Grubu Sihirbazı, Kullanılabilirlik GrubunaÇoğaltma Ekleme Sihirbazı veya Kullanılabilirlik Grubuna Veritabanı Ekleme Sihirbazı ile ikincil çoğaltma veritabanları oluşturabilmeniz gerekir.

İkincil veritabanı hazırlamak için

  1. Birincil veritabanının yeni bir veritabanı yedeğine sahip değilseniz yeni bir tam veya değişiklik veritabanı yedeklemesi oluşturun. En iyi uygulama olarak, bu yedeklemeyi ve sonraki günlük yedeklemelerini önerilen ağ paylaşımına yerleştirin.

  2. Birincil veritabanının en az bir yeni günlük yedeğini oluşturun.

Uyarı

Birincil çoğaltmadaki veritabanında daha önce bir işlem günlüğü yedeklemesi alınmamışsa, işlem günlüğü yedeklemesi gerekli olmayabilir. Microsoft, kullanılabilirlik grubuna her yeni veritabanı katlandığında işlem günlüğü yedeklemesi almayı önerir.

  1. İkincil çoğaltmayı barındıran sunucu örneğinde, öncelikle birincil veritabanının tam yedeğini (ve isteğe bağlı olarak fark yedeğini) geri yükleyin, ardından sonraki günlük yedeklemelerini sırasıyla geri yükleyin.

    GERİ YÜKLEME VERITABANı Seçenekleri sayfasında Veritabanını çalışma dışı bırak'ı seçin ve kaydedilmemiş işlemleri geri almayın. Ek işlem günlükleri geri yüklenebilir. (NORECOVERY ILE GERI YÜKLEME).

    Birincil veritabanının ve ikincil veritabanının dosya yolları farklıysa, örneğin, birincil veritabanı 'F:' sürücüsündeyse ancak ikincil çoğaltmayı barındıran sunucu örneğinde F: sürücüsü yoksa, WITH yan tümcenize MOVE seçeneğini ekleyin.

  2. İkincil veritabanının yapılandırmasını tamamlamak için ikincil veritabanını kullanılabilirlik grubuna eklemeniz gerekir. Daha fazla bilgi için İkincil Veritabanını Bir Kullanılabilirlik Grubuna (SQL Server) Birleştirme.

Uyarı

Bu yedekleme ve geri yükleme işlemlerini gerçekleştirme hakkında bilgi için bu bölümün devamında yer alan İlgili Yedekleme ve Geri Yükleme Görevleri'ne bakın.

İlgili Yedekleme ve Geri Yükleme Görevleri

Veritabanı yedeklemesi oluşturmak için

Günlük yedeklemesi oluşturmak için

Yedeklemeleri geri yüklemek için

Transact-SQL Kullanımı

İkincil veritabanı hazırlamak için

Uyarı

Bu yordamın bir örneği için, bu konunun önceki bölümlerinde yer alan Örnek (Transact-SQL) bölümüne bakın.

  1. Birincil veritabanının yeni bir tam yedeğine sahip değilseniz, birincil çoğaltmayı barındıran sunucu örneğine bağlanın ve tam veritabanı yedeği oluşturun. En iyi uygulama olarak, bu yedeklemeyi ve sonraki günlük yedeklemelerini önerilen ağ paylaşımına yerleştirin.

  2. İkincil çoğaltmayı barındıran sunucu örneğinde, birincil veritabanının tam veritabanı yedeğini (ve isteğe bağlı olarak değişiklik yedeği) ve ardından sonraki tüm günlük yedeklemelerini geri yükleyin. Her geri yükleme işlemi için NORECOVERY ile kullanın.

    Birincil veritabanının ve ikincil veritabanının dosya yolları farklıysa, örneğin, birincil veritabanı 'F:' sürücüsündeyse ancak ikincil çoğaltmayı barındıran sunucu örneğinde F: sürücüsü yoksa, WITH yan tümcenize MOVE seçeneğini ekleyin.

  3. Birincil veritabanındaki gerekli günlük yedeğinden sonra herhangi bir günlük yedekleme yapılmışsa, bunları ikincil kopyayı barındıran sunucuya da kopyalamalı ve bu günlük yedeklemelerini, en eskisinden başlayarak ve her zaman RESTORE WITH NORECOVERY kullanarak ikincil veritabanına uygulamalısınız.

    Uyarı

    Birincil veritabanı yeni oluşturulduysa ve henüz hiçbir günlük yedeklemesi alınmadıysa veya kurtarma modeli basitten tama değiştirildiyse günlük yedeklemesi mevcut olmaz.

  4. İkincil veritabanının yapılandırmasını tamamlamak için ikincil veritabanını kullanılabilirlik grubuna eklemeniz gerekir. Daha fazla bilgi için İkincil Veritabanını Bir Kullanılabilirlik Grubuna (SQL Server) Birleştirme.

Uyarı

Bu yedekleme ve geri yükleme işlemlerini gerçekleştirme hakkında bilgi için, bu konunun devamında yer alan İlgili Yedekleme ve Geri Yükleme Görevleri'ne bakın.

Transact-SQL Örneği

Aşağıdaki örnek ikincil bir veritabanı hazırlar. Bu örnek, varsayılan olarak basit kurtarma modelini kullanan örnek veritabanını kullanır AdventureWorks2025 .

  1. AdventureWorks2025 veritabanını kullanmak için, onu tam kurtarma modelini kullanacak şekilde değiştirin.

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. Veritabanının kurtarma modelini SIMPLE yerine FULL olarak değiştirdikten sonra, ikincil veritabanını oluşturmak için kullanılabilecek tam bir yedekleme oluşturun. Kurtarma modeli yeni değiştirildiğinden, yeni bir medya kümesi oluşturmak için WITH FORMAT seçeneği belirtilir. Bu, tam kurtarma modeli altındaki yedeklemeleri basit kurtarma modeli altında yapılan önceki yedeklemelerden ayırmak için yararlıdır. Bu örneğin amacı doğrultusunda, yedekleme dosyası (C:\AdventureWorks2025.bak) veritabanıyla aynı sürücüde oluşturulur.

    Uyarı

    Üretim veritabanı için her zaman ayrı bir cihaza yedeklemeniz gerekir.

    Birincil çoğaltmayı ()INSTANCE01 barındıran sunucu örneğinde, birincil veritabanının tam yedeğini aşağıdaki gibi oluşturun:

    BACKUP DATABASE MyDB1   
        TO DISK = 'C:\MyDB1.bak'   
        WITH FORMAT  
    GO  
    
  3. Tam yedeklemeyi ikincil çoğaltmayı barındıran sunucu örneğine kopyalayın.

  4. NORECOVERY ILE RESTORE komutunu kullanarak tam yedeklemeyi ikincil çoğaltmayı barındıran sunucu örneğine geri yükleyin. Geri yükleme komutu, birincil ve ikincil veritabanlarının yollarının aynı olup olmadığına bağlıdır.

    • Yollar aynıysa:

      İkincil çoğaltmayı barındıran bilgisayarda tam yedeklemeyi aşağıdaki gibi geri yükleyin:

      RESTORE DATABASE MyDB1   
          FROM DISK = 'C:\MyDB1.bak'   
          WITH NORECOVERY  
      GO  
      
    • Yollar farklıysa:

      İkincil veritabanının yolu birincil veritabanının yolundan farklıysa (örneğin, sürücü harfleri farklıdır), ikincil veritabanını oluşturmak için geri yükleme işleminin bir MOVE yan tümcesi içermesi gerekir.

      Önemli

      Birincil ve ikincil veritabanlarının yol adları farklıysa, dosya ekleyemezsiniz. Bunun nedeni, dosya ekleme işleminin günlüğünü alırken, ikincil kopyanın sunucusunun yeni dosyayı, birincil veritabanı tarafından kullanılan aynı yola yerleştirmeye çalışmasıdır.

      Örneğin, aşağıdaki komut varsayılan SQL Server örneğinin (C:\Program Files\Microsoft SQL Server\MSSQL12) veri dizininde bulunan bir birincil veritabanının yedeğini geri yükler. MSSQLSERVER\MSSQL\DATA. Geri yükleme veritabanı işlemi, veritabanını başka bir küme düğümünde ikincil çoğaltmayı barındıran (Always On1) adlı uzak bir SQL Server örneğinin veri dizinine taşımalıdır. Burada, veriler ve günlük dosyaları C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA dizinine geri yüklenir. Geri yükleme işlemi, ikincil veritabanını geri yükleme veritabanında bırakmak için WITH NORECOVERY kullanır.

      RESTORE DATABASE MyDB1  
        FROM DISK='C:\MyDB1.bak'  
       WITH NORECOVERY,   
          MOVE 'MyDB1_Data' TO   
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf',   
          MOVE 'MyDB1_Log' TO  
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf';  
      GO  
      
  5. Tam yedeklemeyi geri yükledikten sonra, birincil veritabanında bir günlük yedeği oluşturmanız gerekir. Örneğin, aşağıdaki Transact-SQL deyimi günlüğü E:\MyDB1_log.trn adlı bir yedekleme dosyasına yedekler:

    BACKUP LOG MyDB1   
      TO DISK = 'E:\MyDB1_log.trn'   
    GO  
    
  6. Veritabanını ikincil çoğaltmaya katabilmek için önce gerekli günlük yedeklemesini (ve sonraki günlük yedeklemelerini) uygulamanız gerekir.

    Örneğin, aşağıdaki Transact-SQL deyimi C:\MyDB1.trn'den ilk günlüğü geri yükler:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Veritabanı ikincil çoğaltmaya katılmadan önce başka günlük yedeklemeleri gerçekleşirse, norecovery ile RESTORE kullanarak ikincil çoğaltmayı barındıran sunucu örneğine sırasıyla bu günlük yedeklemelerinin tümünü de geri yüklemeniz gerekir.

    Örneğin, aşağıdaki Transact-SQL deyimi E:\MyDB1_log.trn'den iki günlük daha geri yükler:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=2, NORECOVERY  
    GO  
    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=3, NORECOVERY  
    GO  
    

PowerShell'i kullanma

İkincil veritabanı hazırlamak için

  1. Birincil veritabanının son yedeklemesini oluşturmanız gerekiyorsa, dizini (cd) birincil çoğaltmayı barındıran sunucu örneğiyle değiştirin.

  2. Yedeklemelerin her birini oluşturmak için Backup-SqlDatabase cmdlet'ini kullanın.

  3. Dizini (cd) ikincil çoğaltmayı barındıran sunucu örneğiyle değiştirin.

  4. Her birincil veritabanının veritabanını ve günlük yedeklemelerini geri yüklemek için , Restore-SqlDatabase cmdlet'ini kullanarak NoRecovery geri yükleme parametresini belirtin. Dosya yolları birincil çoğaltmayı barındıran bilgisayarlar ile hedef ikincil çoğaltma arasında farklılık gösteriyorsa RelocateFile geri yükleme parametresini de kullanın.

    Uyarı

    Bir cmdlet'in söz dizimini görüntülemek için SQL Server PowerShell ortamındaki Get-Help cmdlet'ini kullanın. Daha fazla bilgi için bkz. SQL Server PowerShell Yardım Alma.

  5. İkincil veritabanının yapılandırmasını tamamlamak için kullanılabilirlik grubuna eklemeniz gerekir. Daha fazla bilgi için İkincil Veritabanını Bir Kullanılabilirlik Grubuna (SQL Server) Birleştirme.

SQL Server PowerShell sağlayıcısını ayarlamak ve kullanmak için

Örnek yedekleme ve geri yükleme betiği ve komutu

Aşağıdaki PowerShell komutları tam veritabanı yedeklemesini ve işlem günlüğünü bir ağ paylaşımına yedekler ve bu yedekleri bu paylaşımdan geri yükler. Bu örnekte, veritabanının geri yüklendiği dosya yolunun, veritabanının yedeklendiği dosya yolu ile aynı olduğu varsayılır.

# Create database backup  
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"  
# Create log backup  
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"  
# Restore database backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
# Restore log backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
  

Sonraki Adımlar

İkincil veritabanının yapılandırmasını tamamlamak için, yeni geri yüklenen veritabanını kullanılabilirlik grubuna ekleyin. Daha fazla bilgi için bkz. İkincil Veritabanını Kullanılabilirlik Grubuna (SQL Server) Ekleme.

Ayrıca bakınız

Always On Kullanılabilirlik Grupları (SQL Server) Genel Bakış
BACKUP (Transact-SQL)
RESTORE Argümanlar (Transact-SQL)
RESTORE (Transact-SQL)
Başarısız Dosya Ekleme İşleminin Sorunlarını Giderme (Always On Kullanılabilirlik Grupları)