다음을 통해 공유


Azure CLI를 사용하여 Azure VM에서 SQL 데이터베이스 관리

Azure CLI는 명령줄 또는 스크립트를 통해 Azure 리소스를 만들고 관리하는 데 사용됩니다. 이 문서에서는 Azure CLI를 사용하여 Azure VM에서 백업된 SQL 데이터베이스를 관리하는 방법을 설명합니다. Azure Portal을 사용하여 이러한 작업을 수행할 수도 있습니다.

비고

CLI를 사용하여 Azure에서 SQL 데이터베이스를 백업한 경우, 다음 리소스를 사용하는 것입니다.

  • SQLResourceGroup이라는 리소스 그룹
  • SQLVault라는 금고
  • VMAppContainer; Compute; SQLResourceGroup; testSQLVM라는 보호된 컨테이너
  • 백업된 데이터베이스/항목 이름 sqldatabase;mssqlserver;master
  • westus2 지역의 리소스

Azure CLI는 Azure Backup을 사용하여 백업되는 Azure VM에서 실행되는 SQL 데이터베이스를 관리하는 프로세스를 용이하게 합니다. 다음 섹션에서는 각 관리 작업에 대해 설명합니다.

SQL 백업에 대해 지원되는 구성 및 시나리오에 대해 자세히 알아봅니다.

백업 및 복원 작업 모니터링

az backup job list 명령을 사용하여 완료되거나 현재 실행 중인 작업(백업 또는 복원)을 모니터링합니다. 또한 CLI를 사용하면 현재 실행 중인 작업을 일시 중단 하거나 작업이 완료될 때까지 기다릴 수 있습니다.

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

출력은 다음과 같이 나타납니다.

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

정책 변경

SQL 백업 구성의 기본 정책을 변경하려면 az backup policy set 명령을 사용합니다. 이 명령의 이름 매개 변수는 정책을 변경하려는 백업 항목을 참조합니다. 여기에서는 SQL 데이터베이스 sqldatabase; mssqlserver; master의 정책을 새 정책 newSQLPolicy로 교체합니다. 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 \

출력은 다음과 같이 나타납니다.

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

차등 백업 정책 만들기

차등 백업 정책을 만들려면 다음 매개 변수와 함께 az backup policy create 명령을 사용합니다.

  • --backup-management-type: Azure 워크로드.
  • --workload-type: SQL 데이터베이스.
  • --name: 정책의 이름입니다.
  • --policy: 일정 및 보존에 대한 적절한 세부 정보가 포함된 JSON 파일입니다.
  • --resource-group: 보관소의 리소스 그룹입니다.
  • --vault-name: 금고의 이름/

예제:

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

샘플 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"
} 

정책이 성공적으로 만들어지면 명령의 출력에는 명령을 실행하는 동안 매개 변수로 전달한 정책 JSON이 표시됩니다.

정책의 다음 섹션을 수정하여 차등 백업에 필요한 백업 빈도 및 보존을 지정할 수 있습니다.

다음은 그 예입니다.

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

예제:

토요일에만 차등 백업을 사용하고 60일 동안 유지하려면 정책에서 다음 변경 내용을 수행합니다.

  • retentionDuration 수를 60일로 업데이트합니다.
  • 토요일만 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
  }
}

SQL 인스턴스에 추가된 새 데이터베이스 보호

Recovery Services 자격 증명 금고에 SQL 인스턴스를 등록하면 이 인스턴스의 모든 데이터베이스가 자동으로 검색됩니다.

그러나 나중에 SQL 인스턴스에 새 데이터베이스를 추가한 경우 az backup protectable-item initialize 명령을 사용합니다. 이 명령은 추가된 새 데이터베이스를 검색합니다.

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

그런 다음 az backup protectable-item list cmdlet을 사용하여 SQL 인스턴스에서 검색된 모든 데이터베이스를 나열합니다. 그러나 이 목록은 백업이 이미 구성된 데이터베이스를 제외합니다. 백업할 데이터베이스가 검색되면 SQL 데이터베이스에서 백업 사용을 참조하세요.

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

백업하려는 새 데이터베이스는 다음과 같이 표시되는 이 목록에 표시됩니다.

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

SQL 데이터베이스에 대한 보호 중지

다음 프로세스에서 SQL 데이터베이스 보호를 중지할 수 있습니다.

  • 미래의 모든 백업 작업을 중지하고 모든 복구 지점을 {b>삭제.
  • 미래의 모든 백업 작업을 중지하고 복구 지점을 원래 상태로 유지

복구 지점을 나가기로 선택한 경우 다음 세부 정보를 유의하세요.

  • 모든 복구 지점은 영원히 그대로 유지되며, 모든 정리는 데이터 보존을 사용하여 보호 중지 시 중지됩니다.
  • 보호된 인스턴스와 사용한 스토리지 요금이 청구됩니다.
  • 백업을 중지하지 않고 데이터 원본을 삭제하면 새 백업이 실패합니다.

보호를 중지하는 프로세스는 아래에 자세히 설명되어 있습니다.

데이터 보관을 통해 보호 중지

데이터 보존으로 보호를 중지하려면 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

출력은 다음과 같이 나타납니다.

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

이 작업의 상태를 확인하려면 az backup job show 명령을 사용합니다.

데이터 보존 없이 보호 중지

데이터를 보존하지 않고 보호를 중지하려면 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

출력은 다음과 같이 나타납니다.

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

이 작업의 상태를 확인하려면 az backup job show 명령을 사용합니다.

보호 다시 시작

데이터 보존을 사용하여 SQL 데이터베이스에 대한 보호를 중지하면 나중에 보호를 다시 시작할 수 있습니다. 백업된 데이터를 유지하지 않으면 보호를 다시 시작할 수 없습니다.

보호를 다시 시작하려면 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

출력은 다음과 같이 나타납니다.

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

이 작업의 상태를 확인하려면 az backup job show 명령을 사용합니다.

다음 단계