it-swarm-ru.tech

SQL Server (2005/2008): обрезает ли полное резервное копирование журнал в режиме полного восстановления

Я только что прочитал много документации MSDN и думаю, что понимаю различные модели восстановления и концепцию цепочки резервного копирования. У меня все еще есть один вопрос:

Обрезает ли полная резервная копия базы данных журнал транзакций (в режиме полного восстановления)?

  • Если да: где это упоминается в MSDN? Все, что я мог найти, это то, что только BACKUP LOG усекает журнал.

  • Если нет: почему? Поскольку полное резервное копирование базы данных запускает новую цепочку резервного копирования, какой смысл сохранять завершенные транзакции до полное резервное копирование в журнале?

41
Heinzi

Нет, определенно нет. Единственная вещь, которая позволяет очистить/усечь журнал в моделях восстановления FULL или BULK_LOGGED, является резервной копией журнала - без исключений. Некоторое время назад я имел этот аргумент и опубликовал длинный и подробный пост в блоге с объяснением и сценарием, который вы можете использовать, чтобы доказать это себе в Заблуждения относительно журнала и резервных копий журнала: как убедить себя ,.

Не стесняйтесь задавать дополнительные вопросы. Кстати, также смотрите длинную статью, которую я написал для TechNet Magazine по Понимание ведения журнала и восстановления в SQL Server .

Спасибо

43
Paul Randal

Полная резервная копия НЕ обрезает журнал, вы должны выполнить операцию резервного копирования журнала. Полная резервная копия НЕ переустанавливает цепочку журналов - это полностью испортило бы репликацию/доставку журналов и т.д.

Вы должны внимательно посмотреть, как SQL Server выполняет резервное копирование, но знаете, что выполняемые в полете/длительные транзакции не включаются в резервную копию (в противном случае резервное копирование может никогда не завершиться), поэтому не совсем точно сказать, что полная резервная копия онлайн-база данных гарантированно сделает следующую резервную копию журнала устаревшей.

http://msdn.Microsoft.com/en-us/library/ms175477.aspx

13
Matt Rogish

Насколько я понимаю единственное, что усекает журнал транзакций, это резервная копия журнала .

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

Вам все еще нужны резервные копии журналов для восстановления на определенный момент времени.

У меня нет MSDN для ссылки, но я могу связать вас с блог Пола Рэндала , который был разработчиком в команде SQL Server, написал DBCC CHECKDB и часть Books Online.

Он также отвечает на вопросы на этом форуме, так что это будет еще лучшим авторитетом, чем информация от 2-й/3-й руки от меня :)

8
Nick Kavadias

Люди часто имеют неправильное представление о полном резервном копировании и резервном копировании журнала. Чтобы резервное копирование работало в модели FULL восстановления резервной копии, необходимо использовать t-журналы, так как во время резервного копирования в базе данных могут все еще происходить транзакции (если вы не выполняете так называемый COLD резервное копирование при закрытии базы данных). Oracle использует ту же концепцию, когда у вас есть база данных в режиме ARCHIVELOG. Последовательность резервного копирования сводится к следующему:

  1. Начать резервное копирование - приостановить все действия в реальных файлах и записывать в t-логи.
  2. Выполните резервное копирование - все транзакции продолжаются, но не записываются в реальные файлы, они записываются в t-журналы
  3. Завершить резервное копирование - возобновить запись транзакций базы данных в реальные файлы.
  4. При необходимости сбросьте то, что находится в T-логах, в реальные файлы.

По этой причине t-журналы по умолчанию не усекаются/сокращаются, поскольку они являются важной частью продолжения транзакции на этапе резервного копирования.

5
Peter

Не путайте усечение журнала с сокращением журнала.

  • TRUNCATE означает удаление транзакций в журнале, которые находятся перед последней контрольной точкой (контрольная точка, когда транзакции сбрасываются в саму базу данных). Это делается с помощью команды BACKUP.

  • Чтобы сжать журнал, чтобы уменьшить фактический размер файла журнала. Это делается с помощью команд DBCC.

1
Lee Matthews

По сути, вам не нужно каждый раз автоматически сокращать журнал транзакций, потому что журналам транзакций нужно место для работы, и если вы усекаете их автоматически, они останутся почти одинакового размера.

1
zz