SQL Server (2005/2008): чи повністю виконує резервне копіювання журналу журналу в повному режимі відновлення


41

Я щойно прочитав багато документації MSDN і, думаю, я розумію різні моделі відновлення та концепцію ланцюга резервного копіювання. У мене ще одне питання:

Чи повна резервна копія бази даних обрізає журнал транзакцій (використовуючи режим повного відновлення)?

  • Якщо так: Де це згадується в MSDN? Все, що я міг знайти, це те, що лише BACKUP LOG обрізає колоду.

  • Якщо ні: чому? Оскільки повне резервне копіювання бази даних запускає новий ланцюг резервного копіювання, який сенс зберігати транзакції, які були оброблені перед активною повною резервною копією в журналі?

Відповіді:


43

Ні - це точно не так. Тільки річ , яка дозволяє журнал , щоб очистити / усічення в моделях повного відновлення або BULK_LOGGED не є резервною копією журналу - без винятків. У мене цей аргумент був деякий час назад, і я розмістив довгу і детальну публікацію в блозі з поясненням і сценарієм, який ви можете використовувати, щоб довести це собі на помилках навколо журналу та резервного копіювання журналу: як переконати себе .

Сміливо стежте за додатковими запитаннями. Btw - також дивіться довгу статтю, яку я написав для журналу TechNet про розуміння ведення журналу та відновлення в SQL Server .

Дякую


Дякую вам, сер, за ваш ВІДПОВІДНИЙ ВІДПОВІДЬ та статтю, яка відповіла на мільйон запитань.
М.Алі

13

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

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

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


8

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

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

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

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

Він також відповідає на питання на цьому форумі, так що це буде ще кращим авторитетом, ніж інформація 2-ї / 3-ї руки від мене :)


5

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

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

Саме тому t-журнали за замовчуванням не скорочуються / стискаються, оскільки вони є важливою частиною продовження транзакції під час фази резервного копіювання.


1

Не плутайте обрізання журналу зі скороченням журналу.

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

  • SHRINK журнал - це зменшити фактичний розмір файлу журналу. Це робиться за допомогою команд DBCC.


1

В основному, вам не потрібно щоразу зменшувати журнал транзакцій, оскільки журнали транзакцій потребують простору для роботи, а якщо автоматично обрізати, він залишатиметься майже однакового розміру.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.