Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Backup средствами bash для SQL

Ответить
Настройки темы
CMD/BAT - Backup средствами bash для SQL

Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo on
	Set "Log=z:\system\logfile.txt"

	Set "Mess=%~nx0 Start=%Date%-%Time%"
	Call :Minutes "%Date% %Time%" "Day1" "Min1"

set now=%DATE: =0%
for /f "tokens=1-3 delims=/-:., " %%a in ( "%now%" ) do (
	set now=%%c%%b%%a
)
SQLCMD -U user_backup -P user -Q "BACKUP DATABASE v8 TO DISK = 'z:\system\v8_bk.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
echo on
"c:\Program Files\WinRAR\WinRAR.exe" a -hpGflfrjybrJnkbdJnrjp1420 -ilogz:\system\rar.log -m5  z:\system\v8_bk-%now%.rar @z:\system\backupsql.list

rem rem @echo off
echo on
echo open 192.168.33.200>z:\system\ftp.txt
echo r>>z:\system\ftp.txt
echo NhjkmYfGfkjxrt>>z:\system\ftp.txt
echo lcd z:\system>>z:\system\ftp.txt
echo send "v8_bk-%now%.rar">>z:\system\ftp.txt
echo quit>>z:\system\ftp.txt
ftp -s:"z:\system\ftp.txt"
del z:\system\v8_bk-%now%.rar
del z:\system\v8_bk.bak
del z:\system\ftp.txt
Call :Minutes "%Date% %Time%" "Day2" "Min2"
	Set /A DOld=(%Day2%-%Day1%)*1440+%Min2%-%Min1%
	>>"%Log%" Echo %Mess% End=%Date%-%Time% Duration=%DOld% min 
GoTo :Eof

:Minutes
	SETLOCAL
	FOR /F "tokens=1,2,3,4,5 delims=.:,/ " %%i IN ("%~1") DO Set "Day=0%%i" &Set "Month=0%%j" &Set "Year=%%k" &Set "Hour=0%%l" &Set "Min=0%%m"
	Set /A Day=1%Day:~-2%-100
	Set /A Month=1%Month:~-2%-100
	Call :JulianDay %Day% %Month% %Year% "Day"
	ENDLOCAL &(Set /A %~2=%Day% &Set /A %~3=1%Hour:~-2%*60+1%Min:~-2%-6100)
GoTo :Eof

:JulianDay
	Set /A %~4=(1461*(%3+4800+(%2-14)/12))/4+(367*(%2-2-12*((%2-14)/12)))/12-(3*((%3+4900+(%2-14)/12)/100))/4+%1-32075
Exit /B
Есть вот такой отличный скрипт, который делает бекап SQL базы, архивирует базу и архив отправляет на FTP, плюс создаёт файл с отчётом о проведении операции.
Один только минус. Он создаёт полную базу и она весьма не маленькая. По этому было решено делать инкрементную версию ежедневно, а раз в неделю полную.
Код: Выделить весь код
SQLCMD -U user_backup -P user -Q "BACKUP DATABASE v8 TO DISK = 'z:\system\v8_bk.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
отвечает за создание полного бекапа.
Если заменить на
Код: Выделить весь код
SQLCMD -U user_backup -P user -Q "BACKUP DATABASE v8 TO DISK = 'z:\system\v8_bk.bak' WITH INIT, DIFFERENTIAL, NOFORMAT, SKIP, NOUNLOAD"
, то делается инкрементная версия.

Со спокойной душой создал два батника, запихнул их в task scheduler. Один раз в неделю, второй ежедневно запускается. Проверил - всё работает. Спустя два дня проверил бекапы, второй скрипт делает полный бекап, почему-то, хотя сразу отрабатывал нормально.

Подскажите,что не так или как можно подправить скрипт.

p.s. Сейчас, почему-то только полные версии бекапа делаются обоими скриптами((( но работало ведь!

Отправлено: 15:29, 19-09-2018

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


s.i.p.a,
для начала поясните зачем подобные кардибалеты: Set /A DOld=(%Day2%-%Day1%)*1440+%Min2%-%Min1%
и остальное, если вы все равно дату съема доверили планировщику, то кроме запуска архивирования на тот день ничего быть не должно, так?

Отправлено: 23:25, 19-09-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата s.i.p.a:
было решено делать инкрементную версию ежедневно, а раз в неделю полную »
SQL сервер не умеет инкрементные бэкапы

Цитата s.i.p.a:
Проверил - всё работает. »
как проверили?

Отправлено: 10:02, 20-09-2018 | #3


Старожил


Сообщения: 157
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата alpap:
alpap »
Код: Выделить весь код
Set "Log=z:\system\logfile.txt"

	Set "Mess=%~nx0 Start=%Date%-%Time%"
	Call :Minutes "%Date% %Time%" "Day1" "Min1"
// Остальной код
Call :Minutes "%Date% %Time%" "Day2" "Min2"
	Set /A DOld=(%Day2%-%Day1%)*1440+%Min2%-%Min1%
	>>"%Log%" Echo %Mess% End=%Date%-%Time% Duration=%DOld% min 
GoTo :Eof

:Minutes
	SETLOCAL
	FOR /F "tokens=1,2,3,4,5 delims=.:,/ " %%i IN ("%~1") DO Set "Day=0%%i" &Set "Month=0%%j" &Set "Year=%%k" &Set "Hour=0%%l" &Set "Min=0%%m"
	Set /A Day=1%Day:~-2%-100
	Set /A Month=1%Month:~-2%-100
	Call :JulianDay %Day% %Month% %Year% "Day"
	ENDLOCAL &(Set /A %~2=%Day% &Set /A %~3=1%Hour:~-2%*60+1%Min:~-2%-6100)
GoTo :Eof

:JulianDay
	Set /A %~4=(1461*(%3+4800+(%2-14)/12))/4+(367*(%2-2-12*((%2-14)/12)))/12-(3*((%3+4900+(%2-14)/12)/100))/4+%1-32075
Это всего лишь создания текстового файла когда и сколько времени выполнялся скрипт. И на сервере выполняется много скриптов, которые записывают в этот файл данные. По хорошему, данный код к SQL никак не относится.

Цитата Busla:
SQL сервер не умеет инкрементные бэкапы »
Прошу прощения, Differential Backup или "разностный бекап. Кому как удобнее называть.

Цитата Busla:
как проверили? »
Запустил скрипт и он создал мне бекап c последними изменениями, который весил в 15 раз меньше чем полный.

Отправлено: 11:08, 20-09-2018 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата s.i.p.a:
Кому как удобнее называть. »
Вообще-то это не «как удобнее», а два отличающихся типа частичного резервирования.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 20-09-2018 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Backup средствами bash для SQL

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Восстановление - Резервное копирование баз 1С средствами Acronis Backup Advanced 11.5 Tyamich Программное обеспечение Windows 0 16-09-2016 16:56
Прочее - FreeNAS + 1C + SQL server backup pashos_nix Общий по FreeBSD 4 10-06-2014 13:24
MSFT SQL Server - SQL Backup-создание ежедневно нового архива Anatoliy2004 Программирование и базы данных 8 29-09-2011 13:29
Правильный Backup 1c7 sql bombording Хочу все знать 11 28-07-2011 03:10
MSFT SQL Server - Backup данных MS SQL f0kker Программирование и базы данных 14 30-08-2007 11:15




 
Переход