gifts2017

Оперативный бэкап средствами SQL 2005

Опубликовал Алексей С. (AlexS2) в раздел Администрирование - Архивирование (backup)

Пошаговая инструкция по настройке оперативного бэкапа SQL 2005 и Maintenance Plan, как примапить сетевой диск из SQL. Процедура восстановления после сбоя.

В качестве вступления, хотел бы отметить, что данная инструкция ни в коей мере не претендует на "истину в последней инстанции", такая задача не ставилась. Просто скомпилировал некоторый опыт, который, вероятно, может быть вам полезен в практике. Итак...

Имеется: рабочий сервер БД с СУБД SQL 2005 (9.0), с несколькими БД 1C 8;

1 раз в сутки выполняется резервное копирование полного бэкапа на ленту;

 

Задача:

Обеспечить оперативное резервное копирование в течение дня, а именно:

- иметь полную копию на начало дня , хранится 1 сутки, затем перезаписывается;

- иметь копии Transaction Log (TL) через каждые 20 минут;

- актуальность копий Transaction Log 1 сутки, по прошествии - должны удаляться;

- оперативные бэкапы хранятся на сетевом диске (NAS);

 

Решение:

Необходимое условие: пользователь, под которым запускается SQL Server agent (ну и SQL Server, на всякий случай), должен иметь права на сетевой ресурс NAS сервера, куда будут складываться бэкапы. Кроме того, Recovery Model базы, которую планируется бэкапить должна быть Full.

1. Обеспечить возможность поключения SQL сервера к сетевому диску N:.

1.1. Предварительная операция, требуется для включения расширенных опций SQL 2005 (Т-SQL):

 

-- To allow advanced options to be changed.

EXEC sp_configure 'show advanced options', 1

GO

-- To update the currently configured value for advanced options.

RECONFIGURE

GO

-- To enable the feature.

EXEC sp_configure 'xp_cmdshell', 1

GO

-- To update the currently configured value for this feature.

RECONFIGURE

GO

 

1.2. Непосредственно подключение логического диска (T-SQL):

 

EXEC xp_cmdshell 'net use N: \\SRV-nas\1c_backup'

GO

 

2. Настраиваем Maintenance Plan (MP) из 2-х подпланов:

- subplan_1 - полный бэкап по расписанию;

- subplan_2 - бэкап Transaction log и удаление бэкапов Transaction log с датой ранее 1 дня, по расписанию ;

2.1. Полный бэкап (Full) будет перезаписываться поверх предыдущего, поэтому создаем Backup Device на сетевом диске (T-SQL)*:

 

USE master

EXEC sp_addumpdevice 'disk', 'FULLBAK', '\\SRV-nas\1c_backup\FullBak.bak'

GO

 Таким образом, в Server Objects\Backup device появляется новое устройство FULLBAK.

2.2. Запускаем мастер Мaintenance Рlan Wizard.

2.3. Указываем Separate shedules for each task (отдельные расписания для каждой задачи)

2.4. В задачах выбираем: – Back up Database (FULL); - Back up Database (Transaction Log),

т.о. получаем 2 подплана;

2.5.Настраиваем subplan_1: выбираем базы для копирования, выбираем Back up databases across one or more files, кнопкой ADD выбираем подключенное устройство FULLBAK, в If backup files exist выбираем “owerwrite”, настраиваем расписание для выполнения задачи Shedule кнопкой change - выполнение каждый день в определенное время (в моем случае до начала рабочего дня, в 7:00).

2.6. Настраиваем subplan_2:

- выбираем базы для копирования;

- выбираем create a backup file for every database

 - указываем путь к папке на диске N:, куда будут складываться бэкапы TL; 

- настраиваем расписание Shedule - каждые двадцать минут в интервале, например, с 07:20 до 23:00;

2.7. Сохраняем, открываем на редактирование (Modify в дереве Management\Maintenance plans) наш сохраненный Maintenance Plan.

2.8. В subplan_2 drag-and-drop мышью добавляем из Toolbox задачу Maintenance Cleanup Task.

2.9. Щелкаем Edit по этой задаче, в пункте Search folder and delete files based on an extension, поле Folder выбираем папку, куда складываются файлы бэкапа Transaction Log. В поле File extension (расширение файлов) ставим trn. В Delete files older than following, согласно задаче, ставим 1 сутки. Соединяем стрелкой обе подзадачи (бэкап и удаление), чтобы они выполнялись по одному расписанию.

 

3.0. Сохраняем наш Maintenance Plan, он готов к выполнению.

 

4. Теперь о процедуре восстановления в случае сбоя в течение рабочего дня.

4.1. Сделать вручную выгрузку бэкап Transaction Log, чтобы зафиксировать последние данные на момент сбоя.

4.2. Восстановить  утренний Полный бэкап

4.3. Восстановить последовательно все бэкапы Transaction Log, сохраненные после полного бэкапа включая сохраненный п. 4.1.

4.4. Т.о. база приводится в состояние "до сбоя".

 

 

Источники:

http://www.itcommunity.ru/blogs/rsug/archive/2009/02/27/55814.aspx

http://dev.net.ua/blogs/kosinsky/archive/2009/02/27/7810.aspx

http://msdn.microsoft.com/en-us/library/ms190693.aspx

http://www.sql-server-performance.com/articles/dba/creating_backup_jobs_p1.aspx

http://www.sql.ru

http://razbezhkin.rpod.ru/all/

http://www.gilev.ru/1c/mssql/backup.htm 

http://alexeistar.blogspot.com/2010/11/sql-2005.html (мой личный блог) 

и т.д.

 

 * Есть альтернативный вариант, при котором так же, как и для бэкапа Transaction Log, можно обойтись без создания Backup Device , воспользовавшись Create a backup file for every database. Это несколько упростит процедуру, но не расширит ваши знания. )

 

 

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Наталия Мастербатова (zzz_natali) 17.11.10 16:13
Ну, в майтенансах ты Америку не открыл, да и у каждого сисадмина свое видение бэкапирование, а за приклеивание алиаса FULLBAK для резервного копирования в сетевом окружении ставлю плюсик.
2. Алексей С. (AlexS2) 17.11.10 17:11
На самом деле, открытия Америки нет и в остальном. Источники все в публикации... Спасибо за плюсик. :)
3. Денис Яковлев (iceflash) 24.11.10 05:59
Старо, очень, как мир=) Лучше бы по больше информации о постгрес
4. Евгений Саранин (exEVil) 18.08.11 10:59
Да постгри тоже нужно обсуждать, как ника альтернатива.
5. Анатолий Доброрадов (dob_a) 13.10.11 14:41
Спасибо большое, мне как начинающему админу как раз кстати, то что нужно.
6. Александр Ф (leon111) 16.01.12 10:51
Спасибо за информацию! пригодилась)
7. Александр Перевислый (sashapere) 09.04.12 09:29
Спасибо за статейку , :) буду осваивать! , для начало то что нужно! тем кто знает что делать эта статья конечно ничего не даст, но для того кто только начинает это то что нужно, потомучто рыться в тоннах документации незная что толком нужно это край.
8. Сергей (KruS) 20.05.13 10:51
Какому пользователю необходимо давать права на сетевом ресурсе для успешного бэкапа на устройство резервного копирования?
9. Сергей (KruS) 20.05.13 11:14
Вопрос возник в связи с тем, что запуск служб SQL сервера и Агента SQL сервера по-умолчанию осуществляется от имени локальной учетки.
Проблему решил создав в домене специальную учетку и перенастроил службы на запуск от имени этой учетки.