Share via


Hantera SQL-databaser på en virtuell Azure-dator med Hjälp av Azure CLI

Azure CLI används för att skapa och hantera Azure-resurser från kommandoraden eller via skript. Den här artikeln beskriver hur du hanterar en säkerhetskopierad SQL-databas på en virtuell Azure-dator med Hjälp av Azure CLI. Du kan också utföra dessa åtgärder med hjälp av Azure Portal.

I den här artikeln får du lära dig att:

  • Övervaka säkerhetskopierings- och återställningsjobb
  • Skydda nya databaser som lagts till i en SQL-instans
  • Ändra principen
  • Sluta skydda
  • Återuppta skyddet

Om du har använt Säkerhetskopiera en SQL-databas i Azure med CLI för att säkerhetskopiera din SQL-databas använder du följande resurser:

  • En resursgrupp med namnet SQLResourceGroup
  • Ett valv med namnet SQLVault
  • Skyddad container med namnet VMAppContainer; Beräkna; SQLResourceGroup;testSQLVM
  • Säkerhetskopierad databas/objekt med namnet sqldatabase;mssqlserver;master
  • Resurser i regionen westus2

Azure CLI underlättar hanteringen av en SQL-databas som körs på en virtuell Azure-dator som säkerhetskopieras med hjälp av Azure Backup. I följande avsnitt beskrivs var och en av hanteringsåtgärderna.

Anteckning

Mer information om konfigurationer och scenarier som stöds finns i supportmatrisen för SQL-säkerhetskopiering .

Övervaka säkerhetskopierings- och återställningsjobb

Använd kommandot az backup job list för att övervaka slutförda eller pågående jobb (säkerhetskopiering eller återställning). MED CLI kan du också pausa ett jobb som körs eller vänta tills ett jobb har slutförts.

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

Utdata visas som:

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

Ändra en princip

Om du vill ändra principen som ligger till grund för SQL-säkerhetskopieringskonfigurationen använder du kommandot az backup policy set . Namnparametern i det här kommandot refererar till säkerhetskopieringsobjektet vars princip du vill ändra. Ersätt principen för SQL Database sqldatabase;mssqlserver;master med en ny princip newSQLPolicy. Du kan skapa nya principer med kommandot 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 \

Utdata visas som:

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

Skapa en princip för differentiell säkerhetskopiering

Om du vill skapa en princip för differentiell säkerhetskopiering använder du kommandot az backup policy create med följande parametrar:

  • --backup-management-type: Azure Workload.
  • --workload-type: SQL DataBase.
  • --name: Namnet på principen.
  • --policy: JSON-fil med lämplig information för schema och kvarhållning.
  • --resource-group: Resursgrupp för valvet.
  • --vault-name: Namnet på valvet/

Exempel:

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

Exempel på 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"
} 

När principen har skapats visar kommandots utdata den princip-JSON som du skickade som en parameter när kommandot kördes.

Du kan ändra följande avsnitt i principen för att ange vilken säkerhetskopieringsfrekvens och kvarhållning som krävs för differentiella säkerhetskopior.

Exempel:

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

Exempel:

Om du bara vill ha differentiella säkerhetskopior på lördag och behålla dem i 60 dagar gör du följande ändringar i principen:

  • Uppdatera retentionDuration antal till 60 dagar.
  • Ange endast lördag som 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
  }
}

Skydda de nya databaser som läggs till i en SQL-instans

Om du registrerar en SQL-instans med ett Recovery Services-valv identifieras automatiskt alla databaser i den här instansen.

Men om du har lagt till nya databaser i SQL-instansen senare använder du kommandot az backup protectable-item initialize . Det här kommandot identifierar de nya databaser som lagts till.

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

Använd sedan cmdleten az backup protectable-item list för att visa alla databaser som har identifierats på din SQL-instans. Den här listan exkluderar dock de databaser där säkerhetskopiering redan har konfigurerats. När databasen som ska säkerhetskopieras har identifierats läser du Aktivera säkerhetskopiering på SQL-databas.

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

Den nya databas som du vill säkerhetskopiera visas i den här listan, som visas som:

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

Stoppa skyddet för en SQL-databas

Du kan sluta skydda en SQL-databas i följande processer:

  • Stoppa alla framtida säkerhetskopieringsjobb och ta bort alla återställningspunkter.
  • Stoppa alla framtida säkerhetskopieringsjobb och lämna återställningspunkterna intakta.

Om du väljer att lämna återställningspunkter bör du tänka på följande information:

  • Alla återställningspunkter förblir intakta för alltid och all beskärning stoppas vid stoppskydd med kvarhållningsdata.
  • Du debiteras för den skyddade instansen och den förbrukade lagringen.
  • Om du tar bort en datakälla utan att stoppa säkerhetskopior misslyckas nya säkerhetskopieringar.

Processerna för att stoppa skyddet beskrivs nedan.

Avbryt skyddet med kvarhållning av data

Om du vill stoppa skyddet med kvarhållningsdata använder du kommandot 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

Utdata visas som:

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

Kontrollera statusen för den här åtgärden med kommandot az backup job show .

Stoppa skyddet utan att behålla data

Om du vill stoppa skyddet utan att behålla data använder du kommandot 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

Utdata visas som:

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

Kontrollera statusen för den här åtgärden med kommandot az backup job show .

Återuppta skyddet

När du stoppar skyddet för SQL-databasen med kvarhållningsdata kan du återuppta skyddet senare. Om du inte behåller säkerhetskopierade data kan du inte återuppta skyddet.

Om du vill återuppta skyddet använder du kommandot 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

Utdata visas som:

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

Kontrollera statusen för den här åtgärden med kommandot az backup job show .

Nästa steg