Я только что прочитал много документации MSDN и думаю, что понимаю различные модели восстановления и концепцию цепочки резервного копирования. У меня еще один вопрос:
Обрезает ли полная резервная копия базы данных журнал транзакций (с использованием режима полного восстановления)?
Если да: где это упоминается в MSDN? Все, что я смог найти, это то, что только BACKUP LOG обрезает журнал.
Если нет: почему? Поскольку полная резервная копия базы данных запускает новую цепочку резервного копирования, какой смысл сохранять завершенные транзакции? перед полная резервная копия активна в журнале?
Нет, это точно не так. В только то, что позволяет очищать / усекать журнал в моделях восстановления FULL или BULK_LOGGED, является резервная копия журнала - без исключений. У меня был этот аргумент некоторое время назад, и я опубликовал длинный и подробный пост в блоге с объяснением и сценарием, который вы можете использовать, чтобы доказать это себе на Заблуждения относительно журналов и резервных копий журналов: как убедиться.
Не стесняйтесь отвечать на дополнительные вопросы. Кстати - также см. Длинную статью, которую я написал для журнала TechNet Magazine на Понимание ведения журнала и восстановления в SQL Server.
Спасибо
При полном резервном копировании журнал НЕ обрезается, необходимо выполнить операцию резервного копирования журнала. Полная резервная копия НЕ переустанавливает цепочку журналов - это полностью испортит репликацию / доставку журналов и т. Д.
Вам нужно будет внимательно посмотреть, как SQL Server выполняет резервное копирование, но знайте, что текущие / длительные транзакции не включаются в резервную копию (в противном случае резервное копирование может никогда не завершиться), поэтому не совсем точно сказать, что полная резервная копия online-database гарантированно сделает следующую резервную копию журнала устаревшей.
Из моего понимания единственное, что обрезает журнал транзакций, - это резервная копия журнала.
Полная резервная копия копирует только достаточно журнала, чтобы он был согласован с транзакционной точки зрения, потому что для завершения операции резервного копирования требуется время, и за это время скопированные страницы могли измениться.
Вам по-прежнему нужны резервные копии журналов для восстановления на определенный момент времени.
У меня нет MSDN для ссылки, но я могу связать вас с Блог Пола Рэндала, который был разработчиком в группе SQL Server, написал DBCC CHECKDB и части электронной документации.
Он также отвечает на вопросы на этом форуме, так что это было бы еще более авторитетным, чем информация из вторых / третьих рук от меня :)
Люди часто имеют неправильное представление о полном резервном копировании и резервном копировании журналов. Чтобы бэкап работал в FULL
Для модели восстановления резервной копии необходимо использовать t-журналы, так как во время резервного копирования в базе данных все еще могут происходить транзакции (если вы не выполните так называемый COLD
резервное копирование при выключении базы данных). Oracle использует ту же концепцию, когда у вас есть база данных в ARCHIVELOG
Режим. Последовательность резервного копирования сводится к следующему:
По этой причине t-журналы по умолчанию не усекаются / не сжимаются, так как они являются важной частью продолжения транзакции на этапе резервного копирования.
Не путайте обрезку журнала с его сжатием.
TRUNCATE означает удаление транзакций в журнале, которые находятся перед последней контрольной точкой (контрольной точкой является момент, когда транзакции сбрасываются в саму базу данных). Это делается с помощью команды BACKUP.
УЖАТЬ журнал - значит уменьшить фактический размер файла журнала. Это делается с помощью команд DBCC.
По сути, вам не нужно каждый раз автоматически сжимать журнал транзакций, потому что журналам транзакций нужно место для работы, и если вы автоматически усекаете, он останется почти того же размера.