Azure CLI kullanarak Azure VM'deki SQL veritabanlarını yönetme
Azure CLI, Komut Satırı'ndan veya betikler aracılığıyla Azure kaynakları oluşturmak ve yönetmek için kullanılır. Bu makalede, Azure CLI kullanarak Azure VM'de yedeklenen bir SQL veritabanının nasıl yönetileceğini açıklar. Bu eylemleri Azure portal kullanarak da gerçekleştirebilirsiniz.
Bu makalede şunları yapmayı öğreneceksiniz:
- Yedekleme ve geri yükleme işlerini izleme
- SQL örneğine eklenen yeni veritabanlarını koruma
- İlkeyi değiştirme
- Korumayı durdurma
- Korumayı sürdürme
SQL veritabanınızı yedeklemek için CLI kullanarak Azure'da bir SQL veritabanını yedekleme seçeneğini kullandıysanız aşağıdaki kaynakları kullanıyorsunuz demektir:
- SQLResourceGroup adlı bir kaynak grubu
- SQLVault adlı bir kasa
- VMAppContainer adlı korumalı kapsayıcı; Hesaplamak; SQLResourceGroup;testSQLVM
- Yedeklenen veritabanı/sqldatabase;mssqlserver;master adlı öğe
- westus2 bölgesindeki kaynaklar
Azure CLI, Azure Backup kullanılarak yedeklenen bir Azure VM üzerinde çalışan sql veritabanını yönetme sürecini kolaylaştırır. Aşağıdaki bölümlerde yönetim işlemlerinin her biri açıklanmaktadır.
Not
Desteklenen yapılandırmalar ve senaryolar hakkında daha fazla bilgi edinmek için bkz. SQL yedeklemesi destek matrisi .
Yedekleme ve geri yükleme işlerini izleme
Tamamlanan veya çalışmakta olan işleri (yedekleme veya geri yükleme) izlemek için az backup job list komutunu kullanın. CLI, çalışmakta olan bir işi askıya almanızı veya bir iş tamamlanana kadar beklemenizi de sağlar.
az backup job list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--output table
Çıkış şu şekilde görünür:
Name Operation Status Item Name Start Time UTC
------------------------------------ --------------- --------- ---------- -------------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3 ConfigureBackup Completed master [testSQLVM] 2019-12-03T03:09:210831+00:00
ccdb4dce-8b15-47c5-8c46-b0985352238f Backup (Full) Completed master [testSQLVM] 2019-12-01T10:30:58.867489+00:00
4980af91-1090-49a6-ab96-13bc905a5282 Backup (Differential) Completed master [testSQLVM] 2019-12-01T10:36:00.563909+00:00
F7c68818-039f-4a0f-8d73-e0747e68a813 Restore (Log) Completed master [testSQLVM] 2019-12-03T05:44:51.081607+00:00
İlkeyi değiştirme
SQL yedekleme yapılandırmasını temel alan ilkeyi değiştirmek için az backup policy set komutunu kullanın. Bu komuttaki name parametresi, ilkesini değiştirmek istediğiniz yedekleme öğesini ifade eder. Burada SQL veritabanı sqldatabase;mssqlserver;master ilkesini yeni bir newSQLPolicy ilkesiyle değiştirin. az backup policy create komutunu kullanarak yeni ilkeler oluşturabilirsiniz.
az backup item set-policy --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--policy-name newSQLPolicy \
--name sqldatabase;mssqlserver;master \
Çıkış şu şekilde görünür:
Name Operation Status Item Name Backup Management Type Start Time UTC Duration
------------------------------------ --------------- --------- ----------- ------------------------ -------------------------------- --------------
ba350996-99ea-46b1-aae2-e2096c1e28cd ConfigureBackup Completed master AzureWorkload 2022-06-22T08:24:03.958001+00:00 0:01:12.435765
Değişiklik yedekleme ilkesi oluşturma
Değişiklik yedekleme ilkesi oluşturmak için aşağıdaki parametrelerle az backup policy create komutunu kullanın:
- --backup-management-type: Azure İş Yükü.
- --workload-type: SQL DataBase.
- --name: İlkenin adı.
- --policy: Zamanlama ve saklama için uygun ayrıntıları içeren JSON dosyası.
- --resource-group: Kasanın kaynak grubu.
- --vault-name: Kasanın adı/
Örnek:
az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase
Örnek JSON (sqlpolicy.json):
"eTag": null,
"id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupPolicies/SQLPolicy",
"location": null,
"name": "sqlpolicy",
"properties": {
"backupManagementType": "AzureWorkload",
"workLoadType": "SQLDataBase",
"settings": {
"timeZone": "UTC",
"issqlcompression": false,
"isCompression": false
},
"subProtectionPolicy": [
{
"policyType": "Full",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Weekly",
"scheduleRunDays": [
"Sunday"
],
"scheduleRunTimes": [
"2022-06-13T19:30:00Z"
],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "LongTermRetentionPolicy",
"weeklySchedule": {
"daysOfTheWeek": [
"Sunday"
],
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 104,
"durationType": "Weeks"
}
},
"monthlySchedule": {
"retentionScheduleFormatType": "Weekly",
"retentionScheduleWeekly": {
"daysOfTheWeek": [
"Sunday"
],
"weeksOfTheMonth": [
"First"
]
},
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 60,
"durationType": "Months"
}
},
"yearlySchedule": {
"retentionScheduleFormatType": "Weekly",
"monthsOfYear": [
"January"
],
"retentionScheduleWeekly": {
"daysOfTheWeek": [
"Sunday"
],
"weeksOfTheMonth": [
"First"
]
},
"retentionTimes": [
"2022-06-13T19:30:00Z"
],
"retentionDuration": {
"count": 10,
"durationType": "Years"
}
}
}
},
{
"policyType": "Differential",
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Weekly",
"scheduleRunDays": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"scheduleRunTimes": [
"2022-06-13T02:00:00Z"
],
"scheduleWeeklyFrequency": 0
},
"retentionPolicy": {
"retentionPolicyType": "SimpleRetentionPolicy",
"retentionDuration": {
"count": 30,
"durationType": "Days"
}
}
},
{
"policyType": "Log",
"schedulePolicy": {
"schedulePolicyType": "LogSchedulePolicy",
"scheduleFrequencyInMins": 120
},
"retentionPolicy": {
"retentionPolicyType": "SimpleRetentionPolicy",
"retentionDuration": {
"count": 15,
"durationType": "Days"
}
}
}
],
"protectedItemsCount": 0
},
"resourceGroup": "SQLResourceGroup",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupPolicies"
}
İlke başarıyla oluşturulduktan sonra komutun çıktısı, komutu yürütürken parametre olarak iletmiş olduğunuz ilke JSON'unu gösterir.
Değişiklik yedekleri için gerekli yedekleme sıklığını ve saklamayı belirtmek üzere ilkenin aşağıdaki bölümünü değiştirebilirsiniz.
Örnek:
{
"policyType": "Differential",
"retentionPolicy": {
"retentionDuration": {
"count": 30,
"durationType": "Days"
},
"retentionPolicyType": "SimpleRetentionPolicy"
},
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunDays": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
"scheduleRunFrequency": "Weekly",
"scheduleRunTimes": [
"2017-03-07T02:00:00+00:00"
],
"scheduleWeeklyFrequency": 0
}
}
Örnek:
Değişiklik yedeklerinin yalnızca Cumartesi günü olmasını ve 60 gün boyunca saklanmasını istiyorsanız, ilkede aşağıdaki değişiklikleri yapın:
- BekletmeDuration sayısını 60 güne güncelleştirin.
- ScheduleRunDays olarak yalnızca Cumartesi değerini belirtin.
{
"policyType": "Differential",
"retentionPolicy": {
"retentionDuration": {
"count": 60,
"durationType": "Days"
},
"retentionPolicyType": "SimpleRetentionPolicy"
},
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunDays": [
"Saturday"
],
"scheduleRunFrequency": "Weekly",
"scheduleRunTimes": [
"2017-03-07T02:00:00+00:00"
],
"scheduleWeeklyFrequency": 0
}
}
SQL örneğine eklenen yeni veritabanlarını koruma
Bir SQL örneğinin Kurtarma Hizmetleri kasasına kaydedilmesi , bu örnekteki tüm veritabanlarını otomatik olarak bulur.
Ancak daha sonra SQL örneğine yeni veritabanları eklediyseniz az backup protectable-item initialize komutunu kullanın. Bu komut eklenen yeni veritabanlarını bulur.
az backup protectable-item initialize --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--workload-type SQLDataBase
Ardından az backup protectable-item list cmdlet'ini kullanarak SQL örneğinizde bulunan tüm veritabanlarını listeleyin. Ancak bu liste, yedeklemenin zaten yapılandırılmış olduğu veritabanlarını dışlar. Yedeklenecek veritabanı bulunduktan sonra SQL veritabanında yedeklemeyi etkinleştirme konusuna bakın.
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--protectable-item-type SQLDataBase \
--output table
Yedeklemek istediğiniz yeni veritabanı şu listede gösterilir:
Name Protectable Item Type ParentName ServerName IsProtected
--------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;db1 SQLDataBase mssqlserver testSQLVM NotProtected
sqldatabase;mssqlserver;db2 SQLDataBase mssqlserver testSQLVM NotProtected
SQL veritabanı için korumayı durdurma
Aşağıdaki işlemlerde sql veritabanını korumayı durdurabilirsiniz:
- Gelecekteki tüm yedekleme işlerini durdurun ve tüm kurtarma noktalarını silin.
- Gelecekteki tüm yedekleme işlerini durdurun ve kurtarma noktalarını olduğu gibi bırakın.
Kurtarma noktalarından ayrılmayı seçerseniz şu ayrıntıları göz önünde bulundurun:
- Tüm kurtarma noktaları sonsuza kadar olduğu gibi kalır ve verileri tutarak koruma durdurulduğunda tüm ayıklama durdurulur.
- Korumalı örnek ve kullanılan depolama alanı için ücretlendirilirsiniz.
- Yedeklemeleri durdurmadan bir veri kaynağını silerseniz yeni yedeklemeler başarısız olur.
Korumayı durdurma işlemleri aşağıda ayrıntılı olarak yer almaktadır.
Verileri bekleterek korumayı durdurun
Verileri tutarak korumayı durdurmak için az backup protection disable' komutunu kullanın.
az backup protection disable --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--workload-type SQLDataBase \
--output table
Çıkış şu şekilde görünür:
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
Bu işlemin durumunu doğrulamak için az backup job show komutunu kullanın.
Verileri saklamadan korumayı durdurma
Verileri saklamadan korumayı durdurmak için az backup protection disable komutunu kullanın.
az backup protection disable --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--workload-type SQLDataBase \
--delete-backup-data true \
--output table
Çıkış şu şekilde görünür:
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
Bu işlemin durumunu doğrulamak için az backup job show komutunu kullanın.
Korumayı sürdürme
Verileri tutarak SQL veritabanı için korumayı durdurduğunuzda, korumayı daha sonra sürdürebilirsiniz. Yedeklenen verileri saklamazsanız korumayı sürdüremezsiniz.
Korumayı sürdürmek için az backup protection resume komutunu kullanın.
az backup protection resume --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--policy-name SQLPolicy \
--output table
Çıkış şu şekilde görünür:
Name ResourceGroup
------------------------------------ ---------------
b2a7f108-1020-4529-870f-6c4c43e2bb9e SQLResourceGroup
Bu işlemin durumunu doğrulamak için az backup job show komutunu kullanın.