Aracılığıyla paylaş


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 yedeklenmiş bir SQL veritabanının nasıl yönetileceğini açıklanmaktadır. Bu eylemleri Azure portalını kullanarak da gerçekleştirebilirsiniz.

Uyarı

SQL veritabanınızı yedeklemek için CLI kullanarak Azure'da bir SQL veritabanını yedeklemeyi kullandıysanız aşağıdaki kaynakları kullanıyorsunuz demektir:

  • SQLResourceGroup adlı bir kaynak grubu
  • SQLVault adlı bir kasa
  • VMAppContainer, Hesaplama, SQLResourceGroup, testSQLVM adlı korumalı kapsayıcı
  • yedeklenen sqldatabase;mssqlserver;master adlı veritabanı/öğe
  • westus2 bölgesindeki kaynaklar

Azure CLI, Azure Backup kullanılarak yedeklenen bir Azure VM üzerinde çalışan bir 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.

SQL yedeklemesi için desteklenen yapılandırmalar ve senaryolar hakkında daha fazla bilgi edinin.

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 öğesine başvurur. Burada, SQL veritabanı sqldatabase; mssqlserver; master ilkesini newSQLPolicy ile 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

Artımlı yedekleme politikası 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 Veri Tabanı.
  • --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.

Farklı yedekler için gerekli yedekleme sıklığını ve saklama süresini belirtmek üzere ilkenin aşağıdaki bölümünü değiştirebilirsiniz.

Örneğin:

{
  "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 yedeklemelerinin 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:

  • retentionDuration 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

Kurtarma Hizmetleri kasasına bir SQL örneğinin kaydedilmesi , bu örnekteki tüm veritabanlarını otomatik olarak bulur.

Ancak sql örneğine daha sonra 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ı aklınızda bulundurun:

  • Tüm kurtarma noktaları sonsuza kadar değişmeden kalır ve tüm ayıklamalar, verileri koruyarak durur.
  • Korumalı örnek ve tüketilen 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 koruyarak 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 tutmadan 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

Sql veritabanı için korumayı veri saklama ile 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.

Sonraki adımlar