Автоматизация обновления базы данных SQL Server, входящей в группу доступности
У вас есть база данных SQL Server, которая является частью группы доступности AlwaysOn, имеющей одну вторичную реплику только для чтения. Время от времени возникает необходимость обновлять основную базу данных с другого сервера, что требует от нас удаления AlwaysOn и перенастройки. Как можно автоматизировать этот процесс?
Как вы, наверное, знаете, мы не можем восстановить базу данных, которая является частью группы доступности SQL Server AlwaysOn. Нам нужно сначала удалить базу данных SQL Server из группы доступности, чтобы восстановить базу данных. В этой статье мы рассмотрим, как мы можем автоматизировать этот процесс, чтобы гарантировать, что AlwaysOn будет восстановлен без ручного вмешательства.
Сперва мы рассмотрим все шаги, которые нужно сделать, а затем поговорим о том, как их можно автоматизировать с помощью SQL Server Agent Jobs.
Удалите базу данных SQL Server из группы доступности AlwaysOn на основном сервере
Первым шагом является удаление базы данных из группы доступности. Мы можем добиться этого, используя команду ниже.
Примечание. Вам нужно будет заменить значения <Availability Group> и <Database Name> на ваши значения.
-- runs on primary server |
Восстановление базы данных SQL Server на основном сервере
Следующим шагом будет восстановление резервной копии для обновления базы данных на вашем основном сервере. Вы также можете добавить дополнительные шаги для любых конкретных требований для запуска после восстановления, таких как предоставление разрешений и т. д.
Эта резервная копия поступает с другого сервера, который будет использоваться для обновления базы данных на основном сервере.
-- runs on primary server |
Убедитесь, что восстановленная база данных SQL Server находится в режиме полного восстановления на основном сервере
Нам необходимо убедиться, чтобы режим восстановления базы данных был установлен в режиме FULL, чтобы соответствовать требованиям AlwaysOn.
-- runs on primary server |
Резервное копирование базы данных SQL Server и журнала на основном сервере
Затем вам нужно сделать резервные копии: полную и журнала транзакций этой восстановленной базы данных. Чтобы упростить этот процесс для восстановления, вы должны создать резервные копии на сетевом ресурсе, доступном как с серверов PRIMARY, так и с SECONDARY. Это позволит избежать копирования резервной копии с PRIMARY на SECONDARY, а также позволит сэкономить время, исключив шаг копирования.
-- runs on primary server |
Добавьте базу данных SQL Server в группу доступности на основной сервер
Затем нам нужно добавить базу данных обратно в группу доступности.
-- runs on primary server |
Теперь вы выполнили все шаги на сервере PRIMARY.
Восстановление базы данных SQL Server на вторичном сервере
Затем нам нужно восстановить полное резервное копирование и резервное копирование журнала на вторичном сервере.
-- runs on secondary server |
Проверьте состояние базы данных SQL Server и затем добавьте в группу доступности на вторичном сервере
Следующий шаг важен, он позволяет синхронизировать данные после того, как база данных была восстановлена и стала готова присоединиться к группе доступности.
-- runs on secondary server |
Работа агента SQL Server
Чтобы автоматизировать этот процесс, мы можем создать задания агента SQL Server на обоих серверах:
- Первичный сервер. Создайте одно задание, которое выполняет следующие действия:
- Удаляет базу данных из группы доступности
- Восстанавливает базу данных
- Задает модель восстановления базы данных в режиме FULL
- Добавляет базу данных в группу доступности
- Создает резервное копирование базы данных и журнала
- Опционально - запускает работу на вторичном сервере с помощью sp_start_job (для этого необходимо будет осуществить некоторые другие настройки)
- Вторичный сервер. Создайте одно задание, которое выполняет следующие действия:
- Восстанавливает резервной копии базы данных и резервного копирования журнала
- Проверяет состояние базы данных и добавляет базу данных в группу доступности
Если у вас нет основного сервера, запускающего задание на вторичном сервере, вам нужно будет выяснить, когда планировать выполнение этого задания после выполнения задания на основном сервере.