Резервное копирование баз данных SQL на виртуальных машинах Azure с помощью Azure CLI

Azure CLI используется для создания ресурсов Azure и управления ими из командной строки или с помощью скриптов. В этой статье описывается резервное копирование базы данных SQL на виртуальной машине Azure и активация резервных копий по запросу с помощью Azure CLI. Эти действия можно также выполнить с помощью портала Azure.

В этом документе предполагается, что у вас уже есть виртуальная машина Azure с установленной базой данных SQL. (Вы также можете создать виртуальную машину с помощью Azure CLI).

В этой статье вы узнаете, как выполнять следующие задачи.

  • Создание хранилища Служб восстановления
  • Регистрация SQL Server и обнаружение баз данных на нем
  • Включение резервного копирования в базе данных SQL
  • Активирование резервного копирования по запросу

Ознакомьтесь с поддерживаемыми в настоящее время сценариями SQL на виртуальной машине Azure.

Предварительные требования

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье Краткое руководство по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в разделе Запуск Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, приведены в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Создание хранилища Служб восстановления

Хранилище Служб восстановления — это логический контейнер, в котором хранятся данные резервного копирования для каждого защищенного ресурса, например виртуальных машин Azure или выполняемых на виртуальных машинах рабочих нагрузок, таких как базы данных SQL или HANA. Когда выполняется задание резервного копирования для защищенного ресурса, в хранилище служб восстановления создается точка восстановления. Позже вы сможете использовать одну из этих точек восстановления, чтобы восстановить данные до определенной точки во времени.

Создайте хранилище служб восстановления с помощью команды az backup vault create. Укажите те же группу ресурсов и расположение, что и для виртуальной машины, которую необходимо защитить. Узнайте, как создать виртуальную машину с помощью Azure CLI, изучив краткое руководство по виртуальным машинам.

В этой статье мы будем использовать:

  • группу ресурсов с именем SQLResourceGroup;
  • виртуальную машину с именем testSQLVM;
  • ресурсы в расположении westus2.

Выполните следующую команду, чтобы создать хранилище с именем SQLVault.

az backup vault create --resource-group SQLResourceGroup \
    --name SQLVault \
    --location westus2

По умолчанию в качестве хранилища служб восстановления задано геоизбыточное хранилище. Геоизбыточное хранилище обеспечивает репликацию данных резервного копирования во вторичный регион Azure, который находится в сотнях километров от первичного региона. Если вам необходимо изменить параметр избыточности хранилища, используйте команду az backup vault backup-properties set.

az backup vault backup-properties set \
    --name SQLVault  \
    --resource-group SQLResourceGroup \
    --backup-storage-redundancy "LocallyRedundant/GeoRedundant"

Чтобы проверить, успешно ли создано хранилище, используйте команду az backup vault list. Ответ отображается следующим образом:

Location   Name             ResourceGroup
---------  ---------------  -------------  
westus2    SQLVault     	SQLResourceGroup

Регистрация и защита SQL Server

Чтобы зарегистрировать SQL Server в Хранилище служб восстановления, используйте команду az backup container register. VMResourceId обозначает идентификатор ресурса для виртуальной машины, которую вы создали для установки SQL.

az backup container register --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
    --backup-management-type AzureWorkload \
    --resource-id VMResourceId

Примечание

Если виртуальная машина и хранилище находятся в разных группах ресурсов, то имя SQLResourceGroup использует группу ресурсов, в которой создано хранилище.

При регистрации экземпляра SQL server на нем автоматически обнаруживаются все существующие базы данных. Однако для обнаружения новых баз данных, которые могут быть добавлены в будущем, выполните действия из раздела Об обнаружении новых баз данных, добавленных в зарегистрированный экземпляр SQL server.

Чтобы убедиться, что экземпляр SQL успешно зарегистрирован в хранилище, используйте команду az backup container list. Ответ отображается следующим образом:

Name                                                    Friendly Name    Resource Group        Type           Registration Status
------------------------------------------------------  --------------   --------------------  ---------      ----------------------
VMAppContainer;Compute;SQLResourceGroup;testSQLVM   	testSQLVM        SQLResourceGroup  		AzureWorkload  Registered

Примечание

Столбец name в представленном выше примере выходных данных ссылается на имя контейнера. Это имя контейнера будет использоваться в следующих разделах для настройки и активации резервного копирования. Например, VMAppContainer;Compute;SQLResourceGroup;testSQLVM.

Включение резервного копирования в базе данных SQL

Список команд az backup protectable-item list возвращает список всех баз данных, обнаруженных в экземпляре SQL, который вы зарегистрировали на предыдущем шаге.

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

В списке должна появиться новая база данных, для которой вы решили включить резервное копирование, и теперь он будет выглядеть следующим образом:

Name                           		Protectable Item Type    ParentName    ServerName    	IsProtected
-----------------------------  		----------------------   ------------  -----------   	------------
sqldatabase;mssqlserver;master      SQLDataBase              MSSQLServer   testSQLVM        NotProtected  
sqldatabase;mssqlserver;model       SQLDataBase              MSSQLServer   testSQLVM        NotProtected  
sqldatabase;mssqlserver;msdb        SQLDataBase              MSSQLServer   testSQLVM        NotProtected  

Теперь настройте резервное копирование для базы данных sqldatabase;mssqlserver;master.

Чтобы защитить и настроить резервное копирование поочередно для каждой базы данных, мы применим команду az backup protection enable-for-azurewl. Укажите имя политики, которую вы намерены использовать. Чтобы создать политику через интерфейс командной строки, используйте команду az backup policy create. В этой статье мы использовали политику testSQLPolicy.

az backup protection enable-for-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --policy-name SQLPolicy \
    --protectable-item-name "sqldatabase;mssqlserver;master"  \
    --protectable-item-type SQLDataBase \
    --server-name testSQLVM \
    --workload-type SQLDataBase \
    --output table

Вы можете использовать ту же команду, если у вас есть группа доступности SQL Always On и хотите определить защищаемый источник данных в группе доступности. Здесь тип защищаемого элемента — SQLAG.

Вы можете проверить, завершена ли настройка резервного копирования, с помощью команды az backup job list. Результат выглядит так:

Name                                  Operation         Status     Item Name   Start Time UTC
------------------------------------  ---------------   ---------  ----------  -------------------  
e0f15dae-7cac-4475-a833-f52c50e5b6c3  ConfigureBackup   Completed  master         2019-12-03T03:09:210831+00:00  

Команда az backup job list возвращает список всех заданий резервного копирования (запланированных и по требованию), которые были выполнены или выполняются в текущий момент в защищенной базе данных, а также другие операции, такие как регистрация, настройка резервного копирования и удаление данных резервных копий.

Примечание

Azure Backup не выполняет автоматический переход на летнее время при резервном копировании базы данных SQL на виртуальной машине Azure.

Измените политику вручную, если это необходимо.

Включение автоматической защиты

Для простой настройки резервного копирования все базы данных, добавленные в будущем, можно автоматически защитить с помощью определенной политики. Чтобы включить автоматическую защиту, используйте команду az backup protection auto-enable-for-azurewl.

Так как инструкция предназначена для резервного копирования всех будущих баз данных, операция выполняется на уровне SQLInstance.

az backup protection auto-enable-for-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --policy-name SQLPolicy \
    --protectable-item-name "sqlinstance;mssqlserver"  \
    --protectable-item-type SQLInstance \
    --server-name testSQLVM \
    --workload-type MSSQL\
    --output table

Активирование резервного копирования по запросу

Активируйте резервное копирование по запросу с помощью команды az dataprotection backup-instance adhoc-backup.

Примечание

Срок хранения этой резервной копии определяется типом выполняемой резервной копии по запросу.

  • Полные резервные копии по запросу хранятся не менее 45 дней и не более 99 лет.
  • Копирование по запросу полностью принимает все значения для хранения.
  • Разностное копирование по запросу сохраняется в соответствии с хранением запланированных разностных наборов в политике.
  • Журнал по запросу сохраняет резервные копии в соответствии с параметрами хранения запланированных журналов, заданных в политике.
az backup protection backup-now --resource-group SQLResourceGroup \
    --item-name sqldatabase;mssqlserver;master \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --backup-type Full
    --retain-until 01-01-2040
    --output table

Результат выглядит так:

Name                                  ResourceGroup
------------------------------------  -------------
e0f15dae-7cac-4475-a833-f52c50e5b6c3  sqlResourceGroup

В ответе вы получили имя задания. Имя задания позволяет отслеживать состояние задания с помощью команды az backup job show.

Дальнейшие действия