Резервное копирование транзакций SQL Server vs Logs

Я унаследовал среднеразмерную критическую для бизнеса базу данных SQL Server 2008 и пытаюсь обернуть голову вокруг планирования резервного копирования. (Я разработчик, а не администратор базы данных.)

Как наша система настроена прямо сейчас, есть две резервные системы:

  1. Еженедельные полные резервные копии (.bak) и почасовой журнал транзакций (.trn). Мы сохраняем несколько наборов этих резервных копий, и они регулярно отправляются за пределы предприятия.
  2. Журналы SQL Server (.ldf), при этом модель восстановления установлена ​​в Full. Этот файл находится на отдельном диске из основного файла .mdf, но в противном случае не выполняется резервное копирование.

В случае аварийного восстановления (или при восстановлении резервных копий на dev-машине) моя процедура заключается в использовании файлов .bak а затем примените файлы .trn. У нас есть сценарий, который делает эту процедуру относительно простой.

Мои вопросы:

  1. Возможно ли восстановить базу данных из файла .ldf? Что это даже за?
  2. Неужели излишне резервировать оба этих журнала транзакций?
  3. Важно ли создать резервную копию файла .ldf?
12 голосов | спросил Hank 18 AMpThu, 18 Apr 2013 06:37:34 +040037Thursday 2013, 06:37:34

1 ответ


15

Нет, это невозможно восстановить базу данных из ldf-файла. Файл ldf будет восстановлен вместе с файлами mdf.

Нет, это не избыточно, поскольку у них есть две разные цели.

Важно делать полные резервные копии и резервные копии журналов транзакций. Только наличие копии ldf-файла не поможет вам восстановить базу данных.

Что касается файла ldf, то ldf - журнал транзакций. Подумайте об этом как о круговом буфере, который записывает изменения в вашу базу данных. Когда вы обновляете строку, это изменение немедленно записывается в ldf. В какой-то момент в будущем (обычно менее пяти минут) измененные данные записываются в файл mdf.

Если сервер разбился или произошел сбой питания, когда SQL запускается, он считывает ldf и повторно применяет (REDO) эти изменения.

Кроме того, если у вас есть транзакция, которая не была совершена, и произошел сбой, все изменения, сделанные этой транзакцией, должны быть отменены, чтобы сделать базу данных согласованной. В файле ldf также есть эта задача. (UNDO)

Я упомянул выше, что файл ldf является круговым. Выполнение резервного копирования журнала транзакций (.trn) копирует часть файла ldf. После безопасного создания файла trn sql может повторно использовать эту часть ldf-файла. Серия резервных копий trn создает цепочку, в которой записываются все изменения, внесенные в базу данных. Конечно, если вы никогда не брали резервную копию журнала транзакций, файл ldf будет расти, расти и расти.

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

Я замалчиваю некоторые важные детали, но суть в том, что ldf - это рабочий файл, который записывает последние изменения в базу данных. Trn-файлы - это копии частей ldf, сделанные в предположении, что вы будете безопасны, чтобы sql мог повторно использовать пробел в ldf, и если произойдет сбой в бедствии, вы будете иметь их в другом месте.

ответил StrayCatDBA 18 AMpThu, 18 Apr 2013 07:41:41 +040041Thursday 2013, 07:41:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132