Пишем батник для бэкапа SQL-баз


bat

Дорогие друзья!
Хочу поделится с Вами шаблоном bat-файла, который поможет делать бэкапы SQL-баз без дополнительного программного обеспечения.
Начнем.

Про батник для архивирования фалов и папок, в том числе и баз 1С читайте в этой статье (ТЫК)

Данная статья будет полезна в основном для IT-специалистов, администраторов баз данных, системных администраторов.

Разберем по пунктам весь bat-файл. В конце статьи выложу полную версию для копирования и для наглядности.

Задаем переменные времени

@echo off
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%


Удаляем старые файлы с бэкапами

Образец кода:

if exist D:\arhiv\namebase*.bak del D:\arhiv\namebase*.bak

D:\arhiv\namebase*.bak — путь где лежат файлы бэкапа базы. Советую создать отдельную локальную папку на сервере SQL. Эти бэкапы будут созданы в следующих шагах. Идет проверка на наличие файла, и если таковой присутствует, то он удаляется.

Бэкапим SQL-базы средствами самого SQL

Образец кода:

osql -S (local) -d master -U sa -b -P 123 -Q «BACKUP DATABASE [namebase] TO DISK = N’D:\arhiv\namebase.bak’ WITH NOFORMAT, NOINIT, NAME = N’namebase Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10»

Основные параметры в этом коде:
S — указывается источник
d — права пользователя, под которым будет создаваться бэкап
U — имя пользователя, обычно это sa
P — пароль пользователя
Q — параметр указывающий на то, что нужно делать бэкап базы. В квадратных скобках указывается имя базы, в нашем случае это namebase
TO DISK = N’B:\BackUp_SQL\namebase.bak’ — указываем полный путь к базе
NAME = N’namebase Database Backup’ — указываем имя базы вместе namebase

Архивируем базу средствами WIN-RAR с переменными времени

Переменные времени мы задавали в самом начале bat-файла

Образец кода:

«c:\Program Files\WinRAR\rar.exe» a -ep -m1 E:\arhiv\namebase\namebase_%day%-%month%-%year%.rar D:\arhiv\namebase.bak

Основные параметры в этом коде:
E:\arhiv\namebase\namebase_%day%-%month%-%year%.rar — пусть, куда будет складываться за архивированная база. Советую указать другой локальный диск, отличный от основного бэкапа SQL.
D:\arhiv\namebase.bak — файл, который необходимо заархивировать.

Копируем за архивированный бэкап

Теперь, когда у нас за архивирована и ужата база, то ее надо скопировать в хранилище. Обычно таким местом является отдельное файлохранилище или же сетевое хранилище, дисковые полки и так далее. В общем то самое секретное место. В данном случае используется сетевое хранилище данных.

Образец кода:

xcopy E:\arhiv\namebase\namebase_%day%-%month%-%year%.rar \\Backup\arh_SQL\namebase\

Основные параметры в этом коде:
E:\arhiv\namebase\namebase_%day%-%month%-%year%.rar — путь к файлу, который надо скопировать с указанием полного имени файла
\\Backup\arh_SQL\namebase\ — путь как папке, в которую должен будет быть скопирован файл.

Полный пример батника для бэкапа SQL-баз

rem задаем переменные времени
@echo off
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%

if exist D:\arhiv\namebase*.bak del D:\arhiv\namebase*.bak

osql -S (local) -d master -U sa -b -P 123 -Q «BACKUP DATABASE [namebase] TO DISK = N’D:\arhiv\namebase.bak’ WITH NOFORMAT, NOINIT, NAME = N’namebase Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10»

«c:\Program Files\WinRAR\rar.exe» a -ep -m1 E:\arhiv\namebase\namebase_%day%-%month%-%year%.rar D:\arhiv\namebase.bak

xcopy E:\arhiv\namebase\namebase_%day%-%month%-%year%.rar \\Backup\arh_SQL\namebase\

Примечание:

Пример батника представлен только для одной базы. Если у Вас, допустим, 4 базы данных, то копируете в каждый раздел батника новую строчку для каждой базы. Не забываем менять название namebase на имя своей базы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *