Разница между полным резервным копированием и полным копированием только для копирования

17

Я видел в центральном потоке SQL Server. Обрезает ли полная резервная копия журнал? эта полная резервная копия не усекает журнал:

Нет. Ни полное, ни дифференциальное резервное копирование не усекает журнал транзакций. - Линн Петтис
Нет - полная резервная копия не усекает журнал. - Чед Кроуфорд

Так в чем же разница между полным резервным копированием и полным резервным копированием только для копирования?

Для резервной копии журнала существует резервная копия только для копирования, которая предотвращает разрыв цепочки журналов без усечения журнала. Так что же такое полная копия только для копирования?

IT исследователь
источник

Ответы:

14

По крайней мере, вам нужно рассмотреть дифференциальные резервные копии. Если только полное копирование не используется, ваша следующая резервная копия будет отключена. Резервные копии только для копирования :

Полные резервные копии только для копирования (все модели восстановления) Резервная копия только для копирования не может служить дифференциальной базой или дифференциальной резервной копией и не влияет на дифференциальную базу.

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

Ремус Русану
источник
24

Основное различие между полным и только для копирования резервным копированием заключается в том, является ли LSN (порядковый номер журнала) и, в частности, DatabaseBackupLSN обновляется обновляется.

Когда вы делаете полную резервную копию, DatabaseBackupLSNобновляется. После создания полной резервной копии, если вы делаете дифференциальную резервную копию, эта резервная копия имеетDatabaseBackupLSN что и полная резервная копия, и, следовательно, SQL может связать их вместе (например, из этих LSN он знает, что diff следовал за полной).

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

С резервной копией только для копирования она не затрагивает DatabaseBackupLSNи, следовательно, не нарушает эту цепочку резервных копий.

Есть хорошее описание проблемы, а также почему многие люди неправильно ее понимают в книге «Разрыв резервной цепи - REDUX (или Eating Crow) » Майкла К. Кэмпбелла, которая включает в себя такие хорошие визуальные руководства, как этот:

Образ SQLmag - полное резервное копирование v только резервные копии

Для хорошего объяснения четырех разных номеров LSN и того, как они используются, взгляните на « Понимание номеров последовательностей журналов SQL Server для резервных копий » Саймона Лью.

Способ избежать этой проблемы состоит в том, чтобы не делать больше чем одну вещь, делающую стандартные резервные копии базы данных. Любое резервное или вторичное резервное копирование следует выполнять с помощью параметра «только для копирования» , см. Подробности в разделе « Резервные копии только для копирования» (SQL Server) , но, по сути, вы используете опцию «Резервное копирование только в копии» в SSMS, через T-SQL, WITH COPY_ONLYуказанный в команде. или с помощью PowerShell используйте -CopyOnlyпараметр.

Кит Лэнгмид
источник
1
Для добавления: Практически ТОЛЬКО КОПИЯ позволяет создавать резервные копии не для целей резервного копирования. Для клиента резервное копирование выполняется автоматически в систему резервного копирования предприятия - получение восстановления - это PAINFULL, особенно получение его в другой среде (работа с документами в течение дня). ТОЛЬКО КОПИЯ позволяет мне сделать копию БЕЗ вмешательства в резервную копию, управляемую резервной копией предприятия, а затем восстановить ее в тестовой среде.
TomTom,
12

Предположим, что у нас есть база данных с запланированным резервным копированием. Полное резервное копирование выполняется один раз в 24 часа в 00:00, также у нас есть разностные резервные копии, которые запускаются каждые 6 часов, и резервные копии журнала транзакций, которые запускаются каждый час. Итак, что если нам нужно сделать дополнительную полную резервную копию в середине дня, чтобы восстановить другой сервер? Что мы будем делать в этом случае. Конечно, мы можем сделать полную резервную копию.

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

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

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

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

введите описание изображения здесь

Александр Омельченко
источник
2

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

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

Например: скажем, у вас есть сценарий резервного копирования, который выполняет полное резервное копирование каждые 6 часов (полночь, 6 часов утра, полдень, 6 часов вечера) и резервное копирование журнала каждые 15 минут. В 9 утра поступает запрос на размещение копии вашей БД на тестовом сервере. Вы хотите выполнить резервное копирование, не нарушая цепочку журналов и не нарушая задания резервного копирования. Это когда резервная копия только для копирования. Резервная копия только для копирования не будет нарушать ваши обычные наборы резервных копий.

StanleyJohns
источник
1
Я не думаю, что цепочка журналов эффектов резервного копирования только для копирования. Полное резервное копирование только для копирования не сбрасывает дифференциальную базу. Это единственное отличие. См. Эти ссылки: sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 и sqlinthewild.co.za/index.php/2011/03/08/…
ИТ-исследователь
1
Я не согласен с вашим ответом. И полное резервное копирование, и только полное резервное копирование не нарушают цепочку журналов. За исключением «не сбрасываемой разностной базы» полное резервное копирование только для копии во всех отношениях совпадает с нормальным полным резервным копированием. Смотрите ссылку на форум, которую я упомянул в моем предыдущем комментарии.
IT исследователь
Допустим, у вас есть полная резервная копия: резервная копия FB1 и 3 журнала: LB1, LB2, LB3. Теперь выполните полное резервное копирование вручную: FB2 (без copy_only). Подождите еще 3 архива журнала: LB4, LB5, LB6. Теперь удалите FB2. Можете ли вы восстановить FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6?
СтэнлиДжонс
Да, я могу восстановить. я взял полное резервное копирование (не только для копирования) FB1, затем резервное копирование журнала (LB1), затем полное резервное копирование (не только копирование) FB2, а затем снова резервное копирование журнала (LB2). затем я восстановил в этой последовательности FB1 + LB1 + LB2. Восстановлены правильно и найдены все строки, введенные правильно.
IT исследователь
2
-1 потому что опция только для копирования с полной резервной копией не имеет ничего общего с цепями LSN. Исследователь указал на это, но вы не обновили / не удалили свой ответ.
Эдвард Дортланд
0

Полная резервная копия и резервная копия только не копируют цепочку журналов. только если вы сделаете резервную копию tlog, будет несоответствие LSN.

Кевин
источник