Резервное копирование и восстановление: системные базы данных (SQL Server)
Применимо к: SQL Server (все поддерживаемые версии)
SQL Server поддерживает набор баз данных системного уровня, которые называются системными базами данных и жизненно важны для работы экземпляра сервера. После каждого значительного обновления необходимо обязательно создавать резервные копии ряда системных баз данных: msdb, master и model. Если какая-нибудь из баз данных на экземпляре сервера использует репликацию, то необходимо также создавать резервную копию системной базы данных distribution . Резервные копии системных баз данных позволят восстановить систему SQL Server в случае сбоя, например отказа жесткого диска.
В следующей таблице перечислены все системные базы данных.
Системная база данных | Описание | Необходимость создавать резервные копии | Модель восстановления | Комментарии |
---|---|---|---|---|
master | База данных, в которой хранятся все системные данные SQL Server . | Да | Простая | Создавайте резервные копии базы данных master с такой частотой, которая необходима для адекватной защиты данных. Рекомендуем составить расписание регулярного резервного копирования, которое можно дополнить созданием резервных копий после значительных обновлений. |
model | Шаблон для всех баз данных, создаваемых на экземпляре SQL Server. | Да | Настраиваемая пользователем (0-9) | Резервные копии базы данных model создаются только в том случае, если они необходимы для предприятия (например сразу же после настройки параметров базы данных). Рекомендация. Рекомендуется по мере необходимости создавать только полные резервные копии базы данных model. Поскольку база данных model невелика и редко изменяется, создавать резервную копию журнала не обязательно. |
msdb | База данных, используемая агентом SQL Server для планирования предупреждений и заданий и для записи операторов. База данных msdb также содержит такие таблицы журнала, как таблицы резервных копий и журнала восстановления. | Да | Простая (по умолчанию) | Создавайте резервную копию базы данных msdb после каждого ее обновления. |
Resource (RDB) | База данных только для чтения, которая содержит копии всех системных объектов, поставляемых с SQL Server | нет | — | База данных Resource находится в файле mssqlsystemresource.mdf, в котором содержится только код. Поэтому SQL Server не может создать резервную копию базы данных Resource . Примечание. Рассматривая файл mssqlsystemresource.mdf как двоичный файл (EXE), а не файл базы данных, для создания его резервной копии можно выполнить простое резервное копирование файла или диска. Нельзя использовать восстановление SQL Server для резервных копий. Восстановить резервную копию файла mssqlsystemresource.mdf можно будет только вручную; при этом следует соблюдать осторожность, чтобы не перезаписать текущую базу данных Resource устаревшей или потенциально небезопасной версией. |
tempdb | Рабочая область для хранения временных или промежуточных результирующих наборов. Эта база данных создается заново при каждом запуске экземпляра SQL Server . При отключении экземпляра сервера любые сведения, содержащиеся в базе данных tempdb , удаляются навсегда. | нет | Простая | Создать резервную копию системной базы данных tempdb нельзя. |
Настройка распространения | База данных, которая существует только в том случае, если сервер настроен как распространитель репликации. Эта база данных содержит метаданные и данные журнала для всех типов репликации, а также транзакции для репликации транзакций. | Да | Простая | Сведения о том, когда следует создавать резервные копии базы данных distribution , см. в статье Создание резервной копии и восстановление из копий реплицируемых баз данных. |
Ограничения восстановления системных баз данных
Системные базы данных могут быть восстановлены только из резервных копий, созданных той версией SQL Server , которая запущена на данном экземпляре сервера. Например, чтобы восстановить системную базу данных на экземпляре сервера, работающего под SQL Server 2012 (11.x) с пакетом обновления 1 (SP1), необходимо использовать резервную копию базы данных, созданную после обновления экземпляра сервера до SQL Server 2012 (11.x) с пакетом обновления 1 (SP1).
Для восстановления любой базы данных должен быть запущен экземпляр SQL Server . Для запуска экземпляра SQL Server необходимо, чтобы база данных master была доступна и хотя бы частично пригодна к использованию. Если база данных master непригодна к использованию, ее можно вернуть в нормальное состояние следующими способами.
Восстановить базу данных master на основе актуальной резервной копии.
Если экземпляр сервера удалось запустить, базу данных master можно восстановить из полной резервной копии.
Перестроить базу данных master с нуля.
Если серьезное повреждение базы данных master не позволяет запустить экземпляр SQL Server, базу данных master нужно перестроить. Дополнительные сведения см. в разделе Перестроение системных баз данных.
При перестроении базы данных master все системные базы данных также перестраиваются.
В некоторых случаях для проблем, связанных с восстановлением табличного шаблона базы данных модели, может потребоваться перестроение системных баз данных или замена MDF- и LDF-файлов базы данных модели. Дополнительные сведения см. в разделе Перестроение системных баз данных.
Источник
Настройка регулярного резервного копирования БД MS SQL Server
Эта информация была полезна? | 0 | m | n | 0 |
Рекомендуется настроить регулярное резервное копирование базы данных (на случай аппаратных или программных сбоев), причем лучше всего с сохранением резервных копий за последние несколько дней, например семь (за последнюю неделю).
Для этого можно использовать либо встроенный в SQL Server планировщик заданий – «SQL Server Agent» (в бесплатную версию не входит), либо стандартный «Планировщик Windows» в сочетании с утилитой SQLCMD.EXE, которая позволяет выполнять запросы к SQL Server из командной строки. В планировщике необходимо создать как минимум семь заданий (по одному на каждый день недели), каждое из которых будет (раз в неделю) заменять один из семи файлов, содержащих соответствующую резервную копию базы данных.
Кроме того, файлы резервных копий рекомендуется хранить не только на жестком диске компьютера, где установлен SQL Server, но и дублировать их на ленту или жесткий диск другого компьютера в сети. Для этого можно использовать либо специальное ПО, которое позволяет делать резервные копии всего диска, либо с помощью того же планировщика копировать файлы на ленту или другой компьютер (вторым шагом).
С помощью «Планировщика Windows» (для бесплатной версии)
Чтобы создать задание в «Планировщике Windows» надо:
Запустить программу «Блокнот» (Пуск->Все программы->Стандартные->Блокнот) и ввести следующие две строки, после чего сохранить их в виде командного файла (*.BAT):
SQLCMD -S (local) -E -Q «BACKUP DATABASE AltaSVHDb TO DISK = ‘D:\BACKUP\ AltaSVHDb_monday.bak’ WITH INIT, NOFORMAT, SKIP, NOUNLOAD»
XCOPY D:\BACKUP\ AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y
где «(local)» – имя сервера (в случае установки именованного экземпляра SQL Server надо указать имя полностью: «ИМЯ_КОМПА\SQLEXPRESS»), «AltaSVHDb» – имя базы данных, «D:\BACKUP\ AltaSVHDb_monday.bak» – имя файла для создания в нем резервной копии (будет различаться по дням недели), «BACKUP_SERVER» – имя компьютера, на который будет выполняться дополнительное копирование, «Folder» – папка на этом компьютере (к ней должен быть предоставлен общий доступ).
Запустить мастер планирования заданий (Панель управления->Назначенные задания->Добавить задание) и нажать кнопку «Далее»:
Нажать кнопку «Обзор» и указать путь к командному файлу (*.BAT), созданному на шаге a):
Указать имя для задания, выбрать вариант запуска «еженедельно» и нажать кнопку «Далее»:
Поставить галочку возле нужного дня недели, а в поле «Время начала» указать время, когда должен запускаться процесс резервного копирования (обычно это делается ночью), затем нажать кнопку «Далее»:
Ввести имя пользователя и пароль (дважды) учетной записи ОС, от имени которой будет выполняться задание, и нажать кнопку «Далее»:
Внимание! Чтобы задание успешно выполнялось необходимо предоставить указанной здесь учетной записи (домена или локального компьютера) права записи в вышеупомянутую папку «\\BACKUP_SERVER\Folder», а также настроить доступ к самому SQL Server.
Нажать кнопку «Готово»
Примечание. Чтобы проверить работоспособность созданного задания, необходимо в списке заданий (Панель управления->Назначенные задания) нажать правой кнопкой мыши на интересующем задании и в контекстном меню выбрать пункт «Выполнить», затем убедиться, что файл резервной копии БД успешно создался по тем путям, которые были указаны на шаге a).
С помощью «SQL Server Agent» (в бесплатную версию не входит)
Чтобы создать задание в «SQL Server Agent» надо:
Запустить утилиту SQL Server Management Studio и подключиться к серверу под учетной записью администратора.
В левой части окна нажать правой кнопкой мыши на разделе «Объекты сервера/Устройства резервного копирования» и в контекстном меню выбрать пункт «Создать устройство резервного копирования»:
В поле «Имя устройства» ввести имя, которое будет ассоциироваться с файлом резервной копии БД, при необходимости изменить путь в поле «Файл» и нажать «ОК»:
В левой части окна нажать правой кнопкой мыши на разделе «Агент SQL Server/Задания» и в контекстном меню выбрать пункт «Создать задание»:
В поле «Имя» ввести имя задания:
На странице «Шаги» нажать кнопку «Создать»:
В появившемся окне ввести имя в поле «Имя шага», проверить, что в поле «Тип» выбрано «Сценарий Transact-SQL (T-SQL)», а в поле «Команда» ввести строку:
BACKUP DATABASE AltaSVHDb TO AltaSVHDb_monday WITH INIT, NOFORMAT, SKIP, NOUNLOAD
где «AltaSVHDb» – имя базы данных, «AltaSVHDb_monday» – имя устройства резервного копирования, созданного на шаге c) (будет различаться по дням недели):
В предыдущем окне нажать кнопку «ОК», в результате на странице «Шаги» должна появиться строка:
Чтобы файл резервной копии БД сразу копировался на другой компьютер в сети необходимо повторить пункты f) – h), в окне «Создание шага задания» выбрав в поле «Тип» значение «Операционная система (CmdExec)», а в поле «Команда» указав строку:
XCOPY D:\MSSQL\BACKUP\AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y
где «D:\MSSQL\BACKUP\AltaSVHDb_monday.bak» – путь, указанный на шаге c) (будет различаться по дням недели), «BACKUP_SERVER» – имя компьютера, на который будет выполняться копирование, «Folder» – папка на этом компьютере (к ней должен быть предоставлен общий доступ):
Примечание. Чтобы копирование файла успешно выполнялось необходимо запускать «SQL Server Agent» под учетной записью домена Windows, для которой предоставлены права записи в вышеупомянутую папку (см. также «SQL2005_installation.doc» или «SQL2008_installation.doc»), а также настроен доступ к самому SQL Server (см. раздел «Настройка прав доступа к БД», включить эту учетную запись надо в роль «sysadmin» на странице «Серверные роли», а на страницах «Сопоставление пользователей» и «Защищаемые объекты» ничего не делать).
На странице «Расписания» нажать кнопку «Создать»:
Ввести имя в поле «Имя», проверить, что в поле «Тип расписания» выбрано значение «Повторяющееся задание», а в поле «Выполняется» – «Еженедельно». Поставить галочку возле нужного дня недели (остальные снять), а в поле «Однократное задание» указать время, когда должен запускаться процесс резервного копирования (обычно это делается ночью):
В предыдущем окне нажать кнопку «ОК», в результате на странице «Расписания» должна появиться строка:
Нажать кнопку «ОК».
Примечание. Чтобы проверить работоспособность созданного задания, необходимо в разделе «Агент SQL Server/Задания» нажать правой кнопкой мыши на интересующем задании и в контекстном меню выбрать пункт «Запустить задание на шаге», в появившемся окне выбрать первый шаг данного задания и нажать «ОК». Далее появится окно отображающее ход выполнения задания. Если выполнение задания закончится с ошибкой, то подробное описание ошибки можно увидеть вызвав пункт «Просмотр журнала» того же контекстного меню.
Источник