Что касается моего плана резервного копирования для SQL Server 2005, я хочу выполнить полную в воскресенье:
BACKUP DATABASE myDatabase TO DISK = 'D:\Database Backups\myDatabase_full.bak' WITH FORMAT
GO
Затем я хочу проводить дифференциал каждую ночь в оставшуюся часть недели:
BACKUP DATABASE myDatabase TO DISK = 'D:\Database Backups\myDatabase_Diff.bak' WITH DIFFERENTIAL
GO
Мое предположение заключалось в том, что если бы в базе данных было мало / нет активности, то разница не увеличилась бы в размере (или не увеличилась бы значительно).
Однако, когда я запускаю описанное выше дифференциальное резервное копирование (практически без активности), я вижу, что разностное резервное копирование увеличивается на мегабайты за раз. Почему он так увеличивается?
Спасибо
Что-то меняет вашу базу данных!
Такие вещи, как перестроение индекса или дефрагментация, вызовут изменения страницы. Откатанные изменения могли привести к изменению страниц, поэтому они также учитываются.
Кроме того, дифференциальные резервные копии считаются «нечеткими», поэтому в них будут содержаться данные журнала транзакций, необходимые для обеспечения согласованности.
Пол Рэндал написал очень крутой сценарий некоторое время назад он сообщит вам, сколько экстентов изменилось с момента создания последней полной резервной копии, так что вы можете использовать это, чтобы рассчитать, насколько большой будет ваш дифференциал.
Кроме того, вы должны иметь возможность использовать этот сценарий, чтобы сообщить вам, какие страницы были изменены в вашей базе данных. Это может помочь вам решить загадку с изменяющимися данными.
Помните, что дифференциал - это не то же самое, что инкремент. Например, если у вас есть база данных размером 100 МБ и вы вносите 5 МБ изменений, каждая дифференциальная резервная копия будет иметь размер не менее 5 МБ. При использовании инкрементальной базы данных, если у вас есть база данных размером 100 МБ и вы делаете 5 МБ изменений в понедельник и не вносите изменений во вторник, у вас будет полная резервная копия 100 МБ, добавочная 5 МБ на понедельник и небольшая резервная копия размером менее 1 МБ на вторник.
В случае дифференциального копирования, если у вас есть база данных размером 100 МБ и вы внесете 5, 1, 3 и 5 МБ изменений в течение следующих 4 дней, у вас будут разностные резервные копии размером 5, 6, 9 и 14 МБ.
Ты полностью уверен что в этой базе данных вообще нет активности? Возможно, вы могли бы запустить профилировщик, чтобы увидеть, не происходит ли чего-то, чего вы не ожидаете, а также проверить планы обслуживания или запланированные задачи на предмет всего, что может изменять данные.
Тем не менее ... Я понимаю, что у меня нет верного ответа. Ежедневные разницы, которые я делаю для одной конкретной базы данных (~ 6 ГБ), всегда увеличиваются в выходные дни, даже если теоретически никто не вошел в приложение, которое использует эту базу данных. Я не удосужился изучить это, так как знаю, что на этом сервере есть службы, которые иногда читают / записывают в эту базу данных по запросу, хотя и нечасто.
Дифференциальная резервная копия создает резервные копии 8К страниц, которые были "затронуты".
Если все ваши изменения небольшие и относятся к одной и той же области, у вас будет небольшая резервная копия. Что маловероятно.
Дифференциальная резервная копия может не увеличиваться, если вы продолжаете загрязнять одни и те же страницы (что также маловероятно)
Некоторые вещи, которые могут испортить страницу:
Я (в основном java-разработчик) сталкиваюсь с той же проблемой, что мой live db составляет 7,5 ГБ, а его резервные копии diff в день - 1,5 ГБ. (на самом деле мы делаем резервные копии diff в течение 1 часа) Когда я запускал сценарий randy в течение половины дня (то есть во время обеда, который составляет половину полного рабочего дня), я получил следующий результат:
общее изменение в процентах 125658 17169 13,66
Я уверен, что это старое приложение, и очень немногие люди используют его, но как это может быть возможно показать 17169 измененных экстентов, которые вызывают: 17169 * 64k => 1098,816 МБ (разница почти в 1 ГБ) для такого менее используемого приложения. Поделитесь, пожалуйста, своими идеями ... как я могу отладить это дальше ?? Я имею в виду, как я могу уменьшить экстенты, чтобы получить небольшие различия.