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

Откуда:
Сообщений: 19
Что имеется:
1) Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
2) Server 2008 R2 Enterprise, 64-разрядный

Что сделал:

Для базы mart настроил бэкап. Сама база в режиме FULL
Настроил два задания:
Первое задание:

Полный бэкап, команда в 3 ночи:
Шаг1

BACKUP DATABASE [mart] TO DISK = N'E:\SQL_Backup\Mart.bak' WITH DESCRIPTION = N'Полный бэкап', RETAINDAYS = 1, NOFORMAT, INIT, NAME = N'Mart_full', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'mart' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'mart' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "mart" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'E:\SQL_Backup\Mart.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO

Шаг2
BACKUP LOG [mart] TO DISK = N'E:\SQL_Backup\Mart.bak' WITH DESCRIPTION = N'Журнал транзакций (полный)', RETAINDAYS = 1, NOFORMAT, NOINIT, NAME = N'Mart_Log_Full', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'mart' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'mart' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "mart" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'E:\SQL_Backup\Mart.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO

Второе задание:
Бэкап журнала транзакций каждый час в течении рабочего дня:
BACKUP LOG [mart] TO DISK = N'E:\SQL_Backup\Mart_Log.bak' WITH DESCRIPTION = N'Промежуточный архив', RETAINDAYS = 1, NOFORMAT, NOINIT, NAME = N'Mart_Log', SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10
GO


Как понял бэкап будет актуален сутки и будет себя перезаписывать.
Основные бэкапы, так сказать для истории делаются раз в сутки средствами самой 1С.
Приведенный выше бэкап нужен для текущего дня, в случаи экстренного восстановления.

В чем вопрос:

Правильно ли все сделал? Не много не вкурил со вторым заданием, будет ли оно перезаписываться каждый день для актуальности журнала транзакций?
26 сен 11, 12:25    [11335806]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Правильно ли все сделал?

Увы, нет...

Опция RETAINDAYS не имеет никакого отношения к перезаписыванию отдельных бэкапов в файле. Такого функционала просто нет.

Такого понятия, как полный бэкап лога не существует. Полный бэкап бд (шаг 1) и так создержит и бэкап бд и бэкап лога.

Чтобы не городить городушки - воспользуйтесь SSIS Maintenance Tasks
26 сен 11, 20:21    [11338129]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
Троянский
Member

Откуда:
Сообщений: 19
Я, конечно, вообще в этом мало разбираюсь, но нужно как то настроить, чтоб база была легко восстановима в течении дня.

Как понял из мануала "RETAINDAYS = { days| @days_var } - Указывает количество дней, которое должно пройти, прежде чем этот набор носителей резервных копий может быть перезаписан. "

"такого понятия, как полный бэкап лога не существует." - это мой бред с терминологией.

У меня какая идея то была.
С утра сделать полный бэкап базы и лога. Затем с 8:00 до 21:00 каждый час делать бэкап лога транзакций. После 21:00 делается штатный бэкап базы средствами самой 1С. И на следующий день опять все сначала. Чтоб опять сделался полный бэкап базы, перезаписав предыдущий и с 8:00 до 21:00 делался опять заново бэкап лога транзакций, который бы накапливался в набор в течении дня, а на следующее утро перезаписывался бы и накапливался заново.

Что при таком случаи я получаю: каждодневный бэкап базы средствами 1С и промежуточные бэкапы средствами SQL, которые нужны для "экстренного восстановления", в случаи, если база полетела в течении дня.

Что добился: Каждодневный полный бэкап средствами SQL делается и перезаписывается каждый день, но вот бэкап лога записывается с накоплением по дням. При восстановлении он, конечно, предлагает только актуальные логи из всего набора, но мне это кажется как то не правильно. А вот как сделать, чтоб он накапливался в течении дня, а на следующий день перезаписывался и накапливался заново - ума не приложу.
27 сен 11, 08:40    [11339121]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Троянский,

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


Среди указанных по ссылке тасков, в том числе, есть и Maintenance Cleanup Task.
27 сен 11, 08:54    [11339164]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Троянский
А вот как сделать, чтоб он накапливался в течении дня, а на следующий день перезаписывался и накапливался заново - ума не приложу.
Вы можете просто в ваш первый джоб между 1 и 2 шагом вставить шаг удаления файла бакапа лога.

Или использовать Maintenance Tasks, как тут писали, но мне кажется, это слишком сложное средство для такой простой задачи.

Вот если задача усложнится - например, нужно будет хранить полные бакапы 5 дней, тогда Maintenance Tasks можно использовать.
27 сен 11, 09:37    [11339341]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
Троянский
Member

Откуда:
Сообщений: 19
Для меня конструктор служб SSIS вообще не подъемный в данный момент. Я с этими настройками весь день разбирался. Да и нет необходимости разбираться в этом конструкторе. Мне бы что попроще, хотя бы с агентом SQL разобраться по минимуму.
27 сен 11, 09:40    [11339352]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Троянский
Для меня конструктор служб SSIS вообще не подъемный в данный момент. Я с этими настройками весь день разбирался. Да и нет необходимости разбираться в этом конструкторе. Мне бы что попроще, хотя бы с агентом SQL разобраться по минимуму.


Агент - это всего лишь планировщик заданий. Не хочется возиться с SSIS - используйте утилиту командной строки sqlmaint.exe. Это будет проще, чем самому расписывать скрипты на удаление файлов бэкапа лога старше суток.
27 сен 11, 09:45    [11339374]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
pkarklin
Агент - это всего лишь планировщик заданий. Не хочется возиться с SSIS - используйте утилиту командной строки sqlmaint.exe. Это будет проще, чем самому расписывать скрипты на удаление файлов бэкапа лога старше суток.
Ну как же проще?

ТС не нужно делать файлы бакапов лога, достаточно делать один файл бакапа лога, и туда дописывать бакапы.

А раз в сутки его стирать в том-же джобе.
27 сен 11, 10:27    [11339600]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте про бэкап на SQL 2008  [new]
Троянский
Member

Откуда:
Сообщений: 19
Сделал так:
1) Полный бэкап базы, как описано в начале теме в 6:00 утра в папку "SQL_Backup"
2) С 8:00 по 21:00 каждый час бэкап лога, как описано в задание 2 в начале темы в папку "SQL_Backup"
3) В 21:30 основной бэкап средствами самой 1С
4) В 03:00 переброска полного бэкапа и бэкапа всех логов на новый удаленный диск, удаление всех файлов из папки "SQL_Backup". Этим занимается программа GoodSync
5) пункт 1.
27 сен 11, 10:43    [11339740]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить