Бэкап SQL , что за фигня?

12
Ч
На сайте с 16.12.2010
Offline
362
7075

Всем привет!

Win Server 2012R2, MS SQL 2016

Такая фигня: средствами MS SQL настроен бэкап базы: полный - раз в неделю (Вс, 3:05), разностный - раз в день (ежедневно 6:35), журнал транзакций - каждые 15 минут.

Что ни делаю, с разностным бэкапом получается ерунда, а именно:

Захожу каждый день в Задачи текущей базы, Восстановить.

Смотрю какие бэкапы есть, а там есть Полный бэкап и журнал транзакций.

Так вот, там записи: Полный сделан в 5:20 ЕЖЕДНЕВНО! 5:20. У меня не это время нет настроек. Тем более нет ежедневных расписаний для полного бэкапа.

А дальше, после полного, идут журналы транзакций.

Если после этого запускаю принудительно разностный бэкап, то пишет, что не может его сделать, т.к. не видит полного бэкапа, от которого надо сделать разностный:

"Выполняется от имени пользователя: WORKGROUP\ХХХХХХ.Не удается выполнить разностное резервное копирование для базы данных "ЙЙЙЙЙ", так как не существует ее текущей резервной копии. Произведите полное резервное копирование базы данных, выполнив инструкцию BACKUP DATABASE без параметра WITH DIFFERENTIAL. [SQLSTATE 42000] (Ошибка 3035) BACKUP DATABASE прервано с ошибкой. [SQLSTATE 42000] (Ошибка 3013). Шаг завершился с ошибкой."

Вот сообщение про полный бэкап, которого не должно было быть:

Выполняется от имени пользователя: WORKGROUP\ХХХХХХ.10 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 20 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 30 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 40 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 50 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 60 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 70 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 80 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) 90 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) Обработано 295544 страниц для базы данных "ЙЙЙЙЙ", файл "ЙЙЙЙЙ" для файла 144. [SQLSTATE 01000] (Сообщение 4035) 100 проц. обработано. [SQLSTATE 01000] (Сообщение 3211) Обработано 7 страниц для базы данных "ЙЙЙЙЙ", файл "ЙЙЙЙЙ_log" для файла 144. [SQLSTATE 01000] (Сообщение 4035) BACKUP DATABASE успешно обработал 295551 страниц за 19.423 секунд (118.878 MБ/сек). [SQLSTATE 01000] (Сообщение 3014) Резервный набор данных для файла 144 правильный. [SQLSTATE 01000] (Сообщение 3262). Шаг успешно выполнен.

Сегодня на ночь отключил выполнение полного бэкапа. Утром захожу, а там в 5:20 опять полный!

Пытаюсь сделать разностный относительно этого полного, опять не дает.

При этом сами бэкапы нормальные, рабочие, из них всё нормально восстанавливается.

Дальше: запускаю ПРИНУДИТЕЛЬНО полный бэкап. После него запускаю ПРИНУДИТЕЛЬНО разностный. Всё запускается и цепочка бэкапов создается!

Т.е. по расписанию она не создается, а принудительно создается. При этом, по расписанию создается только полный, хотя он в расписании отключен. А разностный, судя по журналу операций, пытается запускаться по расписанию, но выпадает с ошибкой "не найдет полный бэкап".

Полез в инет. На сайте мелкомягких есть заметка по ВинСерв 2008, там написано, что бэкап самого сервера может рвать цепочку бэкапов.

Но, во первых, это относилось именно к ВинСерв 2008, а во вторых я отключал бэкап сервака на пару дней, но проблема осталась.

Помогите, плиз. В чем может быть дело?

A
На сайте с 19.07.2010
Offline
130
#1

BACKUP DATABASE успешно обработал 295551 страниц за 19.423 секунд (118.878 MБ/сек)

я правильно понял это сообщение, что полный бекап у вас делается за 19 секунд, а размер бекапа примерно 2.3 гига?

если это так, то зачем вам острые ощущения с инкрементальными бекапами?..

делайте полные бекапы и жмите их архиватором, если места впритык.

.............
Ч
На сайте с 16.12.2010
Offline
362
#2

Да, бэкап делается быстро.

Места тоже в принципе хватает, хотя его много не бывает. Но, бэкап быстро разрастается, когда он каждый день полный. Когда его создаешь с нуля, то он вообще 1,3 гб, но уже через несколько дней 4,5. К тому же у меня бэкапы каждый день сливаются в облако, чтобы я его мог иметь всегда на локальной, моей машине (это база 1С). И есть разница качать 1,3 Гб или 5.

Но, это ж непорядок, что так работает? Есть же какая-то причина.

DV
На сайте с 01.05.2010
Offline
644
#3

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

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Ч
На сайте с 16.12.2010
Offline
362
#4

Ну а причину-то такого поведения как найти? Никто не сталкивался?

A
На сайте с 19.07.2010
Offline
130
#5
Четверьг:
Да, бэкап делается быстро.
Места тоже в принципе хватает, хотя его много не бывает. Но, бэкап быстро разрастается, когда он каждый день полный. Когда его создаешь с нуля, то он вообще 1,3 гб, но уже через несколько дней 4,5. К тому же у меня бэкапы каждый день сливаются в облако, чтобы я его мог иметь всегда на локальной, моей машине (это база 1С). И есть разница качать 1,3 Гб или 5.
Но, это ж непорядок, что так работает? Есть же какая-то причина.

это хорошо, когда хочется вникнуть и разобраться, в свое время я уже наигрался с бекапами...

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

я пришел к выводу, что не стоит искушать судьбу инкрементальными бекапами, например по вашей схеме: в вск полный бекап остальные дни инкрементальный, заливаете в облако или еще куда. если по какой-то причине один из инкрементальных бекапов окажется битым, то вы не сможете поднять следующие дни. например, умерла инкременталка за вторник, а вам нужно поднять субботу, результат - у вас есть только бекап за понедельник. в случае полного бекапа на точности теряется всего один день.

разрастается база - посмотрите как у вас настроен shrink(можно его делать перед бекапом) и какой режим логов транзакций(в большинстве случаев достаточно выбрать simple mode и логи сами будут подчищаться). база и бекапы уменьшатся.

"И есть разница качать 1,3 Гб или 5." - запакуйте бекап, сжатие будет раз в 7 или больше, т.е. 5G / 7 = 714Mb

Ч
На сайте с 16.12.2010
Offline
362
#6
admak:
я пришел к выводу, что не стоит искушать судьбу инкрементальными бекапами

Понял.

Дык так же может полететь и полный.

разрастается база - посмотрите как у вас настроен shrink(можно его делать перед бекапом) и какой режим логов транзакций(в большинстве случаев достаточно выбрать simple mode и логи сами будут подчищаться). база и бекапы уменьшатся.

А где это смотреть? Это то?

Просто когда создавал расписания, то выбирал св-ва бэкапов и сразу по ним сохранял скрипты бэкапа (для агента). А сейчас я особо и не вижу нигде содержимого этих самых заданий. Где-то они хранятся, но только я не знаю где именно. Вижу только сами задания, в Агенте, но не их содержимое.

BACKUP DATABASE [ЙЙЙЙ] TO DISK = N'D:\MSSQL\Backup\ЙЙЙ' WITH RETAINDAYS = 14, NOFORMAT, NOINIT, NAME = N'ЙЙЙЙ', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'ЙЙЙЙ' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'ЙЙЙЙ' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "ЙЙЙЙ" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'D:\MSSQL\Backup\ЙЙЙЙ' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO
"И есть разница качать 1,3 Гб или 5." - запакуйте бекап, сжатие будет раз в 7 или больше, т.е. 5G / 7 = 714Mb

У меня поставлено сжатие средствами СКЛа. Это не то? Жать просто в зип? База от этого не полетит?

A
На сайте с 19.07.2010
Offline
130
#7
Четверьг:
Дык так же может полететь и полный.

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

А где это смотреть? Это то?

в свойствах базы, https://stackoverflow.com/questions/480897/how-can-i-manage-sql-server-log-size

у меня уже не осталось MSSQL серверов, так что негде посмотреть. называется "Simple Recovery Model"

У меня поставлено сжатие средствами СКЛа. Это не то? Жать просто в зип? База от этого не полетит?

про "сжатие средствами СКЛа" ничего не скажу, я бекапил без сжатия, чтобы бекап проходил быстрее и меньше напрягать MSSQL сервер, затем по крону запускал батничек, который 7zip-ом паковал бекапы в зип, одна база - один архив (попутно ставил и пароль на архивы). бекап - это обычный файл(ы), при упаковке/распаковке с ним ничего не случиться.

S
На сайте с 02.05.2014
Offline
61
#8
Четверьг:
Когда его создаешь с нуля, то он вообще 1,3 гб, но уже через несколько дней 4,5.

А вы измените

BACKUP DATABASE [ЙЙЙЙ] TO DISK = N'D:\MSSQL\Backup\ЙЙЙ' WITH RETAINDAYS = 14, NOFORMAT, INIT

Тем самым Ваш файл с бэкапом будет перезаписываться.

Лично я усечение (shrink) базы не практикую, зачем мне лишняя фрагментация... Глядишь нагрузка на диски снизится...

Кроме того, если и регулярно бэкапить логи транзакци, то файл логов при Вашем размере базы сильно не разрастется. И переживать об этом не стоит.

Ставить режим simple для базы 1с, не самая лучшая идея, мало ли кто то сильно накосячит (особенно в конфигураторе) и нужно будет откатить базу на некоторое время назад (например 15 минут), а в режиме simple это не возможно (толь восстановление на момент создание полного бэкапа).

A
На сайте с 19.07.2010
Offline
130
#9
Sujcnm:
Ставить режим simple для базы 1с, не самая лучшая идея, мало ли кто то сильно накосячит (особенно в конфигураторе) и нужно будет откатить базу на некоторое время назад (например 15 минут), а в режиме simple это не возможно (толь восстановление на момент создание полного бэкапа).

вы сможете за 15 минут обнаружить косяк, убедиться, что это действительно косяк и никак кроме отката назад его не исправить и откатится назад? тогда снимаю шляпу :)

тут другой вопрос, почему кто то способный накосячить имеет доступ к конфигуратору? лучше лечить причину, а не следствия при помощи откатов на 15 минут. (я бы не стал сильно надеятся на такие откаты, можно одно вылечить, а другое залечить)

если нужно внести потенциально опасные изменения("в конфигураторе" или еще как-то), то желательно клацнуть пару кнопок и сделать полный бекап, по времени у ТС это занимает 20 секунд и дальше крутите, что хотите. :)

S
На сайте с 02.05.2014
Offline
61
#10
admak:
тут другой вопрос, почему кто то способный накосячить имеет доступ к конфигуратору?

А причем тут "кто то", тут самих 1Сков хватает.

Не могу назвать дату, но года 2 назад 1Сники выпустили обновление ЗУП 2,5 ( и при определенных условиях, а именно наличия каких-то проводок) обновление конфигурации приводило к полной не работоспособности конфигурации.

Был случай, 1С зависла на ровном месте, в момент обновления.

Благодаря полной модели восстановления, я откатывал за минуту до начала обновления. Не утруждая себя полными бэкапами которые весят значительно больше 1,3ГБ.

лучше лечить причину, а не следствия

Если сможете вылечить причину (кудрявые руки разработчиков 1С), то с меня ящик пива.

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

При модели simple - восстановление только с того момента как создана.

При модели full - позволяет восстановить на нужный момент времени (благодаря логам которые автор делает через каждые 15 мин), при условии, что бэкап и база хранятся на разных дисках, а еще лучше на разных машинах. (ну это прописная истина)

И самое главное в полной модели есть возможность доставки журналов если вы понимаете о чем я.

Спасательный круг на случай если сервер БД решит прилечь и откажется просыпаться.

Каждый сам выбирает, что ему важнее , скорость и простота бэкапирования или надежность.

admak:
по времени у ТС это занимает 20 секунд и дальше крутите, что хотите.

Значит лог выполнится за пару секунд, а может быстрее.

Кроме того, со временем база разрастется и к этому вопросу придется вернуться.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий