Actualmente tengo una tarea programada que se activa cada noche a las 2 AM que llama a SQLCMD.exe y le pasa un script .sql para ejecutar la copia de seguridad (que se muestra a continuación). Somos una empresa bastante pequeña con necesidades crecientes debido al gran crecimiento en el lado comercial. La pérdida de 1 día de datos en este punto costaría decenas de miles de dólares frente a unos cientos este año el año pasado. Hasta que pueda migrar esta plataforma de base de datos a una solución diferente donde la duplicación de datos se produce con mayor redundancia como SQL Azure, ¿qué es lo mejor que puedo hacer para obtener copias de seguridad más frecuentes? ¿Este script a continuación obliga a la base de datos a estar fuera de línea? ¿Puedo ejecutar este script con usuarios que interactúan con la base de datos?
USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
WITH FORMAT,
MEDIANAME = 'CompanyCRM_Backup',
NAME = 'Full Backup of CompanyCRM';
GO
Actualizar
Wow, obviamente una comunidad de DBA mucho más dedicada aquí que en SO. Gracias por los comentarios hasta ahora. Lo único que falta son los "cómo". He mostrado el comando SQL anterior que estoy usando para hacer copias de seguridad diarias, pero los ejemplos de copia de seguridad de registro incremental son MIA. Este no es un DB grande, actualmente se ejecuta en SQLExpress. Cuando digo HA o SQL Azure, me refiero específicamente a la arquitectura que no tenemos como pequeña empresa. Esta instancia se está ejecutando actualmente en nuestro ÚNICO servidor. Si ese servidor falla, nuestro tiempo de recuperación se convierte en un punto conflictivo. Es por eso que SQL Azure se vuelve atractivo.
fuente
Respuestas:
EDITAR, desde su actualización
Como ha dicho que puede perder 1 día de datos, simplemente pondría las bases de datos en modo de recuperación SIMPLE. Luego puede hacer un COMPLETO cada mañana y / o noche. Si desea cubrirse durante el día, puede hacer una copia de seguridad diferencial de la base de datos, una de esas solo por si acaso. Esto capturará cualquier cambio realizado desde la copia de seguridad completa. Si conozco un marco de tiempo en el que está ocurriendo una gran cantidad de información, podría lanzar este tipo de copia de seguridad allí después de que se complete. Puede ahorrar tiempo a la gente en la recuperación para que no tengan que ingresar datos adicionales.
Como este es su único servidor, me aseguraría de que esté ejecutando DBCC CHECKDB en las bases de datos. Las copias de seguridad no sirven de nada cuando descubres que están corruptas (creo que alguien también mencionó esto). Probablemente puede encontrar algunas secuencias de comandos para configurar una tarea programada para verificar el ERRORLOG de SQL para el mensaje DBCC para detectar cualquier error. SQL Server no le advertirá de forma nativa sobre los errores que devuelven los mensajes DBCC, por lo que, a menos que verifique manualmente cada vez que un script lo haga, puede ayudar.
El comando de copia de seguridad diferencial:
fuente
fuente
Lo primero que debe hacer es calcular cuántos datos puede permitirse perder. Hasta entonces, no tendrá idea de con qué frecuencia realizar copias de seguridad de la base de datos. Este no es un número que deberías tener. Esto es algo que la empresa (o el CEO de una empresa más pequeña) necesitaría decidir. El primer número con el que van a volver es 0 minutos. Lo que se puede hacer, pero será muy costoso. En realidad, la cantidad más pequeña de datos para la que puede realizar copias de seguridad es aproximadamente cada 2 minutos. Si la cantidad de datos que cambia en el sistema es lo suficientemente pequeña, puede hacer copias de seguridad cada minuto.
Para hacer copias de seguridad del registro de transacciones, que es lo que deberá hacer, deberá poner la base de datos en modo de recuperación COMPLETA.
Si puede permitirse perder 5 minutos de datos, entonces probablemente quiera hacer copias de seguridad completas diariamente y copias de seguridad del registro de transacciones cada 5 minutos. Si puede perder 15 minutos de datos, entonces querrá hacer copias de seguridad completas y copias de seguridad del registro de transacciones cada 15 minutos.
Otra opción sería hacer copias de seguridad completas semanales, copias de seguridad diferenciales diarias y copias de seguridad del registro de transacciones cada x minutos, como mencioné anteriormente.
Tenga en cuenta que cuanto más a menudo necesite hacer copias de seguridad, más archivos necesitará restaurar en caso de falla de la base de datos o eliminación de datos. Puede tener sentido hacer copias de seguridad diferenciales durante todo el día para acortar la cantidad de tiempo que lleva restaurar la base de datos.
Todas las copias de seguridad que utilizan la base de datos BACKUP y la instrucción BACKUP LOG se realizan en línea y no impiden que los usuarios accedan a la base de datos.
fuente
Digamos que tiene un escenario comercial común con su horario más ocupado: 9 am-5pm de lunes a viernes. Entonces sugeriría: copia de seguridad completa el domingo por la noche. Copias de seguridad diferenciales a las 8 a.m., 6 p.m. y 1 a.m. (para reducir el tiempo de recuperación). Registre copias de seguridad cada hora o según lo que requiera su empresa.
Dependiendo de su período de retención, debe tener un trabajo de limpieza automática para borrar los archivos de respaldo antiguos. Todo esto se puede crear utilizando planes de mantenimiento SQL. Consulte este enlace para SQL 2005 .
Debe almacenar sus copias de seguridad en algún tipo de disco redundante (duplicado), o puede usar cintas para el almacenamiento externo. Los usuarios pueden continuar trabajando en el sistema mientras se ejecutan las copias de seguridad.
fuente
No haría una copia de seguridad completa todas las noches. Si se trata de una base de datos grande, eso podría llevar mucho tiempo, sin mencionar que ocuparía mucho espacio en los medios. Haga una copia de seguridad completa cada fin de semana y una copia de seguridad diferencial cada noche. Luego haga una copia de seguridad del registro de transacciones (suponiendo que su base de datos esté en recuperación completa) cada hora, o cada media hora, pero asegúrese de que estos archivos .bak y .trn residan en un disco separado en caso de falla del disco.
fuente
¿Puede sincronizar en la nube su carpeta de copias de seguridad por la noche para obtener almacenamiento fuera del sitio? Dado que estoy bastante seguro de que esto es para una empresa de atención médica, ¿hay alguna que sea lo suficientemente segura como para cumplir con HiPA? ¿O tal vez solo los superciframos?
¿El script al menos pone una copia de la copia de seguridad en un recurso compartido de red? De esa manera, si la caja física explota ...
fuente