Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
Здравствуйте.
Подскажите, как правильно настроить план обслуживания базы с полной моделью восстановления? Какие операции в нем должны быть?
Сейчас у меня план обслуживания такой:
1. Полный бэкап каждую неделю в понедельник
2. Разностный бэкап каждый день, кроме понедельника
3. Бэкап логов каждый час
4. Удаление старых бэкапов
5. Реиндекс, статистика и перестройка индекса. Раз в день.
6. Проверка целостности


Среди перечисленных операций нет "Сжатие базы данных". Подскажите, когда её нужно использовать (перед бэкапом, после бэкапа, до перестройки индексов или еще когда?) и нужно ли?

Чего еще не хватает в плане обслуживания?
20 мар 16, 08:03    [18954781]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
rootman
Member

Откуда:
Сообщений: 114
Я бы проверку целестности на первое место пернес, по причине того что если база битая то нафиг вам такой бекап.
Сжатие базы имеет смысл делать если вы удалите много информации из базы, и не будите планировать ее дальше писать туда.
20 мар 16, 08:41    [18954799]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
Диам
Среди перечисленных операций нет "Сжатие базы данных". Подскажите, когда её нужно использовать (перед бэкапом, после бэкапа, до перестройки индексов или еще когда?) и нужно ли?

Сжатие базы это разовая операция, применяемая в редких конкретных ситуациях. Ей не место в плане обслуживания, т.е. на постоянной основе
20 мар 16, 08:59    [18954812]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Диам
Сейчас у меня план обслуживания такой:
1. Полный бэкап каждую неделю в понедельник
2. Разностный бэкап каждый день, кроме понедельника
...
5. Реиндекс, статистика и перестройка индекса. Раз в день.
И как, сильно размер дифа меньше полного? Или охота ресториться в два раза долше каждый день, кроме понедельника?

rootman
Я бы проверку целестности на первое место пернес, по причине того что если база битая то нафиг вам такой бекап.
Битый бэкап лучше несуществующего бэкапа. Ну и чекать, по-хорошему, надо не боевую базу, а базу после рестора бэкапа.
20 мар 16, 13:20    [18955168]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
Гавриленко Сергей Алексеевич
....
И как, сильно размер дифа меньше полного? Или охота ресториться в два раза долше каждый день, кроме понедельника?

Размер в 4 раза меньше полного (600 Мб и 2500Мб) и сопоставим с диф.бэкапом. Но в вашем вопросе я вижу иронию, что-то не так?


Еще вопрос по бэкапам.
Буквально пять дней назад ночные транзакшн логи занимали 1-2 мегабайт, дневные - 20-30 мб, а во время расчетов - 500-600 Мб. Но 4 дня назад все тр.логи стали весить порядка 500-600 метров, причем ночью ну некому запускать расчеты, и даже если бы это было и так - ну не каждый же час они бы это делали и не несколько дней подряд.
Как-то можно по файлам тр.логов определить касаемо каких таблиц там больше изменений?
20 мар 16, 16:21    [18955615]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Glory
Member

Откуда:
Сообщений: 104751
Диам
причем ночью ну некому запускать расчеты, и даже если бы это было и так - ну не каждый же час они бы это делали и не несколько дней подряд.

Изменение таблиц делают не только запросы пользователей
"Реиндекс, статистика и перестройка индекса" - это тоже изменение, которые пишутся в журнал

Диам
Размер в 4 раза меньше полного (600 Мб и 2500Мб) и сопоставим с диф.бэкапом. Но в вашем вопросе я вижу иронию, что-то не так?

Стратегию архивирования выбирают для какого-то плана восстановления.
Это план у вас есть ? Как быстро и на какой момент врменени вы должны будете восттавноить базу после падения ?
20 мар 16, 16:27    [18955630]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
Glory, про то, что изменения вносят не только пользователи, это понятно. Есть и расчеты запускаемые ночью. Но, я повторюсь, по непонятной для меня причине размер тр.лога внезапно вырос и стал постоянным. Хотелось бы найти из-за каких таблиц он вырос, чтобы уже искать причину. Поиск в инете по фразе "содержимое транзакшн лога" результата не дал.
20 мар 16, 18:36    [18955860]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
Диам
...
Но 4 дня назад все тр.логи стали весить порядка 500-600 метров, причем ночью ну некому запускать расчеты, и даже если бы это было и так - ну не каждый же час они бы это делали и не несколько дней подряд.
Как-то можно по файлам тр.логов определить касаемо каких таблиц там больше изменений?

ну в таком духе можно посмотреть:
select AllocUnitName, COUNT(*)
from sys.fn_dblog(null, null)
group by AllocUnitName
order by 2 desc

(и не только в самом логе, в бэкапе тоже, fn_dump_dblog)

только и так понятно, что это.
ваш ребилд/реорг просто ничего не делал, если в полной-то модели
после этих операций лог совсем не рос.
1-2 Мб это ж такие индексы вообще трогать не надо в смысле ребилда,
ну а значит, фрагментация в норме была, а теперь нет.
повесьте DDL-триггер на базу и смотрите, что у вас по ночам ребилдится
20 мар 16, 18:39    [18955867]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
Диам
по непонятной для меня причине размер тр.лога внезапно вырос и стал постоянным.

так размер лога вырос или размер *бэкапов* лога?
логу достаточно один раз раздуться, чтобы потом больше свой размер не менять.
это ж не значит, что теперь в него стали больше писать,
это значит, что *в какой-то момент* в него очень много написали
20 мар 16, 18:42    [18955879]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
o-o
Диам
по непонятной для меня причине размер тр.лога внезапно вырос и стал постоянным.

так размер лога вырос или размер *бэкапов* лога?

Сорри, размер бэкапов лога (файлы *.trn)
20 мар 16, 19:13    [18956005]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
ну вот, если ночью у вас делается перестроение индексов,
а модель полная, в лог уходит записей размером как минимум
с каждый из отребилденных индексов.
а реорг может и еще больше навалить.
и раз до этого размер был 1-2 Мб, значит, ребилд не делался вообще
20 мар 16, 19:20    [18956021]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
o-o,
ситуация, которая была 5 дней назад:
файл бэкапа лога весит:
1:00 - 1.5 Мб
2:00 - 0.9 Мб
...... в 2:10 запускаются еженочные расчеты
3:00 - 244 Мб
4:00 - 0.5 Мб
...... в 4:10 - делается реиндекс, статистика (продолжительностью 9-13 минут)
...... в 4:20 - делается диф.бэкап, его размер 600 Мб (ничего, что они по времени пересекаются с реиндексом?)
5:00 - 420 Мб
6:00 - 0.9 Мб
7:00 - 5 Мб
8:00 - 5 Мб
9:00 - 150 Мб
10:00 - 20 Мб



Теперь же постоянно вес от 550 до 680 Мб каждый час.
20 мар 16, 20:35    [18956213]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
Последствия ребилда это 420Мб лога в 5 утра, а что еще делается у вас ночью, не знаю.
Выше был код, посмотрите по объектам, что в лог идет. Зная объект, там же в логе/бэкапе лога по нему можно отфильтровать и посмотреть операции.
20 мар 16, 20:57    [18956265]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
А еще лучше, раз ночью типа никто не работает и тормозить особо некого, навесить аудит на базу, если редакция позволяет. И ddl-триггер. Утром отключить и разобрать улов
20 мар 16, 21:07    [18956312]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
o-o, скажите, этот скрипт
select AllocUnitName, COUNT(*) cnt
from sys.fn_dblog(null, null)
group by AllocUnitName
order by 2 desc

показывает какое количество записей из объекта AllocUnitName попадет в бэкап лога? Или как понимать столбец COUNT(*)?
20 мар 16, 21:48    [18956422]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Диам
Гавриленко Сергей Алексеевич
....
И как, сильно размер дифа меньше полного? Или охота ресториться в два раза долше каждый день, кроме понедельника?

Размер в 4 раза меньше полного (600 Мб и 2500Мб) и сопоставим с диф.бэкапом. Но в вашем вопросе я вижу иронию, что-то не так?
Я так и не понял, о каких вы сейчас размерах, и что с чем сопоставимо.
20 мар 16, 22:00    [18956470]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
Показывает число записей лога.
Т. е. при ребилде, например, в одну запись лога идет целая страница индекса.
Наверное, лучше было по суммарному размеру записей отсортировать.
20 мар 16, 22:10    [18956510]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
o-o, не подскажете, как из fn_dump_dblog() определить имена таблиц затронутых в транзакции?
20 мар 16, 22:15    [18956525]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
o-o
Guest
что-то такое:
select object_name(p.object_id), fn.*
from fn_dump_dblog (
        NULL, NULL, N'DISK', 1, N'Z:backups\db_full_20160320_1.trn',
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
        DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) fn
      left join sys.allocation_units au
         on au.allocation_unit_id = fn.AllocUnitId
      left join sys.partitions p
         on p.hobt_id = au.container_id           
20 мар 16, 22:35    [18956598]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
o-o, Спасибо большое. Удалось установить проблему с помощью вашего скрипта.
21 мар 16, 07:33    [18957168]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Glory
Member

Откуда:
Сообщений: 104751
Диам
Удалось установить проблему

И в чем же она состояла ?
21 мар 16, 11:46    [18958088]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно настроить план обслуживания базы с Full Recovery  [new]
Диам
Member

Откуда:
Сообщений: 1497
Glory, нашел таблицу, которая постоянно обновлялась, выяснил причину и исправил. Размер бэкапов вернулся к прежнему значению.
21 мар 16, 23:05    [18961245]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить