Managed Backup ile Backup’ları Azure’a Otomatik Bir Şekilde Almak
Managed Backup ile SQL Server veritabanlarının backup’ları full ve log backup olarak schedule edebiliyoruz. Bu işlemi hem veritabanı seviyesinde hem de instance seviyesinde gerçekleştirebiliyoruz.
Backup to URL ile backup’larımızı Azure Storage’a alabildiğimizi “Backup’ı SSMS Üzerinden Bir URL’ye Almak(Azure Backup)” isimli makalede anlatmıştım. Managed Backup’ta, Backup To URL’nin alyapısını kullanarak bu işi otomatikleştiriyor.
Bir örnek yaparak konuyu netleştirelim.
Öncelikle “Backup’ı SSMS Üzerinden Bir URL’ye Almak(Azure Backup)” isimli makalede yaptığımız herşeyi aynen yapıyoruz fakat manual olarak backup’ı almıyoruz.
Sonrasında ise Management sekmesinin altında Managed Backup’a sağ tıklayarak Configure diyoruz.
Karşımıza gelen ekranda öncelikle Enable managed backup diyoruz ve SQL Server Agent Servisimizin açık olması gerekiyor.
File retention’dan backup’larımızın ne kadar saklanacağını belirliyoruz. Şu kadar full, şu kadar log backup al gibi kısımları managed backup kendisi hallediyor.
SQL Credential kısmından oluşturmuş olduğumuz credential’ı seçiyoruz.
Storage URL kısmındanda aşağıdaki gibi önceki makalede kopyaladığımız URL’mizi yazıyoruz. Sadece container ismini de kopyaladıysanız burada onu silmeniz lazım. Aşağıdaki ekran görüntüsündeki gibi bir link olmalı.
Encrypt Backup derseniz backup’ı şifreli bir şekilde alacaktır. Şifreli backup almak için bir sertifika oluşturmanız gerekir. Şifreli backup almak için öncelikle “Şifreli(Encrypted) Backup Almak” isimli makaleyi okumanızı tavsiye ederim.
İşlemleri bu şekilde yaparsak Instance bazında tüm veritabanları için managed backup’ı ayarlamış oluyoruz ve ManagedBackup işlemi gerçekleştirdiğimiz instance için yeni bir container oluşturuyor.
Aşağıdaki script’i de çalıştırdığımızda backup’larımız instance seviyesinde alınmaya başlayacak.
Use msdb; Go EXEC smart_admin.sp_set_instance_backup @retention_days=30 ,@credential_name='backup' --encryption_algorithm kısmına 'NO_ENCRYPTION' yazmanız gerekebilir. ,@encryption_algorithm =null ,@encryptor_type= null ,@encryptor_name=null ,@enable_backup=1; GO
Aşağıdaki script yardımıyla instance bazında managed backup’ı disable edebilirsiniz.
Use msdb; Go EXEC smart_admin.sp_set_instance_backup @enable_backup=0; GO
Instance seviyesinde disable ettikten sonra sadece spesifik bir veritabanı için managed backup’ı kullanmak isterseniz aşağıdaki script yardımıyla bu işlemi gerçekleştirebilirsiniz.
Use msdb GO EXEC smart_admin.sp_set_db_backup @database_name='AdventureWorks2014Yeni' ,@enable_backup=1 ,@retention_days =30 ,@credential_name ='backup' ,@encryption_algorithm ='NO_ENCRYPTION' ,@encryptor_type= null ,@encryptor_name=null
Aşağıdaki şekilde managed backup’ı instance seviyesinde pause edebilirsiniz. Aynı script’te 0 yerine 1 koyarsanız resume etmiş olursunuz.
Use msdb; GO EXEC smart_admin.sp_backup_master_switch @new_state=0; Go
Aşağıdaki şekilde managed backup’ı veritabanı seviyesinde disable edebilirsiniz.
Use msdb; Go EXEC smart_admin.sp_set_db_backup @database_name='TestDB' ,@enable_backup=0; GO
Aşağıdaki sorgu yardımıyla veritabanı seviyesinde managed backup aktif mi görebilirsiniz.
Use msdb GO SELECT * FROM smart_admin.fn_backup_db_config('TestDB')
Aşağıdaki sorgu yardımıyla da instance seviyesinde managed backup’ın aktif olup olmadığını görebilirsiniz.
Use msdb GO SELECT * FROM smart_admin.fn_backup_instance_config ();
SQL Server 2016 için aşağıdaki şekilde backup schedule’ını değiştirebiliyoruz.
USE msdb; GO EXEC managed_backup.sp_backup_config_schedule @database_name = 'TestDB' ,@scheduling_option = 'Custom' ,@full_backup_freq_type = 'Weekly' ,@days_of_week = 'Monday' ,@backup_begin_time = '17:30' ,@backup_duration = '02:00' ,@log_backup_freq = '00:05' GO
Managed Backup ile aldığınız backup’larınızdan geri dönmek isterseniz “Azure Üzerindeki Backup’ı Lokal Instance’a Restore Etmek” isimli makale size yardımcı olabilir.