Основное различие между полным и только для копирования резервным копированием заключается в том, является ли LSN (порядковый номер журнала) и, в частности, DatabaseBackupLSN
обновляется обновляется.
Когда вы делаете полную резервную копию, DatabaseBackupLSN
обновляется. После создания полной резервной копии, если вы делаете дифференциальную резервную копию, эта резервная копия имеетDatabaseBackupLSN
что и полная резервная копия, и, следовательно, SQL может связать их вместе (например, из этих LSN он знает, что diff следовал за полной).
Проблема возникает, когда у вас запланировано выполнение резервных копий, поэтому у вас есть начальная полная резервная копия, а затем последовательность разностных данных. Если вы вручную создадите полную резервную копию, она обновит LSN, и с этого момента каждая дифференциальная резервная копия, которую вы делаете через запланированное резервное копирование, будет ссылаться на новый LSN, а не на исходную. В случае необходимости восстановления вы можете восстановить запланированное полное резервное копирование, но при попытке восстановить любое из разностных резервных копий, выполненных после ручного задания, вы обнаружите, что оно не будет выполнено, поскольку номера LSN больше не совпадают.
С резервной копией только для копирования она не затрагивает DatabaseBackupLSN
и, следовательно, не нарушает эту цепочку резервных копий.
Есть хорошее описание проблемы, а также почему многие люди неправильно ее понимают в книге «Разрыв резервной цепи - REDUX (или Eating Crow) » Майкла К. Кэмпбелла, которая включает в себя такие хорошие визуальные руководства, как этот:
Для хорошего объяснения четырех разных номеров LSN и того, как они используются, взгляните на « Понимание номеров последовательностей журналов SQL Server для резервных копий » Саймона Лью.
Способ избежать этой проблемы состоит в том, чтобы не делать больше чем одну вещь, делающую стандартные резервные копии базы данных. Любое резервное или вторичное резервное копирование следует выполнять с помощью параметра «только для копирования» , см. Подробности в разделе « Резервные копии только для копирования» (SQL Server) , но, по сути, вы используете опцию «Резервное копирование только в копии» в SSMS, через T-SQL, WITH COPY_ONLY
указанный в команде. или с помощью PowerShell используйте -CopyOnly
параметр.
Предположим, что у нас есть база данных с запланированным резервным копированием. Полное резервное копирование выполняется один раз в 24 часа в 00:00, также у нас есть разностные резервные копии, которые запускаются каждые 6 часов, и резервные копии журнала транзакций, которые запускаются каждый час. Итак, что если нам нужно сделать дополнительную полную резервную копию в середине дня, чтобы восстановить другой сервер? Что мы будем делать в этом случае. Конечно, мы можем сделать полную резервную копию.
BACKUP DATABASE Test TO DISK = 'C:/Test.bak'
Но когда вы делаете резервную копию базы данных, есть некоторые изменения, которые влияют на то, как будут восстанавливаться следующие резервные копии (разностные резервные копии и резервные копии журнала транзакций оба влияют на то, как будет выполняться операция восстановления). В этом случае все последующие разностные резервные копии будут зависеть от последней полной резервной копии. В случае потери последней полной резервной копии восстановление базы данных невозможно.
Но как мы можем сделать резервную копию, которая не повлияет на следующие процессы резервного копирования или восстановления этой базы данных. Именно здесь создаются резервные копии только для копирования.
BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY
источник
Если у вас есть полная резервная копия и набор резервных копий файлов журнала, цепочка журналов поддерживается с помощью LSN (порядковый номер журнала). Если вы хотите сделать резервную копию, не нарушая цепочку журналов, сделайте резервную копию только для копирования.
Если вы не выполните резервное копирование только для копирования, цепочка журналов будет разорвана, а созданная вами резервная копия будет последней полной резервной копией. Это означает, что предыдущие резервные копии журнала не могут быть применены к вновь созданным полным резервным копиям. Цепочка журналов в основном поддерживается для восстановления на определенный момент времени или сценариев доставки журналов.
Например: скажем, у вас есть сценарий резервного копирования, который выполняет полное резервное копирование каждые 6 часов (полночь, 6 часов утра, полдень, 6 часов вечера) и резервное копирование журнала каждые 15 минут. В 9 утра поступает запрос на размещение копии вашей БД на тестовом сервере. Вы хотите выполнить резервное копирование, не нарушая цепочку журналов и не нарушая задания резервного копирования. Это когда резервная копия только для копирования. Резервная копия только для копирования не будет нарушать ваши обычные наборы резервных копий.
источник
Полная резервная копия и резервная копия только не копируют цепочку журналов. только если вы сделаете резервную копию tlog, будет несоответствие LSN.
источник