|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Добрый день! Вопрос очень элементарный, но прошу тапками не кидать, я в SQL-е новичек. Есть БД, котораяет работает на SQL-express. Точнее - Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Express Edition with Advanced Services (64-bit) on Windows NT 6.3 <X64> (Build 9600: ). Экземпляр по умолчанию, единственный на сервере. Модель восстановления - полная, размер журнала транзакций ограничен. База создана не мной, и сейчас возникла необходимость ее бэкапить + усекать журнал (до настоящего времени бэкапы тоже не делались). В случае заполнения журнала, бэкап и шринк выполнялся вручню, через студио, и не мной. Если у кого-нибудь есть готовый скриптик по бэкапу и шринку журнала - поделитесь, плиз. Можно самый простой - чтобы делать полный бэкап БД, полный бэкап журнала и обрезать журнал. Планирую делать раз в сутки. Планируется выполнять через виндовый планировщик, и sqlcmd, и стандартные команды типа "SQLCMD -S (local) -E -Q "BACKUP DATABASE My_BD TO DISK... BACKUP LOG... DBCC SHRINKFILE" В принципе, менеджмент студио показывает, как будут выглядеть эти команды в виде кода, но как их увязать, чтобы они запускались поочередно через sqlcmd? И такой вопрос - если при бэкапе указать параметр noinit, то все последующие бэкапы будут дозаписываться в тот же файл, если не ошибаюсь? То есть через некоторое время файл бэкапа тоже выростет до огромного размера? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:14 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyМожно самый простой - чтобы делать полный бэкап БД, полный бэкап журнала и обрезать журнал. Планирую делать раз в сутки. - Полный бэкап не усекает журнал - Не существует полного или неполного бэкапа журнала. Потому что бэкап журанала - он один единственный. - Зачем сжимать журнал, если он чуть позднее вырастет снова ? mcmurphyПланируется выполнять через виндовый планировщик, и sqlcmd, и стандартные команды типа "SQLCMD -S (local) -E -Q "BACKUP DATABASE My_BD TO DISK... BACKUP LOG... DBCC SHRINKFILE" В принципе, менеджмент студио показывает, как будут выглядеть эти команды в виде кода, но как их увязать, чтобы они запускались поочередно через sqlcmd? Изучить параметры SQLCMD и узнать, как запускать в ней скрипты mcmurphyИ такой вопрос - если при бэкапе указать параметр noinit, то все последующие бэкапы будут дозаписываться в тот же файл, если не ошибаюсь? То есть через некоторое время файл бэкапа тоже выростет до огромного размера? Разумеется. А разве должно быть по другому ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:21 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyдо настоящего времени бэкапы тоже не делались так может вы только думаете, что у вас полная модель. недостаточно выполнить alter database myDB set recovery full. чтобы база действительно перешла в full recovery model, необходимо сделать полный бэкап, а вы сами пишете, что его никто не делал ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:25 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyесли при бэкапе указать параметр noinit, то все последующие бэкапы будут дозаписываться в тот же файл, если не ошибаюсь? То есть через некоторое время файл бэкапа тоже выростет до огромного размера? вовсе нет. указывайте при каждом бэкапе новый файл, ничего никуда не будет дописываться. так и забирать удобнее, и восстанавливать, или вы что, собираетесь "бэкапить по сети" или хранить бэкапы прямо там же, где и сами базы лежат? (оба варианта плохие) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:29 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Glory- Зачем сжимать журнал, если он чуть позднее вырастет снова ? Так, если журнал забивается полностью, до того размера которым он ограничен, это не дает работать с базой данных, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 10:58 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
o-oтак может вы только думаете, что у вас полная модель. В менеджмент студио: свойства БД - Параметры. Модель восстановления - полная. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:00 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyТак, если журнал забивается полностью, до того размера которым он ограничен, это не дает работать с базой данных, разве нет? А сжатие журнала разве особождает в нем место от транзакций ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:01 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Glory, так в случае полной модели восстановления, вроде делают сначало бэкап лога, а потом шринк. это в связке позволяет освободить журнал для новых транзакций? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:06 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyтак в случае полной модели восстановления, вроде делают сначало бэкап лога, а потом шринк. это в связке позволяет освободить журнал для новых транзакций? Мда. Усечение журнала и сжатие журала - это разные операции Место внутри файла освобождает первая, а ен вторая ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:07 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Glory, хм... а какая команда выполняет усечение, и какая - сжатие? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:10 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyм... а какая команда выполняет усечение Вы не поверите, это команда ... бэкапа журнала. Зачем вы включили полную модель восстановления, если вы делаете бэкап журнала только для усечения журнала ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:11 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyo-oтак может вы только думаете, что у вас полная модель. В менеджмент студио: свойства БД - Параметры. Модель восстановления - полная. Код: sql 1. 2. 3.
вот только то, что выдаст этот скрипт, в полной модели. у меня не экспресс , так там по умолчанию у всех "фулл", и студия тоже это нарисует. и что, у меня все базы в симпл. но если вы там и правда с размером лога боретесь, то наверное и правда полная, зачем пишете тогда, что бэкапы не делались? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:15 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
PRINT 'Начало работы скрипта - "BackupBASE_LOG" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO USE [DASE] GO DECLARE @name varchar(200); SET @name='C:\Servis\BackupBASE\BackupBASE_LOG_'+convert(varchar(50),GETDATE(),105)+'_'+REPLACE(convert(varchar(50),GETDATE(),8),':','.')+'.log_backup' BACKUP LOG DAT to DISK=@name GO PRINT 'Окончание работы скрипта - "BackupBASE_LOG" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO PRINT 'Начало работы скрипта - "BackupBASE" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO USE [BASE] GO DECLARE @name varchar(200); SET @name='C:\Servis\BackupBASE\BackupBASE_'+convert(varchar(50),GETDATE(),105)+'_'+REPLACE(convert(varchar(50),GETDATE(),8),':','.')+'.bak' BACKUP database DAT to DISK=@name GO PRINT 'Окончание работы скрипта - "BackupBASE" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:16 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
PRINT 'Начало работы скрипта - "BackupBASE_LOG" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO USE [BASE] GO DECLARE @name varchar(200); SET @name='C:\Servis\BackupBASE\BackupBASE_LOG_'+convert(varchar(50),GETDATE(),105)+'_'+REPLACE(convert(varchar(50),GETDATE(),8),':','.')+'.log_backup' BACKUP LOG BASE to DISK=@name GO PRINT 'Окончание работы скрипта - "BackupBASE_LOG" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO PRINT 'Начало работы скрипта - "BackupBASE" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO USE [BASE] GO DECLARE @name varchar(200); SET @name='C:\Servis\BackupBASE\BackupBASE_'+convert(varchar(50),GETDATE(),105)+'_'+REPLACE(convert(varchar(50),GETDATE(),8),':','.')+'.bak' BACKUP database BASE to DISK=@name GO PRINT 'Окончание работы скрипта - "BackupBASE" ' + RTRIM(CONVERT(varchar(30), GETDATE(),20)) GO как то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:19 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Резервное копирование журнала создает копию транзакций, сохраненных в журнале, в файл. После копирования можно выполнить усечение журнала, т.е. записи новых транзакций не будут писаться в конец файла журнала, а будут записаны поверх старых, сохраненных в файл. Т.е. если уменьшить размер файла, то новые транзакции будут записаны в конец файла (места-то в файле не будет) и файл будет увеличен, это даст нагрузку на систему и т.д. Полная модель используется восстановления только тогда, кода требуется восстановление данных на любой момент времени. Если Вам неважно точное восстановление, используйте простую модель. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:20 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
и cmd к скриптам C: cd "\Servis\log" del backupBASE_LOG###.log ren backupBASE_LOG##.log backupBASE_LOG###.log ren backupBASE_LOG#.log backupBASE_LOG##.log ren backupBASE_LOG.log backupBASE_LOG#.log rem cd "\Servis\Scripts\" sqlcmd -U SqlUser -P SqlPwl -S NameServer -d BASE -f 1251 -i "xp_backupBASE_LOG.sql" -o "C:\Servis\Log\backupBASE_LOG.log" C: cd "\Servis\log" del backupBASE###.log ren backupBASE##.log backupBASE###.log ren backupBASE#.log backupBASE##.log ren backupBASE.log backupBASE#.log rem cd "\Servis\Scripts\" sqlcmd -U SqlUser -P SqlPwl -S NameServer -d BASE -f 1251 -i "xp_backupBASE.sql" -o "C:\Servis\Log\backupBASE.log" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:25 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
o-o, Пишу, потому что не делались. Лог на то время был не ограничен, и разросся до того, что места на жестком диске почти не осталось, что вызвало тормоза сервера и неработоспособность БД. После этого сжали лог, и выставили ограничение на его размер, но это костыль - приходится делать раз от раза сжимать его. Насчет модели восстановления - не очень понял, почему экспресс-версия показывает у всех полную модель... если создавать БД через Студио, и указать модель простой - она так и будет отображаться, и лог расти не будет до бесконечности. Кроме этой БД есть ряд других, тестовых, у них простая модель, и лог ведет себя соответсвующе. Не совсем вас понял, пардон. Если остановиться на варианте с полной моделью, эти команды подойдут: BACKUP DATABASE [MyDB] TO DISK = N'E:\BackupDB\MyDB.bak' WITH NOFORMAT, INIT, NAME = N'DeviceAutotTest-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO BACKUP LOG [MyDB] TO DISK = N'E:\BackupDB\AT3.trn' WITH NOFORMAT, INIT, NAME = N'MyDB-Журнал транзакций Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO USE [MyDB] GO DBCC SHRINKFILE (N'MyDB_log' , 0, TRUNCATEONLY) GO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:34 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyЛог на то время был не ограничен, и разросся до того, что места на жестком диске почти не осталось, Потому что кто-то включил полную модель восстановления. Просто так, ан всякий случай. mcmurphyПосле этого сжали лог, и выставили ограничение на его размер, но это костыль - приходится делать раз от раза сжимать его. Потому что кто-то до сих пор не отключил полную модель восстановления. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:37 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphy, модель восстановления выбирают не потому, что где-то написано "как лучше", а потому, что таковы требования надёжности. Если Вас устраивает простая - просто переключите её в настройках. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:47 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Владислав Колосов, Сам думаю, что это неплохой вариант... особенно учитывая то, что бэкапы не делались в принципе, а с простой моделью думаю хватит и раз в сутки - тоже очень неплохо. БД создали лет 5 назад, создали ПО для работы с ней, и на этом успокоились. Какое-то время ее еще администрировали, но потом персонал сменился и по сути она почти бесхозная - ее использовали, пока не вышла неприятность с логом. Персонала, который бы грамотно мог настроить автоматику тут нет, учитывая что сиквел - экспресс, и плана обслуживания тут не создать, по ходу только sqlcmd или сторонний софт. По себе еще раз напомню - никогда SQL не занимался, поэтому такие элементарные вопросы. Использовали БД АльтаГТД, там, в документации был план создания бэкапа через sqlcmd: SQLCMD -S (local) -E -Q "BACKUP DATABASE gtd TO DISK = 'D:\BACKUP\gtd_monday.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD" Но там простая модель. Менеджмент студио показывает примерно такой же код, если делать бэкап из нее. Вопрос был именно как увязать при полной модели бэкап базы, бэкап лога, ну и шринк - если он необходим. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:56 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyВопрос был именно как увязать при полной модели бэкап базы, бэкап лога, ну и шринк - если он необходим. Да не нужен никакой шринк при регулярных бэкапах журнала Вы это в состоянии понять ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 11:58 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyo-o, Пишу, потому что не делались. да все уже ясно с вами и с логом, но как пишете, так я буквально и понимаю. у вас бэкапы ЛОГА не делались, а не "вообще бэкапы не делались". кто "переводит в полную модель" и не делает при этом полный бэкап, у того воз и ныне там -- никакой полной модели. а студия отрисует, ей-то что mcmurphyНасчет модели восстановления - не очень понял, почему экспресс-версия показывает у всех полную модель... читать надо правильно, и не выкидывать слова. говорю, у вас такое не пронаблюдаете без смены модели у "model", а у меня девелопер, а НЕ экспресс. и все базы создаются с описанием модели "FULL". (в экспрессе же по умолчанию все базы создаются в simple) но это не более чем формальное описание, хотя студия именно это и показывает. на самом деле до первого бэкапа все базы останутся в простой модели, у меня базы тестовые и все в симпл, просто лень менять что-то в model. студия -- не показатель. хотите убедиться -- создайте базу с указанием полной модели, бэкап не делайте, залейте в нее сотню мегабайт короткими транзакциями, проверьте размер лога. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:04 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
Glory, не волнуйтесь :-) Пробую переварить, спасибо. Т.е. если на сегодняшний день я имею лог например, 100 мб, и буду регулярно делать бэкап БД + бэкап лога, его размер останеться примерно таким же? Завершенные транзакции при бэкапе лога будут переноситься в БД, а на их место будут записываться новые, но сам файл лога будет расти несуществеено? Имеется в виду, если кто-то за день не набъет в БД тройной объем информации? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:14 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
o-o, ок, теперь понятно. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:17 |
|
Бэкап базы данных SQL и усечение журнала транзакций
|
|||
---|---|---|---|
#18+
mcmurphyи буду регулярно делать бэкап БД + бэкап лога, его размер останеться примерно таким же? Еще раз - полный бэкап ничего не делает с журналом. Только бэкап журнала. mcmurphyЗавершенные транзакции при бэкапе лога будут переноситься в БД, а на их место будут записываться новые, но сам файл лога будет расти несуществеено? Это зависит от того, как часто вы будете делать изменение данных и бэкап журнала ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2015, 12:18 |
|
|
start [/forum/topic.php?fid=46&msg=38958454&tid=1685543]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 476ms |
0 / 0 |