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

Откуда:
Сообщений: 6
Предваряя перенос темы в ЯПНЧ и использования поиска, искал, смотрел, читал, но до конца ясности нет.

Краткий конфиг
Microsoft Windows Server 2008 standard edition r2 64bit
MSSQL 2008 Standard Edition 10.0.1600.22 64bit
База 8Гб модель восстановления полная

Разросся лог файл до 97Гб, задача уменьшить его до максимум 20Гб, но при этом сохранить возможность восстановления по нему, грубо говоря, на любой момент времени (тобишь его непрерывность). Правильно ли я понимаю, что мне нужно сделать следующее.

BACKUP DATABASE [Base_Name] TO DISK = N'D:\BACKUP\Base_Name.bak' WITH NOFORMAT, NOINIT, NAME = N'Base_Name', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10, CHECKSUM
BACKUP LOG [Base_Name] TO DISK = N'D:\BACKUP\Base_Name.trn' WITH NOFORMAT, NOINIT, NAME = N'Base_Name', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10, CHECKSUM

USE Base_Name;
GO
ALTER DATABASE Base_Name
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (Base_Name_Log, 20000);
GO
ALTER DATABASE Base_Name
SET RECOVERY FULL;
GO

Правильно ли я понимаю, чтобы восстановить данные на этот день я восстановлю базу из Base_Name.bak, восстановить за предыдущие дни на определенный момент времени - я восстановлю базу и откачусь по архиву лог файла, а изменения за последующие дни в определенные моменты времени будут в логфайле, бекапы которого в перспективе будут делаться, для предотвращения его разрастания.


1. На microsoft пишут надо обязательно после вышеуказанных действий делать бекап мастер базы, зачем?
2. Также пишут шринкование не журналируемая операция и делать ее не рекомендуется, чем грозит при плохом развитии событий и какие эти события?
3. Еще написано, помимо мастер базы, надо сразу, после шринкования, делать бекап пользовательской базы, зачем база то не изменилась поменялась только история транзакций?
4. И последнее что мне не понятно, как можно шринковать файл данных, в нем вроде как все данные нужны или это просто высвобождение свободного места выделенного для базы, но еще не заполненного?
5. Ан нет не последнее, почему в 2005 можно было шринковать лог, без перевода базы в симпл, а в 2008 нельзя?
29 дек 11, 05:57    [11843454]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
1. Обычно, при таких утверждениях ссылку приводят. Хотя и так понятно - все метаданные о базах хранятся именно в master-е.
2. Причем здесь плохое или хорошее развитие событий (что это за развитие)? Не рекомендую как раз из-за того, что обычно размеры файлов склонны к росту, а это весьма недешевая операция. Тогда зачем шринкать, если потом придется опять наращивать?
3. Ну, не просто поменялась история транзакций, она просто будет утеряна... Допустим перевели в простую модель, а потом в полную, в промежутке между этими двумя действиями проскочила транзакция и, т.к. модель была простая, её история из журнала вытерлась - всё, непрерывность LSN-он нарушена. Где по вашему серверу брать данные о "потеряных" LSN-ах. Если же сделаете полный бэкап сразу после перевода базы в полную модель, то он и явится отправной точкой для последующего восстановления базы, в том числе и на заданную точку времени по бэкапам журнала транзакций.
4. При шринке никакие данные не удаляются! При шринке (в зависимости от выбранного режима) либо пустое место в файле отдается системе, либо страницы с данными перемещаются в свободные места и потом уже освободившееся в конце файла место отдается всё той же системе. Что тут непонятного?
5. Бай дизайн и об этом есть предупреждение в документации.
29 дек 11, 06:41    [11843477]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
andrey99999
Member

Откуда:
Сообщений: 6
Спасибо за ответы, теперь по пяти пунктам понятно, но для полного просветления вот это

автор
BACKUP DATABASE [Base_Name] TO DISK = N'D:\BACKUP\Base_Name.bak' WITH NOFORMAT, NOINIT, NAME = N'Base_Name', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10, CHECKSUM
BACKUP LOG [Base_Name] TO DISK = N'D:\BACKUP\Base_Name.trn' WITH NOFORMAT, NOINIT, NAME = N'Base_Name', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10, CHECKSUM

USE Base_Name;
GO
ALTER DATABASE Base_Name
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (Base_Name_Log, 20000);
GO
ALTER DATABASE Base_Name
SET RECOVERY FULL;
GO


и вот это

автор
Правильно ли я понимаю, чтобы восстановить данные на этот день я восстановлю базу из Base_Name.bak, восстановить за предыдущие дни на определенный момент времени - я восстановлю базу и откачусь по архиву лог файла, а изменения за последующие дни в определенные моменты времени будут в логфайле, бекапы которого в перспективе будут делаться, для предотвращения его разрастания.


Правильно?
29 дек 11, 07:00    [11843484]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
(ни чо не понятно...)

Файл резервной копии Base_Name.bak содержит базу на момент завершения операции резервного копирования в этот файл.
Файл резервной копии Base_Name.trn содержит данные о транзакциях с последнего полного бэкапа до момента окончания бэкапа лога.
Отсюда и пляшем.
29 дек 11, 07:49    [11843522]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
andrey99999
Member

Откуда:
Сообщений: 6
tpg,

Постараюсь по другому

При вставке первой цитаты в SQL server managment studio и нажатие кнопки execute я получу два файла бекапа и урезанный лог до 20Гб (ну в смысле синтаксис правильный или как)

Вторая подразумевает следующее:
Имея два этих созданных файла и допустим еще два созданных также через неделю, я смогу откатить базу на любой временной промежуток с начала ее существования и до момента последнего бекапа (транзакции никакие не потеряются?)(грубо говоря сложив два бекапа мы получим полную историю изменений базы от сотворения до бекапа)
29 дек 11, 08:32    [11843574]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
andrey99999
Постараюсь по другому

по другому
29 дек 11, 09:57    [11843861]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
andrey99999
Имея два этих созданных файла и допустим еще два созданных также через неделю, я смогу откатить базу на любой временной промежуток с начала ее существования и до момента последнего бекапа (транзакции никакие не потеряются?)(грубо говоря сложив два бекапа мы получим полную историю изменений базы от сотворения до бекапа)
Нет.

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

Лог используется не для отката базы, а для наката - т.е. идти можно только "вперёд" от полного бакапа, по логам до требуемонго момента времени.

То есть о восстановлении можно забыть, нужно бакап лога (но он большен не понадобится), сделать шринк лога до требуемого размера (но не до минимально возможного), потом сделать полный бакап, потом настроить бакапы лога, и только тогда у вас появится возможность восстановить состояние быазы на любойц момент времени.
29 дек 11, 10:19    [11843979]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшение лог файла (прошу не пинать сразу, есть еще пара вопросов для прояснения)  [new]
andrey99999
Member

Откуда:
Сообщений: 6
Спасибо alexeyvg это и хотелось услышать.
30 дек 11, 01:03    [11848611]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить