| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Описание технологии работы Log Shipping SQL Server 2000 В этой статье я расскажу, как работает Log Shipping, какие задания создаются при его на-стройке, как они функционируют, где хранится системная информация о передаче журналов, а также немного расскажу, как найти причину ошибки, возникающую в процессе работы. СОДЕРЖАНИЕ
1 Описание работы заданий Log Shipping Log Shipping - это фактически некоторое множество заданий
(SQL-job). Суть Log Shipping состоит в передачи копий
журналов транзакций с одного сервера на другой, что при
определенных дополнениях (например, таких, как перенос логинов
и сопоставление SID-ов) позволяет создать и поддерживать в
актуальном состоянии резервный сервер. При этом нужно помнить,
что данные на резервный сервер попадают не сразу, а через
некоторый промежуток времени, зависящий от на-строек Log
Shipping: частоты создания резервных копий журнала; частоты
переноса копий на вто-ричный сервер и их восстановления там и
эту частоту нельзя установить меньше чем 1 минута. Т.о. нельзя
заставить работать Log Shipping в непрерывном режиме, как
например репликацию.
На первичном сервере создается задание: "Transaction Log Backup Job for DB Maintenance Plan - <Имя плана обслуживания>". Основная функция этого задания - выполнение резервных копий журнала транзакций на первичном (основном) сервере в указанную при создании плана обслуживания папку. Поскольку при выполнении этого задания информация о последней копии журнала прописывается на сервер мониторинга, в таблицу msdb..log_shipping_primaries, у учетной записи, которая используется для подключения к серверу мониторинга, должны быть права на изменение этой таблицы. Отсут-ствие этих возможностей может привести к тому, что задания мониторинга будут завершаться с ошибкой. Это описано в следующей статье Базы знаний Microsoft (MSDN): PRB: Backup, Copy, and Load Job Information Is Not Updated on the Log Shipping Monitor На вторичном сервере создаются два задания, или их может быть три, если предусмотрена возможность смены ролей:
Это задание под учетной записью SQL Server Agent подключается к первичному серверу и последовательно, по одному файлу при каждом запуске, копирует файлы журналов транзакций на локальный диск вторичного сервера. Соответственно у учетной записи SQL Server Agent вто-ричного сервера должны быть права на чтение из той папки, в которую задание "Transaction Log Backup Job for DB Maintenance Plan <Имя плана обслуживания>" на первичном сервере со-храняет копии журналов транзакций. Кроме того, у неё должны быть права на запись в папку, где копии журналов транзакций будут храниться на вторичном сервере. 1.2.2 Задание: "Log Shipping Restore for <Имя вторичного сервера>. <Имя БД_logshipping>" Это задание восстанавливает копии журналов транзакций на вторичном сервере. 1.2.3 Задание: "Transaction Log Backup Job for DB Maintenance Plan <Имя плана об-служивания>" Это задание создается только в том случае, если предусмотрена необходимость смены ролей серверов. Функциональные возможности состоят в том, чтобы при смене ролей серверов создавать резервные копии журнала транзакций уже на вторичном сервере. У этого задания должен быть отключен статус "Enabled".
Данное задание запускает хранимую процедуру msdb.dbo.sp_log_shipping_monitor_restore, которая и звлекает название файла последней резервной копии журнала из поля last_backup_filename таблицы msdb..log_shipping_primaries, и вытаскивает из названия файла дату его создания. Далее дата создания файла последней резервной копии журнала транзакций сравни-вает с датой, полученной из поля last_loaded_filename таблицы msdb..log_shipping_secondaries. Если разница в минутах между двумя этими значениями больше чем значение поля log_shipping_secondaries.out_of_sync_threshold, задание завершается с ошибкой. То есть проверяется, чтобы время, прошедшее между созданием последней резервной копией журнала и ее восстановлением на вторичном сервере не превышало заданного при настройке Log Shipping значения. И таким образом проверяется, что период рассинхронизации не превышает за-данный интервал. 1.3.2 Задание: "Log Shipping Alert Job - Backup" Это задание запускает процедуру msdb.dbo.sp_log_shipping_monitor_backup. В процедуре сравнивается дата из поля last_updated таблицы log_shipping_primaries с текущей датой и если разница больше, чем значение поля backup_threthold таблицы log_shipping_primaries, задание за-вершается с ошибкой. То есть это задание поверяет, чтобы промежуток времени, прошедший с момента создания последней резервной копии, не превышает установленного значения. Следует также заметить что проверка производится в курсоре по всем строкам таблицы log_shipping_primaries, и если хоть одно значение поля last_updated отличается от текущей даты более чем задано в поле backup_threthold, задание завершится с ошибкой. Поэтому могут возникать такие ситуации, когда задание завершилось с ошибкой и помечено красным кружком, а на сервере мониторинга показано что пара первичный-резервный сервер находятся в синхронизации друг с другом. Эти два задания по умолчанию выполняются раз в минуту и записывают сообщения об ошибках в журнал приложений операционной системы. Важно: Серверы должны быть синхронизированы по времени и формат времени должен быть одинаковым (то есть, например, на всех серверах использовать 24 часовой формат времени), иначе это может привести к тому, что задания передачи журналов будут завершаться с ошибками. Также к ошибкам могут приводить следующие причины:
Для того чтобы лучше понять, как функционируют задания передачи журналов, в Приложении к этой статье будет приведена схема работы Log Shipping. 2 Параметры Log Shipping, доступные уже после его настройки 2.1 Изменение параметров подключения к серверу мониторинга Для того чтобы изменить учетную запись, под которой первичный и вторичный сервер под-ключаются к серверу мониторинга, необходимо открыть список объектов в Enterprise Manager, выбрать базу данных, для которой настроена передача журналов, и из контекстного меню выбрать пункт "Properties". Появится окно свойств базы данных, показанное на Рисунке 1. Рисунок 1. Окно свойств базы данных Из информации на вкладке "General", в окне свойств
базы данных, можно увидеть, что данный сервер играет роль
первичного, а также можно узнать имя плана обслуживания, время
создания последней полной копии БД и последней копии журнала
транзакций, и определить какой сервер является сервером
мониторинга. Рисунок 2. Log Shipping Details 2.2 Добавление возможности изменения роли серверов Для этого в Enterprise Manager в дереве объектов необходимо выбрать <Имя Резервного Сервера> -> Management -> Database Maintenance Plan, в окне детализации выбрать план об-служивания, и в контекстном меню выбрать пункт "Properties". В открывшемся окне перейти на вкладку "Log Shipping". Выбрать нужный вторичный сервер и нажать кнопку "Edit". Рисунок 3. Database Maintenance Plan В окне "Edit Destination Database" в разделе "Future Primary Option" установить флаг "Allow Database to assume primary role", и задать путь к локальной папке вторичного сервера, в ко-торую в случае смены ролей SQL Server будет записывать копии журнала транзакций. 2.3 Изменение состояния базы данных на резервном сервере после восстановления; изменение поведения сервера при восстановлении журнала, когда имеются подключения к БД; изменение частоты копирования и восстановления Все эти настройки доступны на следующей вкладке "Initialize" окна "Edit Destination Data-base" (Рисунок 4. Вкладка Initialize) Рисунок 4. Вкладки General и Initialize Раздел Secondary Load State: Если выбран параметр "No Recovery Mode", после
восстановления следующей копии журнала на резервном сервере
база данных будет недоступна пользователям. Раздел Schedules: Параметр "Copy Frequency" задает частоту копирования
файлов копий журналов из папки первичного сервера в папку на
вторичном сервере. 2.4 Настройка допустимого времени, в течение которого сервера могут находиться в со-стоянии рассинхронизации; настройка времени задержки восстановления; настройка периода хранения копий журналов транзакций и истории Все эти параметры также доступны в окне "Edit Destination Database" на вкладке "Threshold" (Рисунок 5. Вкладка "Thresholds"). Рисунок 5. Вкладка Thresholds Параметр "Out Of Sync Threshold" задает максимальный
промежуток времени, который может пройти между последним
резервированием журнала транзакций на первичном сервере, и
последним восстановлением журнала транзакций на вторичном
сервере. 2.5 Параметры, которые можно изменить с сервера мониторинга В дереве объектов Enterprise Manager нужно выбрать <Имя Сервера Мониторинга> -> Management -> Log Shipping Monitor. В окне детализации выбрать нужную пару серверов, участвующий в передаче журналов и из контекстного меню выбрать пункт "Properties". Откроется окно "Log Shipping Pair Properties". На вкладке "Status" нет значений, которые можно устано-вить, но можно почерпнуть некоторую информацию (Рисунок 6) Рисунок 6. Окно Log Shipping Pair Properties Перейдем на вкладку "Source" (Рисунок 7) Рисунок 7. Вкладка "Source" "Alert threshold" - время, которое может пройти с
момента создания последней резервной копии журнала до того как
сервер мониторинга выдаст сообщение об ошибке. Рисунок 8. Вкладка "Destination" Здесь можно установить максимально возможное время
рассинхронизации (Alert threshold) и номер сообщения об
ошибке при рассинхронизации (Alert number). 3 Мониторинг передачи журналов После того, как передача журналов настроена, на сервере
мониторинга, в папке "Management", появляется новая
вкладка "Log Shipping Monitor". Некоторые возможности,
доступные с помощью этой утилиты, мы уже рассмотрели в
предыдущем разделе. 4 Где хранится информация о Log Shipping Информация о передаче журналов хранится в базе данных msdb в следующих таблицах:
Эти таблицы присутствуют на всех серверах, участвующих в
передаче журналов. При этом на каждом из серверов данными
заполняется только часть таблиц, в зависимости от того, какую
функцию выполняет сервер в процессе передачи журналов:
является ли он первичным, вторичным или сервером
мониторинга. 5 Синхронизация передачи журналов c репликацией транзакций Для того чтобы в случае выхода из строя сервера - издателя, можно было бы его заменить резервным сервером, на который выполняется передача журналов, существует два режима синхронизации Log Shipping с транзакционной репликацией: синхронный и полусинхронный. Для перехода в этот режим для базы данных устанавливается
опция sync with backup. Этот режим используется, когда недопустимы задержки в
работе репликации. Работа Log Reader Agent уже не зависит от
создания резервных копий журнала. При этом резервный сервер
также можно ввести в качестве издателя в случае сбоя
первичного, несмотря на то, что данные не
синхронны. Имейте в виду, что если дистрибьютор и издатель - это один и тот же сервер, то при переходе на резервный сервер, даже после восстановления последней копии журнала с параметром KEEP_REPLICATION, информация о репликации будет неполная на резервном сервере, т.к. сохранится только та информация, которая хранится в пользовательской БД, а информация о репликации хранится также в базах данных Distribution и msdb. Для того чтобы процесс передачи журналов функционировал без
сбоев, администратору необходимо хорошо обдумывать свои
действия и их последствия. 7 Статьи MSDN, в которых описывается, как решать некоторые проблемы, возникающие при настройке и работе Log Shipping Часто повторная настройка Log shipping вызывает ошибку, поскольку остается информация в таблицах от предыдущей настройки. Эта ошибка и методы ее устранения описаны в статье MSDN: Разрешение причин возникновения ошибок в работе заданий Log Shipping Alert Job - Backup и Log Shipping Alert Job – Restore:
А также некоторые причины описаны в пункте
1.3.2 Ошибка, возникающая после добавления нового или удаления одного из файлов базы данных между созданием резервных копий: Не удается произвести смену ролей, когда имена баз данных на первичном и вторичном серверах отличаются: Ошибка, возникающая если имя БД содержит имя устройства (AUX, PRN, COM1, COM2, COM3, COM4): Ошибка, возникающая после обновления версии SQL Server Standard Edition до Enterprise Edition: Ошибка при вызове процедуры sp_resolve_logins, при смене ролей серверов: Ошибка, возникающая при настройке передачи журналов на серверах, задействованных в кластере: Если при конфигурации Log Shipping используется опция No Recovery, а база данных на вторичном сервере в состоянии Standby: Ошибка, возникающая при смене ролей серверов на именованных экземплярах SQL Server: Возросло количество используемого места в журнале после восстановления копий журналов транзакций на вторичном сервере: Ошибка может возникнуть, если на сервере существует DTS пакет, в котором используется Copy Objects Task: Ошибка 3101, возникающая в работе процедуры sp_change_secondary_role:
Если Вы изменили папку, в которой сохраняются копии журнала транзакций через диалоговое окно свойств плана обслуживания, а задание копирования журналов все еще продолжает просматривать старую папку: Ошибка 3456, возникающая при попытке применить копию журнала транзакций: В редких случаях, процесс передачи журналов может вызвать проблему подключения к SQL Server. Это связано с тем, что процессы, которые запущены в рабочем пространстве SQL Server, могут блокировать ресурсы, что препятствует подключению к TCP/IP порту. Это описано в следующей статье: 8 Другие полезные ресурсы в Интернет, затрагивающие передачу журналов и помогающие в разрешении проблем, возникающий в работе Log Shipping
9 Приложение - Схема работы Log Shipping |
|
| ||||||||||||||||
|