Bagikan melalui


Mengelola database SQL di Azure VM menggunakan Azure CLI

Azure CLI digunakan untuk membuat dan mengelola sumber daya Azure dari Baris Perintah atau melalui skrip. Artikel ini menjelaskan cara mengelola database SQL yang dicadangkan di Azure VM menggunakan Azure CLI. Anda juga dapat melakukan tindakan ini menggunakan portal Microsoft Azure.

Nota

Jika Anda telah menggunakan Cadangkan database SQL di Azure menggunakan CLI untuk mencadangkan database SQL Anda, maka Anda menggunakan sumber daya berikut:

  • Grup sumber daya bernama SQLResourceGroup
  • Vault bernama SQLVault
  • Kontainer terlindungi bernama VMAppContainer; Menghitung; SQLResourceGroup; testSQLVM
  • Database/item yang dicadangkan bernama sqldatabase;mssqlserver;master
  • Sumber daya di wilayah westus2

Azure CLI memudahkan proses pengelolaan database SQL yang dioperasikan pada Azure VM dan dicadangkan dengan Azure Backup. Bagian berikut menjelaskan setiap operasi manajemen.

Pelajari selengkapnya tentang konfigurasi dan skenario yang didukung untuk cadangan SQL.

Memantau pekerjaan pencadangan dan pemulihan

Gunakan perintah az backup job list untuk memantau pekerjaan yang sudah selesai atau sedang berjalan (pencadangan atau pemulihan). CLI juga memungkinkan Anda untuk menangguhkan pekerjaan yang sedang berjalan atau menunggu hingga pekerjaan selesai.

az backup job list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --output table

Outputnya muncul sebagai:

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

Mengubah kebijakan

Untuk mengubah kebijakan yang mendasar konfigurasi cadangan SQL, gunakan perintah az backup policy set . Parameter nama dalam perintah ini mengacu pada item cadangan yang kebijakannya ingin Anda ubah. Di sini, ganti kebijakan sqldatabase;mssqlserver;master dari database SQL dengan kebijakan baru newSQLPolicy. Anda dapat membuat kebijakan baru menggunakan perintah az backup policy create .

az backup item set-policy --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name newSQLPolicy \
    --name sqldatabase;mssqlserver;master \

Outputnya muncul sebagai:

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

Membuat kebijakan pencadangan diferensial

Untuk membuat kebijakan pencadangan diferensial, gunakan perintah az backup policy create dengan parameter berikut:

  • --backup-management-type: Beban kerja Azure.
  • --workload-type: SQL DataBase.
  • --name: Nama kebijakan.
  • --policy: File JSON dengan detail yang sesuai untuk jadwal dan retensi.
  • --resource-group: Grup sumber daya vault.
  • --vault-name: nama brankas/

Contoh:

az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase

Sampel 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"
} 

Setelah kebijakan berhasil dibuat, output perintah menunjukkan JSON kebijakan yang Anda sertakan sebagai parameter saat Anda menjalankan perintah.

Anda dapat mengubah bagian kebijakan berikut untuk menentukan frekuensi pencadangan dan retensi yang diperlukan untuk cadangan diferensial.

Contohnya:

{
  "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
  }
}

Contoh:

Jika Anda ingin memiliki cadangan diferensial hanya pada hari Sabtu dan menyimpannya selama 60 hari, lakukan perubahan berikut dalam kebijakan:

  • Perbarui retentionDuration menjadi 60 hari.
  • Tentukan hanya Sabtu sebagai ScheduleRunDays.
 {
  "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
  }
}

Melindungi database baru yang ditambahkan ke instans SQL

Mendaftarkan instans SQL dengan brankas Layanan Pemulihan akan secara otomatis menemukan semua database dalam instans ini.

Namun, jika Anda telah menambahkan database baru ke instans SQL kemudian, gunakan perintah az backup protectable-item initialize. Perintah ini menemukan database baru yang ditambahkan.

az backup protectable-item initialize --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --workload-type SQLDataBase

Kemudian gunakan cmdlet daftar item yang dapat dilindungi cadangan az untuk mencantumkan semua database yang telah ditemukan pada instans SQL Anda. Daftar ini, bagaimanapun, mengecualikan database yang sudah dikonfigurasi untuk pencadangan. Setelah database yang akan dicadangkan ditemukan, lihat Mengaktifkan pencadangan pada database SQL.

az backup protectable-item list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
	--protectable-item-type SQLDataBase \
    --output table

Database baru yang ingin Anda cadangkan muncul dalam daftar ini, yang ditampilkan sebagai:

Name                            Protectable Item Type    ParentName    ServerName    IsProtected
---------------------------     ----------------------   ------------  -----------   ------------
sqldatabase;mssqlserver;db1     SQLDataBase              mssqlserver   testSQLVM	 NotProtected  
sqldatabase;mssqlserver;db2     SQLDataBase              mssqlserver   testSQLVM	 NotProtected

Menghentikan perlindungan untuk database SQL

Anda dapat berhenti melindungi database SQL dalam proses berikut:

  • Hentikan semua pekerjaan pencadangan di masa mendatang dan hapus semua titik pemulihan.
  • Hentikan semua pekerjaan pencadangan di masa mendatang dan biarkan titik pemulihan tetap utuh.

Jika Anda memilih untuk meninggalkan titik pemulihan, ingatlah detail berikut:

  • Semua titik pemulihan tetap utuh selamanya, dan semua pemangkasan berhenti pada penghentian perlindungan dengan mempertahankan data.
  • Anda akan dikenakan biaya untuk instans yang dilindungi dan penyimpanan yang digunakan.
  • Jika Anda menghapus sumber data tanpa menghentikan pencadangan, pencadangan baru akan gagal.

Proses penghentian perlindungan diuraikan di bawah ini.

Hentikan perlindungan dengan menyimpan data

Untuk menghentikan perlindungan dengan menyimpan data, gunakan perintah nonaktifkan perlindungan cadangan az.

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

Outputnya muncul sebagai:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Untuk memverifikasi status operasi ini, gunakan perintah az backup job show .

Hentikan perlindungan tanpa menyimpan data

Untuk menghentikan perlindungan tanpa menyimpan data, gunakan perintah az backup protection disable .

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

Outputnya muncul sebagai:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Untuk memverifikasi status operasi ini, gunakan perintah az backup job show .

Melanjutkan perlindungan

Saat Anda menghentikan perlindungan untuk database SQL dengan menyimpan data, Anda dapat melanjutkan perlindungan nanti. Jika Anda tidak menyimpan data yang dicadangkan, Anda tidak akan dapat melanjutkan perlindungan.

Untuk melanjutkan perlindungan, gunakan perintah az backup protection resume .

az backup protection resume --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name SQLPolicy \
    --output table

Outputnya muncul sebagai:

Name                                  ResourceGroup
------------------------------------  ---------------  
b2a7f108-1020-4529-870f-6c4c43e2bb9e  SQLResourceGroup

Untuk memverifikasi status operasi ini, gunakan perintah az backup job show .

Langkah berikutnya