Имя: Пароль:
1C
1С v8
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?