Bagikan melalui


Mengelola database SQL di Azure VM menggunakan Azure CLI

Antarmuka tingkat panggilan Azure 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 tersebut menggunakan portal Azure.

Dalam artikel ini, Anda akan mempelajari cara:

  • Memantau pekerjaan pencadangan dan pemulihan
  • Melindungi database baru yang ditambahkan ke instans SQL Server
  • Mengubah kebijakan
  • Menghentikan perlindungan
  • Melanjutkan perlindungan

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

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

Azure CLI memudahkan proses pengelolaan database SQL yang berjalan di Azure VM, yang dicadangkan menggunakan Azure Backup. Bagian berikut menjelaskan setiap operasi manajemen.

Catatan

Lihat matriks dukungan pencadangan SQL untuk mengetahui lebih lanjut tentang konfigurasi dan skenario yang didukung.

Memantau pekerjaan pencadangan dan pemulihan

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

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

Output-nya muncul sebagai berikut:

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 mendasari konfigurasi pencadangan 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 database SQL sqldatabase;mssqlserver;master 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 \

Output-nya muncul sebagai berikut:

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 cadangan diferensial

Untuk membuat kebijakan cadangan 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 vault/

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 dari perintah menunjukkan JSON kebijakan yang Anda berikan sebagai parameter saat menjalankan perintah.

Anda dapat mengubah bagian kebijakan berikut untuk menentukan frekuensi dan retensi cadangan 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 melakukan pencadangan diferensial hanya pada hari Sabtu dan menyimpannya selama 60 hari, lakukan perubahan kebijakan berikut:

  • Perbarui jumlah retentionDuration menjadi 60 hari.
  • Tentukan hanya hari 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 Server

Mendaftarkan instans SQL Server dengan vault Layanan Pemulihan otomatis menemukan semua database dalam instans ini.

Namun, jika nanti Anda menambahkan database baru ke instans SQL Server, gunakan perintah az backup protected-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 az backup protectable-item list untuk mencantumkan semua database yang telah ditemukan pada instans SQL Server Anda. Meskipun demikian, daftar ini mengecualikan database yang pencadangannya telah dikonfigurasi. 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 ditampilkan dalam daftar ini, yang muncul sebagai berikut:

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 menghentikan perlindungan database SQL dengan proses berikut:

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

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

  • Semua titik pemulihan tetap utuh selamanya, dan semua pemangkasan berhenti pada menghentikan perlindungan dengan menyimpan 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 untuk menghentikan perlindungan dijelaskan di bawah ini.

Hentikan perlindungan dengan menyimpan data

Untuk menghentikan perlindungan dengan 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 \
    --output table

Output-nya muncul sebagai berikut:

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

Untuk memeriksa 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

Output-nya muncul sebagai berikut:

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

Untuk memeriksa 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

Output-nya muncul sebagai berikut:

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

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

Langkah berikutnya