Автоматизоване відновлення баз даних MS SQL з бекапів

image
У цій статті я хотів би розповісти про те, як за допомогою утиліти Quick Maintenance & Backup for MS SQL налаштувати автоматичне відновлення баз даних з бекапів на тестовому екземплярі SQL Server в мережі. При цьому створювати бекапи буде штатний План обслуговування. Потреба в автоматизованому відновлення може виникнути в наступних випадках:

  1. Якщо потрібно регулярно актуалізувати бази даних тестових серверах.
  2. Якщо потрібно періодично перевіряти через відновлення створені бекапи: повний, різницевий і журнали транзакцій.
У мережі можна знайти приклади скриптів дозволяють в тій чи іншій мірі автоматизувати ці завдання. Але більшість рішень вимагає хорошого розуміння T-SQL предметної області і швидше за все зажадають зміни ваших Планів обслуговування. Я покажу як це зробити через 15-20 хвилин з допомогою утиліти Quick Maintenance & Backup for MS SQL (QMB). Ми задіємо механізм XML планів відновлення — це XML-файл з послідовністю бекапів, який вміє створювати утиліта. За інформацією в XML файлі програма отримає послідовність бекапів, сформує T-SQL скрипт для відновлення і запускає його на виконання. Докладніше про цю можливість можна почитати тут.

Детальніше про інші можливості утиліти читайте на офіційному сайті, а також в цій статті.

Завдання
Отже, припустимо є робочий SQL Server (Srv01) на якому розгорнуто кілька баз даних Повною моделлю відновлення. На сервері створений План обслуговування з довільною стратегією резервного копіювання. У моєму випадку це:

Повний бекап – щотижня 24.00 у неділю
Різницевий бекап – кожну ніч в 24.00 крім неділі
Бекап лода – кожен день з 9.00 до 23.59 через кожні 1 годину
Бекапи створюються в папці F:\MS SQL\Backup. При цьому для кожної бази агент SQL Server створює окремі папки.

Завдання: кожен день о 23:00 на резервному SQL Server (London) виконувати відновлення баз даних на останнє можливе стан з бекапів створених на Srv01. Обидва сервери знаходяться в єдиній локальній мережі. Після відновлення кожної бази даних необхідно перевірити її цілісність (DBCC CHECKDB). Таким чином, кожен вечір крім неділі, буде виконуватися відновлення Повного бекапа, різницевого і журналів транзакцій, створених протягом дня. У понеділок відновлення буде проводиться з Повного бекапа і журналів транзакцій, створених протягом понеділка. Якщо з якихось причин відновлення не виконається адміністратору має прийти email-повідомлення.

Зрозуміло, що для того, щоб тестовий SQL Server (London) зміг виконати відновлення він повинен мати доступ до файлів резервних копій. Тут можливі два варіанти:

  1. Розшарити папку F:\MS SQL\Backup на Srv01 так щоб вона була доступна на London.
  2. За допомогою QMB копіювати бекапи в мережну папку, яка доступна на London.
Унаслідок додаткової надійності і простоти налаштування ми реалізуємо другий варіант, тобто утиліта буде додатково копіювати файли в мережеву папку.

Загальний порядок дій
Отже, нам потрібно виконати наступні кроки:

  1. Налаштувати загальну мережеву папку
  2. Встановити утиліту QMB
  3. Налаштувати повідомлення і зареєструвати в програмі два SQL Server: Srv01 і London.
  4. Створити в програмі дві нові завдання:

    • Створення XML плану відновлення на мережевому диску

    • Відновлення XML плану з мережевого диска

  5. Створити в програмі два сценарії:

    • Сценарій, на робочому сервері Srv01, виконує створення XML плану відновлення в загальній папці з копіюванням файлів резервних копій. Старт кожен 1 годину.
    • Сценарій, на тестовому сервері London, виконує відновлення XML плану з бекапів, розміщених у спільній папці. Старт кожен день о 23.00.

Нижче розглянемо кожен крок докладніше.

Установка QMB

Утиліту можна завантажити тут. Пробний період — 30 днів.

Я поставив утиліту на тестовому сервері London. У загальному випадку програму можна встановити на будь-якому комп'ютері, що працює цілодобово тобто встановлення саме на SQL Server не обов'язкова. При установці програми залишаємо всі параметри за замовчуванням. Інсталятор встановить службу QmbService і клієнта.

Реєстрація SQL Server і настройка повідомлень

При першому запуску програми відкриється майстер. Перейдемо на наступний крок і встановимо галку «Включити email-оповіщення» і введемо адресу електронної пошти для отримання повідомлень.


Для відправки повідомлень рекомендується налаштовувати власний обліковий запис SMTP, але для простоти ми будемо використовувати вбудовану. Далі введемо ім'я SQL Server і обліковий запис для підключення до SQL Server. Необхідно вказати обліковий запис має привілеї системний адміністратор (за замовчуванням sa).

На наступному кроці програма відобразить версію сервера, ліцензію і ознака стиснення резервних копій. Всі параметри залишаємо за замовчуванням і натискаємо кнопку «Вперед».

У наступному вікні можна налаштувати стеження за вільним місцем на дисках. Якщо в цьому немає необхідності, то зніміть всі чекбокси з дисків.


Тиснемо кнопку «Вперед».

Нам не потрібно обслуговувати бази даних тому на останній сторінці ми виберемо «Створити порожній автономний сценарій». Потім знімемо галку «Створити автономний сценарій для обслуговування системних баз даних» і натиснемо кнопку «Завершити».


Програма зареєструє SQL Server і відкриє форму нового порожнього сценарію.

Створення XML-плану відновлення
Будь-які завдання в програмі виконуються в рамках сценаріїв. У вікні нового автономного сценарію ведемо його ім'я Створення XML плану відновлення.


Додамо в сценарій задачу, яка буде створювати XML файл плану відновлення. Натиснемо кнопку «Додати». Відкриється форма вибору завдання. Кликнемо кнопку «Додати завдання». Відкриється форма нової задачі.


На формі потрібно:

  1. Змінити тип завдання «Створення XML плану відновлення»
  2. Створити нове підключення до спільної папки. У моєму випадку це папка \\Server\Backup на файловому сервері.


    Примітка: Для мережі без домену ім'я користувача необхідно вказувати у форматі: Комп'ютер\Користувач

  3. Вибрати бази даних які увійдуть в XML план відновлення. У моєму випадку це три бази — Account2013, Account2014, Account2015.
  4. Вказати ім'я завдання — Створення XML плану для Account2013, Account2014, Account2015.
Після виконання всіх дій, форма завдання буде виглядати як на малюнку нижче.


Зверніть увагу на ознаку «Копіювати відсутні файли архівних копій в загальну папку». Завдяки цій опції програма автоматично скопіює відсутні файли бекапів з локального диска SQL Server в мережеву папку. При цьому, шлях до файлу джерела програма визначить самостійно за інформацією про створених резервних копіях, яку SQL Server зберігає в системній базі msdb.

Натиснемо кнопку Прийняти і виберемо створену завдання в сценарій. На формі сценарію встановимо прапор «Запуск сценарію за розкладом» і вкажемо розклад: Кожен день, через 1 годину починаючи з 9:30 до 22:30. Нагадаю, що План обслуговування створює бекап лода щогодини з 9:00 до 23:59. Таким чином QMB буде оновлювати XML план відновлення зі зрушенням на 30 хвилин (9:30, 10:30, 11:30 і т. д). Потрібно відзначити, що якщо б бекапи створювалися Політикою обслуговування QMB, то XML файл плану відновлення оновлювався б автоматично.

Сценарій повинен виглядати як на малюнку нижче.


Тепер перевіримо сценарій. Для цього натиснемо кнопку «Виконати». Якщо все налаштовано правильно, то в мережеву папку будуть скопійовані файли резервних копій і створений файл RestorationPlan.xml. Якщо в ході роботи програма не знайде потрібних файлів резервних копій, то завдання завершиться помилкою. Таким чином ми заздалегідь дізнаємося про потенційні проблеми. Наприклад, досить часто, адміністратори для передачі бази даних створюють її повний бекап (без параметра COPY_ONLY), а після передачі відразу видаляють його, щоб він не займав місце. Однак при цьому ланцюжок рветься резервних копій і відновлення на актуальний момент часу стає неможливо. Програма виявить цю проблему ще на етапі створення XML плану відновлення.


Збережемо сценарій. Тепер QMB через кожну годину буде перестворювати XML файл плану відновлення і копіювати нові файли резервних копій, які створює штатний агент SQL Server.
Потрібно зазначити, що завдання створення XML плану копіює файли, необхідні тільки для відновлення на останній можливий момент часу. При цьому файли копіюються без папок тобто всі файли будуть розміщені у вказаній мережній папці. У програмі є можливість налаштувати копіювання підкаталогів, а навіть видалення застарілих файлів в мережній папці. Це можна зробити через власну задачу, що містить CMD скрипт або використовуючи Політику обслуговування QMB.

Відновлення на тестовому сервері
Відновлення XML плану виконується аналогічно, за допомогою спеціальної задачі, розміщеної у сценарії. Однак відновлення повинно виконуватися на тестовому SQL Server (London), тому цей сервер теж необхідно зареєструвати в програмі. Для цього в деревоподібному списку ліворуч натиснемо кнопку «Зареєструвати сервер». Процедура реєстрації сервера повністю аналогічна описаної раніше.

Після реєстрації сервера відкриється вікно автономного сценарію. Введемо найменування Відновлення XML плану з Srv01 і вкажемо його розклад: Кожен день о 23:00.


Тепер з форми сценарію додамо нову задачу, аналогічно до того, як ми створювали завдання для створення XML плану. Однак, тепер у полі тип вкажемо Відновлення XML плану, виберемо раніше створене підключення до мережної папки і вкажемо ім'я XML файлу. Перемикач База джерело визначає які саме бази даних XML плану відновлення необхідно відновлювати.


База даних у яку буде виконано відновлення визначається однойменною перемикачем. У нашому випадку я буду відновлювати в однойменні бази даних. Це означає, що на SQL Server будуть створені/перезаписані бази даних мають аналогічні імена (в моєму випадку це три бази: Account2013, Account2014, Account2015). Таким чином ці бази будуть актуалізуватися до останнього стану.

Режим Відновлювати в тимчасову базу даних слід вибирати, якщо відновлення виконується з метою перевірки файлів резервних копій та процедури відновлення. У цьому режимі QMB створить тимчасову базу з найменуванням qmbTempRestoreDb[Випадковий індекс], яка буде вилучена після відновлення і перевірки її цілісності.

Зберігаємо завдання і вибираємо її в нашому сценарії.


Щоб переконатися, що відновлення пройде успішно виконаємо сценарій в ручному режимі. Програма послідовно відновить кожну базу даних і виконає тестування її цілісності. В залежності від розмірів баз даних процедура може займати значний час.


Збережемо сценарій. Тепер кожен день о 23:00 програма буде автоматично відновлювати бази даних і у разі збою відправляти повідомлення на Email.


Крім цього, використовуючи XML файл плану відновлення, адміністратор за допомогою програми може вручну, у кілька кліків, відновлювати бази даних на інших SQL Server.

З задоволенням відповім на ваші питання в коментарях або по електронній пошті support@qmbsql.ru
Спасибі за увагу!
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.