Всех приветствую! И вновь речь пойдет о продукте компании Microsoft – System Center 2012 R2 Data Protection Manager (DPM) . В каждом программном продукте есть свои нюансы и DPM в этом плане не исключение. В данной статье рассмотрю особенности, которые необходимо учесть при планировании резервного копирования баз данных Microsoft SQL.
Будьте в курсе актуальных новостей в мире ИТ: https://t.me/ITKBnews. Также будем рады видеть Вас участниками групп https://vk.com/blogitkb и https://www.fb.com/blog.it.kb
Начнем с того, что для начала нужно
1. Установить агента на сервер SQL (примере будет использоваться server2). Проверить его доступность. 2. После установки придется перезагрузить защищаемый сервер (в нашем случае server2 - SQL) После перезагрузки состояние подключение к агенту должно быть - OK 3. Создать группу защиты (Protection Group) 4. Выбрать базы для защиты Есть два варианта: Автоматический – выбираются все базы И второй вариант - выбор в ручном режиме
Если не появляется, то
Вариант 1 (в примере для SQL Server 2008 R2):
Зайти на SQL сервер
В командной строке выполнить
cd C:\Program Files (x86)\Microsoft SQL Server\100\Shared\
mofcomp sqlmgmproviderxpsp2up.mof
В результате должно быть вот такое сообщение:
Microsoft (R) MOF Compiler Version 6.2.9200.16398
Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
Parsing MOF file: sqlmgmproviderxpsp2up.mof
MOF file has been successfully parsed
Storing data in the repository…
Done!
Вариант 2:
Выполнить в командной строке на SQL сервере
vssadmin list writers
Убедиться, что SqlServerWriter присутствует без ошибок
Writer name: 'SqlServerWriter'
Writer Id: {a65faa63-5ea8-4ebc-9dbd-a0c4db26912a}
Writer Instance Id: {ceec6494-3f21-4a80-a62e-fa1d754343bc}
State: [1] Stable
Last error: No error
Если нет, то проверить корректность именования баз данных, т.е. в имени баз не должны быть пробелы. Если таковые базы есть, то исправить их имя – убрать пробелы.
В SQL Management Studio выполнить запрос вида:
select name from sys.databases WHERE right(name,1) = ' '
5. После выбора баз назвываем группу. В примере,
SQL – тип защищаемого ресурса
7d – срок хранения данных 7 дней
2h – период синхронизации каждые 2 часа
Sync – выполнение инкрементального резервного копирования
6. Определить модель базы данных (Full, Simple)
!!!Важный момент!!!
Если база SQL находится в Full режиме, то можно выполнять полное резервное копирование (Express Full Backup) и инкрементальное (Syncronization). При инкрементальном (Syncronization) резервном копировании лог файлы базы (*.ldf) будут усекаться (truncate), НО НЕ сжиматься (shrinking).
Если база SQL находится в Simple режиме, то доступно только полное резервное копирование (Express Full backup) , п.ч. в таком режиме у базы нет лог файла (*.ldf).
Вариант определения режима базы:
1) Выполнить SQL запрос
SELECT name AS [Database Name], recovery_model_desc AS [Recovery Model] FROM sys.databases order by [Recovery Model] GO
Дополнительно: SQL SERVER – Four Different Ways to Find Recovery Model for Database
2) Выполнить PowerShell скрипт
Часть кода
<# .SYNOPSIS USING POWERSHELL TO LIST SQLSERVER USER DATABASES WITH SIMPLE RECOVERY .DESCRIPTION The function call requires three parameters Inputfile, RecoveryModel(Full,simple,bulklogged) and Database flag ($TRUE=System Database,$FALSE=User Database) .EXAMPLE 1.PS:\>Get-RecoveryModel -InputFile F:\PowerSQL\Server.txt -RecoveryModel "SIMPLE" -DatabaseFlag $FALSE 2.PS:\>Get-RecoveryModel -InputFile F:\PowerSQL\Server.txt -RecoveryModel "FULL" -DatabaseFlag $TRUE .NOTES Author : Powershellsql@gmail.com .LINK http://sqlpowershell.wordpress.com/ #>
Function Get-RecoveryModel { param( $InputFile, $RecoveryModel, $DatabaseFlag ) [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null ForEach ($instance in Get-Content $InputFile) { $s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $instance $dbs=$s.Databases| where {$_.RecoveryModel -like "$RecoveryModel" -and $_.IsSystemObject -eq $DatabaseFlag } $dbs | select @{Name="ServerName"; Expression = {$Instance}}, Name, RecoveryModel } }
Пример вывода результата в HTML
Полная версия скрипта доступна по ссылке - USING POWERSHELL TO LIST SQLSERVER USER DATABASES WITH RECOVERY MODEL
7. Определить периодичность инкрементальной копии (synchronization) и полной копии (Express Full Backup).
8. Определить как данные будут располагаться в пуле дисков. Для большого количества ресурсов рекомендуется совместить (co-locate data), т.е. в одном динамическом диске будет размещаться несколько защищаемых ресурсов. Также можно выключить автоматическое расширение разделов (volume) в случае не хватки места.
Примечание: После окончательной настройки группы защиты создадутся динамические диски, которые можно будет увидеть в диспетчере управления дисками (Disk Management)
9. Первоначальную реплику можно создать
- в автоматическом режиме
- сразу же (Now)
- по расписанию (в наименее нагруженное время для сети и дисковой подсистемы DPM и SQL)
- в ручном режиме (после создания группы нужно будет нажать синхронизация из раздела защиты “Protection”)
10. Выбрать параметр проверки консистентности данных “consistency check ” (т.е. целостности) в случае возникновения ошибок.
При этом стоит помнить, что consistency check запускается через 15 минут после того как реплика стала не консистентной (т.е. данные между DPM хранилищем и защащаемыми данными разные на блочном уровне “ block-by-block verification ”).
Этот параметр можно изменить, также как и количество попыток
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Configuration] "AutoCCDelay"=dword:00000015 "AutoCCNumberOfAttempts"=dword:00000004
Рекомендуется устанавливать consistency check на время, когда меньше всего нагружены сеть, диски DPM и диски защищаемого сервера.
11. Для завершения создания группы защиты необходимо нажать “Create group”
12. После успешного создания группы первая синхронизация может не пройти
Решается это добавлением прав для DPM на SQL сервере.
Идем на SQL сервер и делаем согласно рекомендациям.
Добавляем NT Service\DPMRA
Запускаем проверку на консистентность, т.е. целостность данных реплики и SQL ресурса
Соглашаемся
Наблюдаем за происходящим :)
Для остальных ресурсов выполняет тоже самое
!!!Важный момент!!!
На сервере баз данных SQL должно быть свободное место (на том же логическом диске где и базы) для выполнения служебных заданий и хранения временных файлов.
В нашем случае оно будет равняться объему изменений баз данных за определённый период при выполнении инкрементальной копии (synchronization).
Рассмотрим на примере:
При выполнении инкрементальной копии было передано 119 МБ
Временный файл, в который происходит запись, называется Current.log
Запись данных в файл
После создания снимка файл копируется на DPM сервер в реплику (replica volume).
Было
Стало
!!!Важный момент!!!
После успешного создания инкрементальной (одной или нескольких) выполняем на DPM для базы данных полное резервное копирование (Express Full Backup). При полном резервном копировании (Express Full Backup) все данные передаются напрямую на сервер DPM БЕЗ СОЗДАНИЯ ВРЕМЕННЫХ ФАЙЛОВ.
Получаем, что синхронизированные блоки перешли из реплики (replica volume) в точку восстановления (recovery point volume).
После этого временный файл из папки “ E:_Базы SQL\DPM_SQL_PROTECT\” удален и объем свободного места диска, на котором находятся базы, увеличился.
!!!Важный момент!!!
Как ранее уже обсуждалось, DPM не умеет сжимать (shrink) базу данных (уменьшать размер лог файла ldf). Поэтому для уменьшения объема лог файла необходимо выполнить команду в SQL Management Studio.
В примере, размер лог файла станет 500 МБ
USE %название базы данных% ALTER DATABASE %название базы данных%SET RECOVERY SIMPLE DBCC SHRINKFILE (%название базы данных%_Log, 500); ALTER DATABASE %название базы данных% SET RECOVERY FULL
Статья отличная, по русски с заметками.
А нет ли такой же статьи про бекап ВМ в HYPER-V?
Спасибо.
Сделаем :)
Спасибо за понимание, будем ждать!
Обратная ссылка: 31 марта — Всемирный день резервного копирования | Блог IT-KB /
Привет. Ребят а есть мысли почему после обновления агента DPM на MSSQL Server 2008R2, DPM перестает видеть активный инстант (это скрин не вирус http://joxi.ru/YmEB45jT0oOGB2)