Diferencia entre copia de seguridad completa y copia de seguridad completa de solo copia

17

Vi en el subproceso central de SQL Server ¿Una copia de seguridad completa trunca el registro? esa copia de seguridad completa no trunca el registro:

No. Las copias de seguridad completas o diferenciales truncan el registro de transacciones. - Lynn Pettis
No: una copia de seguridad completa no trunca el registro. - Chad Crawford

Entonces, ¿cuál es la diferencia entre el respaldo completo y el respaldo completo de solo copia?

Para la copia de seguridad del registro hay una copia de seguridad de solo copia que evita que la cadena de registro se rompa sin truncar el registro. Entonces, ¿qué es la copia de seguridad completa de solo copia?

Investigador de TI
fuente

Respuestas:

14

Como mínimo, debe tener en cuenta las copias de seguridad diferenciales. A menos que se utilice solo copia completa, su próxima copia de seguridad diferencial estará desactivada. Copias de seguridad de solo copia :

Copias de seguridad completas de solo copia (todos los modelos de recuperación) Una copia de seguridad de solo copia no puede servir como base diferencial o copia de seguridad diferencial y no afecta a la base diferencial.

La única diferencia entre copia completa y copia completa es que la copia completa no rompe la cadena diferencial. Ninguno de ellos rompe la cadena de registro ya que ninguno de ellos trunca el archivo de registro.

Remus Rusanu
fuente
24

La diferencia clave entre las copias de seguridad completas y las copias de solo copia es si el LSN (número de secuencia de registro) o no y, específicamente, DatabaseBackupLSNse actualiza.

Cuando realiza una copia de seguridad completa, DatabaseBackupLSNse actualiza. Después de realizar la copia de seguridad completa, si realiza una copia de seguridad diferencial, esa copia de seguridad tiene una DatabaseBackupLSNque coincide con la de la copia de seguridad completa y, por lo tanto, SQL puede vincular las dos (por ejemplo, sabe por esos LSN que la diferencia siguió a la completa).

El problema surge cuando ha programado la ejecución de copias de seguridad, por lo que tiene una copia de seguridad completa inicial y luego una secuencia de diferenciales. Si realiza una copia de seguridad completa manualmente, actualizará el LSN y, a partir de ese momento, cada copia de seguridad diferencial que realice mediante la copia de seguridad programada hará referencia a ese nuevo LSN, no al original. En el caso de que necesite restaurar, puede restaurar su copia de seguridad completa programada, pero cuando intente restaurar cualquiera de las copias de seguridad diferenciales realizadas después del trabajo manual, encontrará que fallará ya que los LSN ya no coinciden.

Con una copia de seguridad de solo copia no toca el DatabaseBackupLSN, y como tal no rompe esa cadena de copias de seguridad.

Hay una buena descripción del problema, así como también por qué tanta gente lo malinterpreta en Breaking the Backup Chain - REDUX (or Eating Crow) de Michael K. Campbell, que incluye buenas guías visuales como esta:

Imagen de SQLmag - Copia de seguridad completa v Copia_Solo copias de seguridad

Para una buena explicación de los cuatro LSN diferentes y cómo se usan, eche un vistazo a Comprensión de los números de secuencia de registro de SQL Server para copias de seguridad por Simon Liew.

La forma de evitar el problema es no tener más de una cosa haciendo copias de seguridad estándar de una base de datos. Cualquier copia de seguridad adhoc o secundaria debe hacerse con la opción de solo copia, vea Copias de seguridad de solo copia (SQL Server) para más detalles, pero esencialmente usa la opción "Copiar solo copia de seguridad" en SSMS, a través de T-SQL especifique WITH COPY_ONLYen el comando , o con PowerShell, use el -CopyOnlyparámetro

Keith Langmead
fuente
1
Para agregar: Prácticamente COPY ONLY permite hacer una copia de seguridad para fines que no sean de copia de seguridad. Para un cliente, las copias de seguridad se realizan de forma automática en un sistema de copia de seguridad empresarial: obtener una restauración es DOLOROSO, particularmente llevar una a un entorno diferente (papeleo, hacer durante el día). COPY ONLY me permite hacer una copia SIN interferir con la copia de seguridad administrada por la copia de seguridad empresarial y luego restaurarla en un entorno de prueba.
TomTom
12

Supongamos que tenemos una base de datos con copias de seguridad programadas. La copia de seguridad completa se ejecuta una vez cada 24 horas a las 00:00, también tenemos copias de seguridad diferenciales que se ejecutan cada 6 horas y copias de seguridad del registro de transacciones que se ejecutan cada hora. Entonces, ¿qué pasa si necesitamos hacer una copia de seguridad completa adicional en el medio del día, para restaurar otro servidor? ¿Qué haremos en este caso? Por supuesto, podemos hacer una copia de seguridad completa.

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

Pero cuando realiza una copia de seguridad de una base de datos, hay algunos cambios que influyen en cómo se restaurarán las siguientes copias de seguridad (las copias de seguridad diferenciales y las copias de seguridad del registro de transacciones influyen en cómo será la operación de restauración). En este caso, todas las siguientes copias de seguridad diferenciales dependerán de la última copia de seguridad completa. Si se pierde la última copia de seguridad completa, la restauración de la base de datos es imposible.ingrese la descripción de la imagen aquí

Pero, ¿cómo podemos hacer una copia de seguridad que no afecte los siguientes procesos de copia de seguridad o restauración para esa base de datos? Aquí es donde las copias de seguridad de solo copia entran en su lugar.

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

ingrese la descripción de la imagen aquí

Alexandr Omelchenko
fuente
2

Cuando tiene una copia de seguridad completa y un conjunto de copias de seguridad de archivos de registro, se mantiene una cadena de registro utilizando el LSN (Número de secuencia de registro). Si desea hacer una copia de seguridad sin romper la cadena de registro, haga una copia de seguridad de solo copia.

Si no realiza una copia de seguridad de solo copia, la cadena de registro se rompe y la copia de seguridad que realice será la última copia de seguridad completa. Esto significa que las copias de seguridad de registros anteriores no se pueden aplicar a las copias de seguridad completas recién tomadas. La cadena de registro se mantiene principalmente para recuperaciones puntuales o escenarios de envío de registros.

Por ejemplo: supongamos que tiene un escenario de copia de seguridad que realiza copias de seguridad completas cada 6 horas (medianoche, 6 am, mediodía, 6 pm) y registra las copias de seguridad cada 15 minutos. Una solicitud llega a las 9 am para que se coloque una copia de su base de datos en un servidor de prueba. Desea realizar la copia de seguridad sin romper su cadena de registro o interrumpir sus trabajos de copia de seguridad. Esto es cuando se toma una copia de seguridad de solo copia. La copia de seguridad de solo copia no interrumpirá sus conjuntos de copias de seguridad habituales.

StanleyJohns
fuente
1
No creo que la cadena de registro de efectos de copia de seguridad de solo copia. Una copia de seguridad completa de solo copia no restablezca la base diferencial. Esa es la única diferencia. Vea estos enlaces sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 y sqlinthewild.co.za/index.php/2011/03/08/…
Investigador de TI
1
No acepté tu respuesta. Tanto la copia de seguridad completa como la copia de seguridad completa no copian la cadena de registro. Además de "no restablecer la base diferencial", una copia de copia de seguridad completa es exactamente igual a una copia de seguridad completa normal en todos los sentidos. Vea el enlace del foro que he mencionado en mi comentario anterior.
Investigador de TI
Digamos que tiene una copia de seguridad completa: FB1 y 3 copias de seguridad de registro: LB1, LB2, LB3. Ahora haga una copia de seguridad completa manual: FB2 (sin copy_only). Espere 3 copias de seguridad de registro más: LB4, LB5, LB6. Ahora elimine FB2. ¿Puedes restaurar FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6?
StanleyJohns
Sí, puedo restaurar. Hice una copia de seguridad completa (no solo copia) FB1, luego logré una copia de seguridad (LB1), luego una copia de seguridad completa (no solo copia) FB2, y luego otra vez la copia de seguridad de registro (LB2). luego restauré en esta secuencia FB1 + LB1 + LB2. Restaurado correctamente y encontró todas las filas ingresadas correctamente.
Investigador de TI
2
-1 porque la opción de copiar solo con una copia de seguridad completa no tiene nada que ver con las cadenas LSN. Itresearcher lo señaló pero no actualizó / eliminó su respuesta.
Edward Dortland el
0

Una copia de seguridad completa y copia de seguridad solo no rompen la cadena de registro. solo si hace una copia de seguridad de tlog habrá una falta de coincidencia de LSN.

Kevin
fuente