|
SQL server 2005 полный бекап и журнал транзакций. | ☑ | ||
---|---|---|---|---|
0
mnail1979
19.03.12
✎
10:57
|
Здравствуйте. Прошу совета и подсказки в следующем:
Создал следующую схему резервного копирования базы: 1. Каждое воскресенье в 4 часа делаю полное резервное копирование базы. 2. Каждый день, кроме воскресенья, в 5 часов делаю разностное резервное копирование базы. 3. Каждый день каждый час с 9.00 до 21.00 делаю копирование журнала транзакций. 4. Каждый день в 00:00:00 делаю обновление статистики, 01:00:00 - реорганизация индекса, 02:00:00 - перестроение индекса. Прошу посоветовать, правильно ли я организовал бекап. Не ли чего лишнего или недостающего. И самый главный вопрос: Каждый бекап журнала транзакций в среднем у меня занимает 150-200МБ. Во время простоя, когда пользователей нет, занимает 404КБ. Но каждое утро в 9 часов создается первый бекап журнала транзакций размером в 5ГБ. Я так понимаю размер велик, потому что в себе он держит лог по реиндексациям и т.д. Т.е. все что происходило с последнего бекапа журнала транзакций 21:00:00 вечера. Но это же не совсем верно. Ведь в 5 часов создался полный (в воскресенье) или разностный(каждый день) бекап. Почему журнал транзакций автоматически не урезается. |
|||
1
val
19.03.12
✎
16:57
|
(0)
"Каждый день в 00:00:00 делаю обновление статистики, 01:00:00 - реорганизация индекса, 02:00:00 - перестроение индекса". "реорганизация индекса" это что, дефрагментация? Перестроение индексов уже включает в себя и обновление статистики, и дефрагментацию. Поэтому два первых пункта лишние. |
|||
2
val
19.03.12
✎
17:04
|
(0) Еще вопрос - в 2 часа у Вас начинается ребилд индексов. А сколько он длится?
|
|||
3
YF
19.03.12
✎
17:05
|
(0) Размер базы какой?
|
|||
4
Мыш
19.03.12
✎
17:13
|
(0) select name, log_reuse_wait_desc from sys.databases where name = 'MyDataBase'
|
|||
5
Мыш
19.03.12
✎
17:15
|
Вобщем делаешь бэкап самой базы, потом бэкап лога, а потом уже обрезаешь файл лога. Например так:
USE [MyDataBase] GO DBCC SHRINKFILE (N'MyDataBase_log' , 1024) GO |
|||
6
Мыш
19.03.12
✎
17:16
|
Блин, время не посмотрел. Автор давно уже сам разобрался видать )
|
|||
7
Jofa
19.03.12
✎
17:16
|
А ты говорил ему АвтоШринк?
|
|||
8
Мыш
19.03.12
✎
17:18
|
(7) Автошринк - зло.
|
|||
9
mnail1979
19.03.12
✎
17:58
|
Главный вопрос: Почему после полного бекапа в 4 часа или разностного в 5 часов бекап журнала транзакций в 9 часов включает все транзакции, начиная с 21.00 предыдущего дня, а не с 5 часов утра? Что, при полном или разностном бекапе журнал автоматически не урезается?
|
|||
10
mnail1979
22.03.12
✎
11:20
|
Ответьте плиз на главный вопрос: почему полный или разностный бекап не сдвигает LSN для следующего бекапа журнала транзакций?
|
|||
11
Ёпрст
22.03.12
✎
11:28
|
(9) нет и не должен
|
|||
12
Ёпрст
22.03.12
✎
11:33
|
делаешь бекап базы, далее бекап лога в отдельном задании далее обрезку лога.. ну и обработку по очистке перед бекапом лога и архивом базы - чтоб лог транзакций к примеру, 60 дней хранить
|
|||
13
mnail1979
22.03.12
✎
11:45
|
А зачем после бекапа лога (т.е. журнала транзакций) делать обрезку лога. Ведь этот бкап и так уже сдвинет lsn
|
|||
14
Ёпрст
22.03.12
✎
12:02
|
(13) с чего это ?
|
|||
15
mnail1979
22.03.12
✎
12:10
|
тогда вопрос. BACKUP LOG db_name WITH TRUNCATE_ONLY создает бекап, или просто производит урезку цепочки. Может просто в последнем бекапе журнала транзакций в 21.00 сделать дописку WITH TRUNCATE_ONLY и все? Т.е. мне не нужен лог действий с 21.00 до 09.00 В это время пользователи не работают С 0.00 по 02.00 идут регламентные задания по переиндексации и т.д, в результате которые и создается бекап журнала транзакций в 9.00 такого большого размера
|
|||
16
Ёпрст
22.03.12
✎
12:13
|
(15) просто создает бекап лога
|
|||
17
2mugik
22.03.12
✎
12:20
|
(8)чем зло если не секрет?
|
|||
18
Мыш
22.03.12
✎
12:25
|
(17) Файл меняет размер. Соответственно его физическое положение на диске фрагментируется.
|
|||
19
mnail1979
22.03.12
✎
12:26
|
тогда как мне сделать так, чтобы в утреннем 9.00 бекапе журнала транзакций не были данные относительно ночных регламентных заданий по переиндексации и т.д. Т.е. я хочу следующее:
Каждое воскресенье ночью создавать полный бекап. Каждый день ночью создавать разностный бекап. Каждый час с 9.00 по 21.00 создавать бекап журнала транзакций. Каждый день ночью производить регламентные задания по Гилеву - индексы, статистика и т.д. Но чтобы при этом не было ненужных никому лишних логов, как сейчас происходит у меня, т.е. в утреннем бекапе журнала транзакций сидят ненужные мне данные по ночным переиндексациям, что увеличивает размер бекапа. |
|||
20
Мыш
22.03.12
✎
12:33
|
(19)
> Каждый день ночью производить регламентные задания по Гилеву - индексы, статистика и т.д. Вот это сильно увеличивает лог. 1. Бэкап лога 1. 2. Полный/разностный бэкап. 3. Бэкап лога 2. 4. Удалить бэкап лога 1. 5. Подрезать файл лога. |
|||
21
krbIso
22.03.12
✎
12:34
|
без прерывания цепочки никак не сделать
|
|||
22
Ёпрст
22.03.12
✎
12:34
|
задание 1:
обработка обслуживания (очистка старых бекапов с диска) - полный бекап каждое воскресенье задание 2: обработка обслуживания (очистка старых бекапов с диска) - разностный бекап каждый день, окромя воскресенья задание 3: обработка обслуживания (очистка старых бекапов лога с диска) - бекап лога каждый каждый день с 9 до 21, окромя воскресенья - скрипт t-sql со шринком лога задание 4-6 регламентные операции согласно расписанию |
|||
23
krbIso
22.03.12
✎
12:38
|
Если фул бэкап у тебя делается только 1 раз в вскр, то ничего сделать нельзя.
Если фул бэкап делать раз в сутки, тогда можно прерывать цепочку усекая журнал с параметром TRUNCATE_ONLY и ему подобных (No_LOG и тд) |
|||
24
Ёпрст
22.03.12
✎
12:39
|
(23) что именно нельзя сделать?
|
|||
25
Ёпрст
22.03.12
✎
12:41
|
+22 если тебе не нужен последний лог - тот который от обработки твоих заданий - сделай отдельным рег заданием его бекап + шринк + удаление с диска.
|
|||
26
krbIso
22.03.12
✎
12:42
|
(25) "Но чтобы при этом не было ненужных никому лишних логов"
|
|||
27
Ёпрст
22.03.12
✎
12:42
|
(26) всё можно
|
|||
28
krbIso
22.03.12
✎
12:43
|
(27) что именно все можно?
|
|||
29
Ёпрст
22.03.12
✎
12:43
|
(28) "Но чтобы при этом не было ненужных никому лишних логов"
27 |
|||
30
Господин ПЖ
22.03.12
✎
12:45
|
что есть никому не нужный лог?
|
|||
31
krbIso
22.03.12
✎
12:45
|
(29) какая последовательность действий?
|
|||
32
Ёпрст
22.03.12
✎
12:47
|
(31) см (25)
|
|||
33
Ёпрст
22.03.12
✎
12:47
|
(30) он хочет лог транзакций от рег. заданий удалить..
|
|||
34
krbIso
22.03.12
✎
12:51
|
(32)как он будет восстанавливаться в случае чего?
|
|||
35
Ёпрст
22.03.12
✎
12:57
|
(34) дык это его проблемы
:) ТС же грит в морг - значит в морг Хотя, достаточно разностный архив делать не вечером, а после этих рег заданий и усё.. |
|||
36
Ёпрст
22.03.12
✎
12:58
|
хотя и так, если делать шринк лога - он будет всегда мелким, а реиндекс/статистика и прочие перестроения не увеличат лог на много
|
|||
37
Мыш
22.03.12
✎
13:02
|
(36) Увеличат на много.
|
|||
38
Ёпрст
22.03.12
✎
13:05
|
(37) ну.. если делать бекап лога, скажем каждые полчаса.. то весить он будет ~5-10Кб
если выполнять рег задания.. ну увеличится он до ~10 метров.. и хрен с ним. :) |
|||
39
krbIso
22.03.12
✎
13:10
|
вообщем если п.2 это в 5 часов утра (05.00) то можно прервать цепочку выполнив усечение журнала с TRUNCATE_ONLY, соответственно перед этим самым разностным бэкапом.
Если же 5 часов это 17.00 то никак. |
|||
40
Мыш
22.03.12
✎
13:17
|
(38) У меня после реиндексации и обновления статистики лог растет до размера самой базы.
|
|||
41
Ёпрст
22.03.12
✎
13:27
|
(40) ну не знаю..смотрю бекап лога - максимум 200 метров есть, всё остальное - килобайты..
|
|||
42
mnail1979
22.03.12
✎
14:19
|
(35) >Хотя, достаточно разностный архив делать не вечером, а после этих рег заданий и усё.
У меня и так рег задания делаются ночью с 00.00 по 02.00, а разностный делается в 04.00. И после этого никаких действий в базе не происходит. Но бекап утром в 9.00 огромный, в полтора раза больше базы. Смотрю в логах, и там указано, что бекап журнала взял данные lsn с 21.00 часового последнего журнала транзакций. |
|||
43
Ёпрст
22.03.12
✎
14:26
|
(42) ёпт, после рег заданий делаешь бекап лога и его шринк + удаление с диска обработкой обслуживания, далее разностный бекап и привет - наслаждаешься.
|
|||
44
mnail1979
22.03.12
✎
14:33
|
(43) ок. Попробую. Только че то я сомневаюсь, что после разностного бекапа создастся нормальный бекап журнала транзакций, способный к восстановлению, потому что он будет своим началом lsn ссылаться на тот бекап, который мы удалим.
|
|||
45
Ёпрст
22.03.12
✎
14:43
|
а зачем тебе нужен будет потом этот лог ?
восстановление будет уже от разностного бекапа |
|||
46
mnail1979
22.03.12
✎
14:46
|
Уверен? утренний бекап журнала логов ведь хранит в себе начальный lsn от последнего бекапа журнала транзакций,который мы удалим, а не от последнего разностного бекапа.
|
|||
47
krbIso
22.03.12
✎
15:22
|
(46) см (39) разностный бэкап начинает новую цепочку журналов.
|
|||
48
krbIso
22.03.12
✎
15:23
|
(47) соответственно при восстановлении нужен будет последний фул+последний разностный+журналы идущие уже от этого разностного бэкапа
|
|||
49
Ёпрст
22.03.12
✎
15:26
|
(46) уверен
:) Блин.. всё это проверяется за пару минут.. |
|||
50
mnail1979
22.03.12
✎
15:34
|
(47) В (43) >делаешь бекап лога. Я должен делать этот бекап с параметром TRUNCATE_ONLY? Т.е. получается, если я использую этот параметр, тогда цепочка начнется от разностного бекапа, а если без этого параметра, тогда даже если после бекапа журнала сделать разностный бекап, то цепочка идет от последнего журнала лога, а не от разностного. Правильно? По крайней мере щас у меня так, утренний бекап журнала связан цепочкой в вечерним бекапом журнала (21.00), а не с ночного разностного (05.00)
|
|||
51
Ёпрст
22.03.12
✎
15:36
|
(50) трункейт онли не обрежет тебе лог, если че
нужно шринк делать еще |
|||
52
krbIso
22.03.12
✎
15:44
|
(50) угу, бэкап с трункейтом тебе усечет лог, + нужно как в (51) еще сделать шринк файла.
Но там могут быть нюансы, если есть активные логические журналы, то шринк отрежет до них. |
|||
53
mnail1979
22.03.12
✎
16:27
|
(52) учитывая что я новичок, прошу не судить за возможно элементарные вопросы.
И так 2 возможно очень элементарных вопроса(но не для меня :) ): 1. Как работает шринк, т.е. если я указываю размер к примеру 1024 Кб, за счет чего он уменьшает до этого размера. Что стоит к примеру поставить 10 Кб. 2. (43) < удаление с диска обработкой обслуживания. Что такое обработка обслуживания. где ее найти? |
|||
54
Ёпрст
22.03.12
✎
16:36
|
1.http://msdn.microsoft.com/ru-ru/library/ms189493.aspx
2.Управление-ПланыОбслуживания-Твой план -Задача очистка после обслуживания |
|||
55
Мыш
23.03.12
✎
08:17
|
(53) По первому вопросу: уменьшает за счет неиспользуемых страниц в файле.
|
|||
56
Ёпрст
23.03.12
✎
08:40
|
(55) ну не намного
:) |
|||
57
Йохохо
23.03.12
✎
10:44
|
(53) он не уменьшает до этого размера. он освобождает не используемые участки пока максимально не приблизится к этому значению. если успешно уменьшишь до 10, получишь тормоза, когда лог начнет расти. если места в логе нет скуль вешает "пива нет" и ждет пока появится (оно).
смысла в шринке нет, если ты только не переносишь файл лога физически куда то, или места мало (50) у тебя похоже 2 цепочки бэкапов, сравнивай параметры. бэкап лога содержит транзакции с последнего бэкапа своей цепочки. возможно у тебя бэкап сет нейм динамически создается? |
|||
58
упс
23.03.12
✎
12:25
|
(57) две цепочки журналов - это пять.
в (50) все верно, но и (47) верно. Дифференциальный бэкап, как и полный, не разрывает цепочку журналов, но позволяет начинать ее заново. Пример: в 21.00 полный бэкап, в 22.00 бэкап лога, в 23.00 бэкап лога, в 00.00 диф бэкап, в 01.00 бэкап лога, 02.00 бэкап лога. Можно восстановиться так: полный, бэкапы лога с 22.00 и 23.00, бэкапы лога с 01.00 и 02.00 - все будет нормально. А можно восстановиться так: полный, диф бэкап с 00.00, бэкапы лога с 01.00 и 02.00 - тоже все будет нормально. Такой вариант и предлагается в (47). Единственный косяк - если вдруг что-то поломается после бэкапа с TRUNCATE_ONLY и перед нормальным бэкапом лога, то восстановиться на момент времени перед сбоем будет нельзя. |
|||
59
Йохохо
23.03.12
✎
15:24
|
(58) предложи свой, отличный, вариант объяснения (9)
|
|||
60
упс
23.03.12
✎
18:27
|
(59) читай (58) до просветления. Вкратце: дифференциальный (который тут почему-то называют разностным) и полный бэкапы НЕ НАРУШАЮТ цепочку журналов, но МОГУТ ее НАЧАТЬ.
|
|||
61
ILM
гуру
23.03.12
✎
19:50
|
(0) ТС уже предлагали попробовать повосстанавливать базы из того бэкапа, который он настроил и делает )))))
|
|||
62
Йохохо
23.03.12
✎
22:54
|
(60) у меня нет к тебе вопросов, объясни (9)
или прочитай хотя бы и потом ответь на (59) |
|||
63
Йохохо
23.03.12
✎
22:56
|
(60) хотя не надо, в этой фразе всё твоё понимание
"Единственный косяк - если вдруг что-то поломается после бэкапа с TRUNCATE_ONLY и перед нормальным бэкапом лога, то восстановиться на момент времени перед сбоем будет нельзя." |
|||
64
упс
24.03.12
✎
06:53
|
(62)(63) да потому что журнал после полного или диф бэкапа действительно НЕ УРЕЗАЕТСЯ, блин.
http://sp-who.livejournal.com/2332.html |
|||
65
mnail1979
24.03.12
✎
09:42
|
ладно. Типа разобрался. Спасибо большое.
Только вот теперь никак не пойму. Делаю use my_database go dbcc shrinkfile(N'my_database_log') запускаю эти команды в запросе в mssql server management studio - все работает, ldf уменьшился с 7 гигов до 700 килобайтов. Но если это же точно также написать в "планы обслуживания"->выполнение инструкции T-SQL, то он не выполняется, ругается что по базе "master" не найден файл my_database_log. Т.е. типа use не срабатывает чтоли, и не переключается на нужную мне базу, или в ситнаксисе что то не так? Никак не пойму |
|||
66
aspirator23
24.03.12
✎
16:24
|
(65) не увлекайся мелкими логами. Сервер будет дергать диск приращивая лог файл, когда ему потребуется. Размер лог по умолчанию нужно поставить в model. И размер его нужно резать до 10-30% от размера базы(размер процента зависит от возможностей).
|
|||
67
mnail1979
25.03.12
✎
18:52
|
(66) не совсем понял. Что значит поставить в model. Где это. И что получается, по мере роста базы мне каждый раз менять регламентное задание, изменяя размер сжатия? А что если я вообще не буду никогда выполнять эту команду dbcc shrinkfile?
И еще, в (65) моим главным вопросом было следующее: почему в query эта команда срабатывает, а в "планы обслуживания"->выполнение инструкции T-SQL - нет. |
|||
68
упс
26.03.12
✎
08:24
|
(67) какая у вас версия sql server (select @@version) и management studio (help->about)? Возможно имеет смысл их обновить, с maintenance plans, емнип, были проблемы в старых версиях - rtm, sp 1, sp 2.
|
|||
69
dk
26.03.12
✎
08:49
|
а размер базы можно увидеть?
а то может там база 5 гигов и стока заморочек с бэкапами ни к чему |
|||
70
Ёпрст
26.03.12
✎
10:06
|
(65) у меня так и всё работает
USE [databasename] GO DBCC SHRINKFILE (N'databasename_log' , 0, TRUNCATEONLY) GO |
|||
71
Йохохо
26.03.12
✎
10:33
|
(64) ты вроде и сам в курсе, какие транзакции попадают в бекап
те, что ДО бекапа, диф или полного, _не попадают!!11.. |
|||
72
упс
26.03.12
✎
13:37
|
(71) я уже запутался.
В какой бэкап? Если в бэкап лога, при том что цепочка журналов не повреждена - то попадают. В бэкапе лога будут ВСЕ транзакции, "прошедшие" после предыдущего бэкапа лога! Если раньше бэкапа лога не было, или цепочка журналов была нарушена (BACKUP LOG WITH TRUNCATE_ONLY, переход в SIMPLE и обратно) - то в бэкап лога попадут все транзакции, "прошедшие" после полного или диф бэкапа. |
|||
73
упс
26.03.12
✎
13:39
|
(71) как ты думаешь, почему растет лог, если делать только полные/диф бэкапы, но не делать бэкап лога?
|
|||
74
mnail1979
26.03.12
✎
15:14
|
(69) :) база пока что всего 4 гига. Но я хочу щас все подготовить на будущее
|
|||
75
dk
26.03.12
✎
15:23
|
у меня база 30 гб full backup занимал 50 секунд, когда в базе никого
|
|||
76
Йохохо
26.03.12
✎
23:59
|
(72) "В бэкапе лога будут ВСЕ транзакции, "прошедшие" после предыдущего бэкапа лога!"
нет, ты не прав =) |
|||
77
упс
27.03.12
✎
05:52
|
(76) заеbись аргументация.
на, осмысливай: http://screencast.com/t/0MHVpzjEyRH8 как ты считаешь, как у меня получилось восстановить базу данных на момент времени между первым бэкапом лога и вторым полным бэкапом, если во втором бэкапе лога нет этих транзакций? Сейчас, правда, подумал, что надо было восстановить не перед, а после удаления, но с этим ты уже и сам сможешь поиграться и все попробовать. |
|||
78
Йохохо
31.03.12
✎
01:54
|
думаешь правда интересно твои мультики смотреть?
времена в бэкапе лога > времени бэкапа дб слово цепочка ты уже выучил |
|||
79
mnail1979
17.04.12
✎
08:44
|
Люди, а если я перешел на 2008 Р2, как мне обойти backup log with truncate_only?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |