- Резервне копіювання MS SQL Server 2008, 2008 R2, 2012 і 2014
- Диференціальне резервне копіювання баз даних MS SQL Server 2008, 2008 R2, 2012 і 2014
- Створення резервних копій журналу транзакцій MS SQL 2008, 2008 R2, 2012 і 2014
- Налаштування резервного копіювання MS SQL і конфігурація БД
- Відновлення бази MS SQL з резервної копії
- Варіанти відновлення бази MS SQL з резервної копії
- Відновлення MS SQL на момент часу
- LSN
- Сценарії відновлення MS SQL
- Відновлення бекапа MS SQL з новим ім'ям
- Відновлення MS SQL на локальний диск
- Відновлення бази даних MS SQL «master»
- База даних MS SQL в стані відновлення
Великий функціонал Bacula Enterprise Edition, крім іншого, дозволяє швидко і просто створювати бекапи БД під Windows . Наприклад, мова йде про інструмент, за допомогою якого можна здійснювати резервне копіювання MS SQL Server. Зробити бекап MS SQL користувач може, створюючи резервні копії специфічних баз даних MS SQL великих обсягів, що використовуються платформою Windows, при менших витратах на ПО сторонніх виробників, з можливістю відновлення даних до певного моменту часу (PITR-відновлення) на мережевий і локальний диск.
Скрипт Bacula Systems для створення резервних копій MS SQL Server характеризується крайньою ефективністю, що досягається за рахунок реалізації сучасної, високонадійній архітектури. Більш того, ПО дозволяє зробити бекап MS SQL Server, використовувати найрізноманітніші можливості по створенню резервних копій MS SQL.
Скрипт бекапа MS SQL Bacula Systems функціонує незалежно від VSS. Це означає, що інструмент резервного копіювання MS SQL не використовує снапшоти VSS для створення резервних копій. Тому користувач може задати таке значення "Enable VSS = no" в Bacula FileSet. Ефективне створення резервних копій MS SQL Server і їх відновлення за допомогою даного рішення досягаються за рахунок використання Microsoft API для SQL Server. Завдяки цьому Bacula Systems може підтримувати роботу механізмів забезпечення захисту і всі типи перевірки автентичності, реалізовані в Microsoft SQL Server.
Створення резервних копій журналу транзакцій MS SQL і відновлення MS SQL на момент часу: ПО Bacula Enterprise Edition дозволяє відновлювати блоки даних MS SQL або конкретні настройки до певного моменту часу. Завдяки реалізації моделей повного відновлення і відновлення з неповним протоколированием ви зможете відновлювати MS SQL, використовуючи PITR-відновлення, або використовувати LSN для відновлення системи до конкретного стану. Ви можете відновлювати певний стан бази даних MS SQL на будь-який конкретний момент часу з точністю до секунди. У разі бекапа журналу транзакцій MS SQL, при відновленні стан БД буде відновлюватися з різних обраних бекапов.
Короткий огляд функцій автоматичного бекапа і відновлення MS SQL з Bacula Enterprise
Компанія Bacula Systems створила плагін для резервного копіювання MS SQL Server для спільного використання з Bacula Enterprise Edition. Бекап MS SQL Server з Bacula володіє наступними функціями:
- Підтримка повного і диференціального резервного копіювання MS SQL
- Підтримка інкрементального резервного копіювання MS SQL
- Резервне копіювання MS SQL на мережевий і локальний диск
- Резервне копіювання MS SQL за розкладом
- Створення резервних копій на рівні бази даних MS SQL Server
- Можливість включати / виключати БД з процедури створення резервних копій
- Підтримка створення резервних копій БД «тільки для читання»
- Відновлення MS SQL бекапов на диск
- Відправка потоку резервної копії безпосередньо в Storage Daemon
- Відновлення MS SQL на момент часу
Огляд і настройка резервного копіювання MS SQL 2008, 2008 R2, 2012 і 2014
В даному документі представлені рішення для Bacula Enterprise Edition 8.4 і пізніших версій, які не підтримуються попередніми версіями ПЗ. Створення резервних копій бази MS SQL був протестований і підтримується MS SQL 2003 R2, MS SQL 2008 R2, MS SQL 2012 MS SQL 2005, MS SQL 2008, MS SQL 2014. Можлива робота резервного копіювання MS SQL від Bacula з SQL Express.
Глосарій резервного копіювання MS SQL 2008, 2008 R2, 2012 і 2014
- MS SQL означає Microsoft SQL Server.
- Журнал транзакцій (transaction log). Будь-яка база даних MS SQL Server має журнал транзакцій, в який записуються всі транзакції і модифікації БД, виконані в ході таких транзакцій. Журнал транзакцій - важливий елемент БД. У разі відмови системи журнал транзакцій може знадобитися для відновлення БД до робочого стану. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en-us/library/ms190925.aspx .
- Диференціальне резервне копіювання бази даних MS SQL Server. Диференціальний бекап заснований на останньому повному бекапе БД . В ході виконання диференціального бекапа захоплюються тільки ті дані, які були змінені з моменту створення останнього повного бекапа. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en- us / library / ms175526.aspx .
- Повне резервне копіювання бази даних MS SQL Server. В ході повного бекапа БД створюється резервна копія всієї бази даних. Бекап включає частину журналу транзакцій з метою відновлення повної БД з резервної копії. Повні бекапи БД містять БД на момент завершення створення резервної копії. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en- us / library / ms186289.aspx .
- Бекап «тільки для копіювання» (CopyOnly). Бекапи «тільки для копіювання» представляють собою бекапи MS SQL, що не залежать від звичайної послідовності створення традиційних резервних копій SQL Server. Іноді корисно створювати бекапи для особливих потреб, не впливаючи на загальний процес резервного копіювання і відновлення БД. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en-us/library/ms191495.aspx .
- VDI (Інтерфейс віртуального пристрою) - це технологія Microsoft, що дозволяє створювати іменований канал між програмами.
- <glob> стандартні маски задають набори рядків з підстановочних знаками. Наприклад, стандартна маска production * включатиме рядки production1 і production2.
- <str> рядок
- <bytes> ціле число.
- LSN Кожен запис в журналі транзакцій MS SQL Server позначається за допомогою унікального реєстраційного номера транзакції (LSN). Більш детальну інформацію ви знайдете за посиланням https://technet.microsoft.com/en-us/library/ms190411%28v=sql.105%29.aspx .
Резервне копіювання MS SQL Server 2008, 2008 R2, 2012 і 2014
Повне резервне копіювання баз даних MS SQL Server 2008, 2008 R2, 2012 і 2014
В ході повного резервного копіювання бази даних MS SQL зберігаються файли БД і журнал транзакцій, що дозволяє повністю захистити базу MS SQL на випадок відмови носія. У разі пошкодження одного або більше файлів відновлення бази MS SQL з резервної копії дозволить відновити всі вчинені транзакції. Також буде проведений відкат всіх транзакцій, які перебували в процесі виконання. В даному режимі проводиться створення резервних копій БД master і mbdb.
Диференціальне резервне копіювання баз даних MS SQL Server 2008, 2008 R2, 2012 і 2014
Диференціальний бекап бази MS SQL Server заснований на самому останньому повному бекапе бази даних MS SQL. В ході створення диференціального бекапа MS SQL захоплюються тільки ті дані, які були змінені з моменту створення останнього повного бекапа MS SQL. Для функції диференціального бекапа MS SQL вкрай важлива послідовність резервних копій. Якщо з якоїсь причини повний бекап, на який посилається MS SQL, не доступний, диференціальні бекапи бази даних MS SQL Server не можна буде використовувати. Резервне копіювання MS SQL від Bacula використовує певні методи для вирішення даної проблеми. Тому, в разі виникнення складнощів, статус диференціального бекапа БД може бути автоматично підвищено до повного бекапа.
Створення резервних копій журналу транзакцій MS SQL 2008, 2008 R2, 2012 і 2014
Функція створення бекапа журналу транзакцій MS SQL реалізується на Інкрементальний рівні за допомогою ПО Bacula. БД MS SQL повинна бути налаштована за допомогою моделей повного відновлення і відновлення з неповним протоколированием. Якщо MS SQL використовує просту модель відновлення, файл журналу транзакцій буде «урізати» після кожної контрольної точки, і бекап журналу транзакцій не дозволить реалізувати відновлення до обраної конкретної точки, тобто PITR-відновлення. Можна буде відновити базу даних MS SQL повністю, але не можна буде вибрати контрольну точку. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en-us/library/ms189275.aspx .
Налаштування резервного копіювання MS SQL і конфігурація БД
Необхідно завжди створювати резервну копію БД master. Якщо БД master буде так чи інакше пошкоджена, наприклад, в результаті відмови носія, можливо, не вийде запустити інстанси MS SQL. В такому випадку, необхідно відновити БД master, і тільки потім відновити з резервної копії саму БД. Можливе створення тільки повних резервних копій бази MS SQL. Більш детальну інформацію ви знайдете за посиланням https://technet.microsoft.com/en-s/library/aa213839%28v=sql.80%29.aspx .
Відновлення бази MS SQL з резервної копії
Ви можете використовувати всі стандартні способи запуску процедури відновлення бази MS SQL з резервної копії. Однак ви повинні переконатися в тому, що, в разі відновлення диференціальних даних, буде також відновлено повний попередній бекап бази MS SQL. В такому випадку відновлення відбувається автоматично, якщо ви запускаєте його в консолі bconsole за допомогою варіантів відновлення 5 або 12. У згенерованої файлової структурі вам необхідно відзначити відновлення повних БД або інстанси БД.
Варіанти відновлення бази MS SQL з резервної копії
ПО Bacula Enterprise Edition дозволяє користувачам використовувати безліч варіантів відновлення MS SQL і застосовувати найрізноманітніші способи «відкату» БД. Найбільш часто використовувані варіанти відновлення описані нижче:
- параметр Where: У випадку з Bacula Enterprise Edition, даний параметр дозволяє адміністратору відновлювати БД в конкретному місці.
- параметр Replace: Використовується для того, щоб визначити, як ПО Bacula має поводитися з поточної БД при відновленні. Резервне копіювання MS SQL від Bacula також дозволяє використовувати ще кілька опцій при відновленні, наприклад:
- Instance: Оскільки MS SQL використовує кілька інстанси, бекап бази MS SQL від Bacula дозволяє вибирати, який з інстанси слід відновлювати. Даний параметр є опціональним, і, якщо він не заданий, при відновленні буде використовуватися значення, задане при створенні бекапа. За замовчуванням, використовується інстанси з ім'ям "MSSQLSERVER".
- Database. Дана опція вказує ім'я БД для відновлення і вона використовує значення, задане в момент створення БД. Даний параметр є опціональним. За замовчуванням резервне копіювання баз даних SQL Server використовує параметр Where для визначення імені нової БД. Якщо обома параметрами Where і Database призначені валідності ім'я БД, то параметр Database буде використовуватися.
- User. Ім'я користувача, що використовується для підключення до інстанси бази даних MS SQL. Даний параметр є опціональним, і, якщо він не заданий, при відновленні буде використовуватися значення, задане при створенні бекапа.
- Password. Пароль, який використовується для підключення до інстанси бази даних MS SQL. Даний параметр є опціональним, і, якщо він не заданий, при відновленні буде використовуватися значення, задане при створенні бекапа.
- Domain. Домен, який використовується для підключення до інстанси бази даних MS SQL. Даний параметр є опціональним, і, якщо він не заданий, при відновленні буде використовуватися значення, задане при створенні бекапа.
- Recovery. Параметр дозволяє визначити, чи буде проведений відкат БД до попереднього стану при відновленні чи ні. За замовчуванням при відновленні БД буде справить відкат до попереднього стану.
- Stop_before_mark. Умова WITH STOPBEFOREMARK = <point> використовується для того, щоб вказати, що запис в журналі транзакцій, яка знаходиться безпосередньо перед прапором, і є точкою відновлення. Точкою відновлення може служити дата і час, номер LSN або ім'я прапора mark_name.
- Stop_at_mark. Умова WITH STOPATMARK = <point> використовується для того, щоб показати, що позначена транзакція є точкою відновлення. STOPATMARK переміщається вперед до прапору і включає повтор поміченої транзакції. Точкою відновлення може служити дата і час, номер LSN або ім'я прапора mark_name.
- Stop_at = <datetime>. Умова WITH STOPAT = <datetime> використовується для того, щоб вказати, що точкою відновлення є дата / час.
- Restrict_user. Умова WITH RESTRICT_USER використовується для обмеження доступу до відновленої БД. За замовчуванням використовується значення no.
В програмі BWeb Management Suite , Створеної Bacula Systems, настройка резервного копіювання MS SQL знаходяться на вкладці відновлення.
Малюнок 1: Вкладка відновлення БД при використанні програми BWeb Management Suite
Відновлення MS SQL на момент часу
Дане питання відноситься тільки до тих БД SQL, які використовують моделі повного відновлення і відновлення з неповним протоколированием. У разі моделі відновлення з неповним протоколированием, якщо бекап журналу містить зміни, зроблені під час операцій масової обробки даних, то неможливо буде виконати відновлення на будь-який момент часу в межах цього бекапа. БД повинна бути відновлена до кінця журналу транзакцій, бекап якого був створений. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en-us/library/ms179451.aspx .
Відновлення MS SQL на момент часу можна здійснювати безпосередньо з плагіна бекапа MS SQL. Також можна відновлювати файли локально і виконувати операції з консолі управління Microsoft SQL Server Mangement Console, щоб мати можливість використовувати більше можливостей.
LSN
LSN номера використовуються для створення послідовності відновлення MS SQL з метою відстеження моментів часу, до якого дані були відновлені. При відновленні MS SQL з резервної копії дані відновлюються до LSN номера, відповідного моменту часу, в який був виконаний бекап. Більш детальну інформацію ви знайдете за посиланням https://msdn.microsoft.com/en-us/library/ms190925.aspx .
LSN номер запису в журналі, в момент якої виникло конкретне подія зі створення бекапа і відновлення, можна переглянути одним із таких способів:
- При виведенні опису завдань зі створення бекапа за допомогою ПО Bacula
- У назві файлу журналу
- У таблиці msdb.backupset
- У таблиці msdb.backupfile
При виконанні завдання по створенню бекапа бази MS SQL при виведенні опису завдання відобразиться наступна інформація про LSN номерах:
Номер First LSN відповідає останньому LSN номеру останнього бекапа журналу транзакцій. Таким бекапом може бути найперший повний бекап або останній бекап (інкрементальний).
Номер Last LSN відповідає останньої транзакції, зареєстрованої в журналі.
У разі бекапа журналу транзакцій (інкрементального), назва файлу, пов'язаного з цією БД, в завданні по створенню інкрементального бекапа буде виглядати наступним чином:
Число в назві, в нашому випадку 42000162001, відповідає останньому LSN номеру попереднього завдання (по створенню повного або інкрементального бекапа).
Малюнок 2: Перший номер LSN, останній номер LSN і номера LSN в назві файлів
Як показано в прикладі на малюнку 2, якщо адміністраторові необхідно відновити базу даних MS SQL в стан, що відповідає LSN номеру 14, можна виконати наступні дії:
- В меню відновлення БД використовуйте опцію 5
- Виберіть директорію БД "/ @ mssql / db29187"
- Виберіть останній файл повного бекапа "data.bak" (LSN: 10)
- Виберіть інкрементальний бекап "log-10.trn"
- Задайте параметр stop_at_mark рівний "lsn: 14"
- Запустіть завдання з відновлення бекапа
Або, якщо останній повний бекап MS SQL Server не доступний, проте доступний попередній повний бекап, то:
- Використовуйте опцію відновлення 3, виберіть відповідні значення jobids
- Виберіть директорію БД "/ @ mssql / db29187"
- Виберіть файл повного бекапа "data.bak" (LSN: 2)
- Виберіть інкрементальні бекапи "log-2.trn", "log-3.trn", "log-10.trn"
- Задайте параметр stop_at_mark рівний "lsn: 14"
- Запустіть завдання з відновлення бекапа
Сценарії відновлення MS SQL
ОписWhereDatabaseПрикладВідновити файли на диск Шлях where = c: / tmp Відновити вихідну БД where = / Відновити з новим ім'ям Ім'я where = newdb Відновити з новим ім'ям Ім'я database = newdb Відновити з новим ім'ям і перемістити файли Ім'я
where = c: / tmp
database = newdb
Таблиця 1: Сценарії відновлення MS SQL
2.3.1 Відновлення бази MS SQL з вихідним ім'ям
Щоб відновити БД з вихідним ім'ям, параметр Where повинен бути не заданий (пусте значення), або має бути встановлено значення "/", а параметру Replace повинно бути присвоєно значення Always, або ж спочатку необхідно видалити вихідну БД.
Відновлення бекапа MS SQL з новим ім'ям
Щоб відновити бекап бази даних MS SQL з новим ім'ям, можливо, спочатку потрібно перемістити файли БД на диск. Все залежить від того, чи існує ще вихідна БД.
Якщо вихідна БД більш не доступна, то параметр where, або поле "Plugin Options" може містити назву нової БД. Резервне копіювання MS SQL від Bacula автоматично створить БД з новим ім'ям.
Якщо вихідна БД все ще поки потрібно, параметр where буде використовуватися для переміщення файлів на диск, і необхідно буде задати назву нової БД за допомогою меню "Plugin Options". У дереві відновлення необхідно вибрати файл layout.dat.
Використовуючи каталог My Catalogue
Запустіть задачу відновлення MS SQL:
Використовуючи каталог My Catalogue, запустіть завдання відновлення бази MS SQL:
Відновлення MS SQL на локальний диск
Якщо вказати where = c: / path /, файли будуть відновлені на локальний диск, і адміністратор бази даних MS SQL зможе використовувати процедурне розширення TSQL для консолі управління Microsoft SQL Server Mangement Console для відновлення БД. Команди SQL, необхідні для відновлення БД, перераховані в описі Job output як показано на малюнку нижче.
Відновлення бази даних MS SQL «master»
Інструкції по відновленню БД "master" докладно викладені на сторінці: https://technet.microsoft.com/en-us/library/aa213839%28v=sql.80%29.aspx
База даних MS SQL в стані відновлення
По завершенню відновлення MS SQL, якщо опціонально параметру Recovery було присвоєно значення No, відновлена БД буде перебувати в стані «відновлення». Щоб завершити процес відновлення, необхідно запустити процедуру відкоту БД. Для цього використовуйте наступну команду SQL: