Por: Atif Shehzad | Actualizado: 2009-06-15 | Comentarios (4) | Relacionado: Más > Respaldo
Problema
He implementado un plan de respaldo para mis bases de datos de SQL Server. Tomo una copia de seguridad completa diaria apoyada con copias de seguridad diferenciales cada hora. Se documenta un plan de restauración basado en este plan de copias de seguridad junto con la ubicación y la hora de las copias de seguridad mencionadas en el plan. A menudo tengo que actualizar el servidor de pruebas o de desarrollo con una copia reciente de la base de datos de producción. Para ello, realizo una copia de seguridad completa de la base de datos necesaria. El problema es que estas copias de seguridad ad hoc interrumpen mi secuencia de recuperación planificada en caso de que sea necesaria. ¿Hay alguna forma de que mis copias de seguridad ad hoc no interrumpan la secuencia de mi plan de copias de seguridad?
Solución
Afortunadamente, en SQL Server 2005 y en adelante tenemos una opción de copia de seguridad para esta situación. Esta opción de copia de seguridad se conoce como copias de seguridad de sólo copia. Esta opción es específicamente para crear una copia de seguridad ad hoc que no perturbe la secuencia de restauración planificada para esa base de datos.
Las copias de seguridad de sólo copia pueden utilizarse para crear una copia de seguridad completa o una copia de seguridad del registro de transacciones. Esta opción no está implementada para las copias de seguridad diferenciales. En la práctica, rara vez será necesario crear una copia de seguridad del registro de sólo copia, pero la opción de sólo copia puede utilizarse con frecuencia con las copias de seguridad completas.
Aunque la opción de sólo copia está disponible para SQL Server 2005, no es posible crearlas con SSMS en SQL 2005. Si tienes SSMS 2008 puedes usar laGUI o tienes que usar una sentencia T-SQL para crear copias de seguridad Copy Only.
Primero vamos a ver cómo se puede hacer usando SSMS 2008 para crear Copy Onlybackup
- Vaya a la ventana de la base de datos de copia de seguridad como lo haría para una copia de seguridad normal
- Justo debajo del menú «Tipo de copia de seguridad», encontrará una casilla de verificación para «Copiar sólo copia de seguridad»
- Haga clic en esta casilla de verificación
- Rellene el resto de la información relacionada como lo haría para una copia de seguridad normal y haga clic en Aceptar
Nota: La casilla de verificación de «Copia de seguridad sólo» también estará activa para las copias de seguridad diferenciales, pero no tendrá otro efecto que el de crear una copia de seguridad diferencial normal.
En segundo lugar, para crear una copia de seguridad de sólo copia con T-SQL puede emitir el siguiente comando:
-- Create full backup with Copy Only optionBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO
Demostrando el concepto
Antes de continuar será bueno resumir el concepto de que una copia de seguridad completa con la opción de sólo copia es independiente de la secuencia de sus otras copias de seguridad normales.Así que después de crear una copia de seguridad con la opción de sólo copia, podrá trabajar con el plan de recuperación basado en sus copias de seguridad programadas sin que esto afecte a su proceso de restauración.
Utilizaremos la información del LSN (número de secuencia de registro) para rastrear la copia de seguridad completa que es la base para las copias de seguridad diferenciales. Primero anotaremos el LSN para la base diferencial de la base de datos de AdventureWorks.
--Script # 1: Note current differential base LSNSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Note differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO
El differential_base_lsn afecta a la secuencia en la que se restaurará la combinación de copias de seguridad en una recuperación. También se puede obtener información detallada sobre el LSN de cualquier base de datos en la tabla msdb..backupset.
Ahora tenemos que confirmar que una copia de seguridad completa sin la opción Copy Only actualizará el differential_base_lsn. Para ello, emitiremos un comando de copia de seguridad completa sin la opción Copy Only y anotaremos el cambio en el LSN para demostrar que el LSN de la base diferencial actualizado es el LSN de nuestra última copia de seguridad completa.
--Script # 2: Create full backup and compare LSN information-- Create full backup -- Run script after changing Backup pathBACKUP DATABASE AdventureWorks TO DISK = 'D:\WithoutCopyOnly_AdventureWorks.bak'GO-- Get differential_base_lsn after full backupSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Updated differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO-- Get LSN of recent full backup for match purposeSELECT database_name, backup_start_date, is_copy_only,first_lsn as 'LSN of full bakup'FROM msdb..backupset WHERE database_name = 'AdventureWorks'ORDER BY backup_start_date DESCGO
En el siguiente conjunto de resultados, podemos comprobar que el LSN ha cambiado para la base de restauración de la copia de seguridad diferencial y coincide con nuestro LSN de la copia de seguridad completa. AmbosLSN marcados a continuación son los mismos, lo que confirma que la última copia de seguridad es nuestra base diferencial.
Ahora crearemos una copia de seguridad completa con la opción Copy Only y se comprobará que la copia de seguridad completa con la opción Copy Only no afectará al LSN de la base diferencial de nuestra base de datos. En otras palabras, la copia de seguridad completa con la opción Copy Only no afectará a la copia de seguridad completa base para las copias de seguridad diferenciales.
--Script # 3: Create full backup with copy only option and compare LSN information-- Create full backup with copy only option-- Run script after changing Backup pathBACKUP DATABASE AdventureWorks TO DISK = 'D:\CopyOnly_AdventureWorks.bak'WITH COPY_ONLYGO-- Get differential_base_lsn after full backup with copy only optionSELECT DB_NAME(database_id) AS ,differential_base_lsn AS 'Un changed differential base LSN'FROM sys.master_filesWHERE database_id = DB_ID('AdventureWorks')AND type_desc = 'ROWS'GO-- Get LSN of recent full backup with copy only option for match purposeSELECT database_name, backup_start_date, is_copy_only,first_lsn as 'LSN of last full bakup'FROM msdb..backupset WHERE database_name = 'AdventureWorks'ORDER BY backup_start_date DESCGO
En la siguiente imagen podemos comprobar que tras una copia de seguridad completa con la opción Copy Only el LSN de la base diferencial no ha cambiado y coincide con el LSN de la copia de seguridad completa anterior (ambos están marcados en rojo). Observe también que la última copia de seguridad completa con la opción Copy Only también está ahí (marcada en verde).
Las siguientes consideraciones serán útiles mientras se utilizan las copias de seguridad con la opción Copy Only.
- La opción Sólo copia también funcionará para bases de datos de nivel de compatibilidad 80 en una instancia de SQL Server 2005
- Las copias de seguridad del registro de transacciones con la opción Sólo copia conservan el punto de archivo del registro existente, por lo que no truncarán los registros de transacciones de esa base de datos.
- No se requiere ninguna consideración mejorada al restaurar una copia de seguridad creada con la opción Sólo copia.
- Una copia de seguridad completa con la opción Copy Only no puede utilizarse como base para restaurar copias de seguridad diferenciales
- Una copia de seguridad de registros con la opción Copy Only puede crearse para bases de datos con el modelo de recuperación full o bulk logged only.
- Se puede crear una copia de seguridad completa con la opción Copy Only para bases de datos con cualquier modelo de recuperación.
Siguientes pasos
Mientras se saca cualquier copia de seguridad de su plan de respaldo, considere usar la opción Copy Only para evitar cualquier confusión y perturbación de su plan de recuperación. Teniendo en cuenta que las copias de seguridad Copy Only son independientes de las copias de seguridad normales.
- Así que la próxima vez que necesite refrescar sus entornos de prueba o de desarrolloconsidere utilizar la opción Copy Only para no interrumpir su proceso de recuperación
- Para obtener información sobre los modelos de recuperación de bases de datos haga clicaquí o aquí
- Aquí tiene un consejo relacionado con las copias de seguridadCOPY ONLY
Última actualización: 2009-06-15
Acerca del autor
Ver todos mis consejos
- Más consejos de DBA de SQL Server…