Tengo una base de datos con casi 1 TB de FILESTREAM
datos de los que no necesito hacer una copia de seguridad (si los datos se eliminan, se volverán a crear automáticamente en un par de horas, por lo que simplemente no es importante). La mayoría de los datos se cambian cada dos días, por lo que las copias de seguridad diferenciales realmente no ayudarían a mantener el tamaño bajo.
Hice que las copias de seguridad funcionaran como lo necesitaba, configurando el Modo de recuperación en Full
, creando un separado FILEGROUP
para el FILESTREAM
, luego tomando copias de seguridad de solo el "Primario" FILEGROUP
. El problema que esto causó fue que el archivo de registro (que también se respalda) ahora es innecesariamente grande porque incluye los FILESTREAM
datos.
SIMPLE
El modo de recuperación me quita la capacidad de hacer copias de seguridad de correos electrónicos específicos FILEGROUP
, por lo que tampoco creo que sea una opción.
Mis pensamientos son simplemente mover los FILESTREAM
datos a una base de datos separada, pero ahora estoy perdiendo integridad referencial y seguramente también heredé una serie de otros problemas.
¿Hay alguna forma de crear copias de seguridad parciales en Simple
modo de recuperación (sin configurar la FILESTREAM
tabla como de solo lectura)? Si no, ¿hay alguna otra solución sensata para mi problema?
fuente
Una solución para una base de datos establecida en modo de recuperación SIMPLE es tener los datos de FILESTREAM en un grupo de archivos de solo lectura (que no es su opción ideal), y luego hacer una copia de seguridad solo de los grupos de archivos de lectura / escritura con DIFERENCIALES como esta:
Obtendrá cualquier dato que haya cambiado en cualquier grupo de archivos de lectura / escritura. Es lo más fácil, listo para usar, que puede mantener manejables las copias de seguridad parciales sin obtener los datos de FILESTREAM. Sin embargo, requeriría que el proceso de carga de los datos antes mencionados necesitara modificar el grupo de archivos para leer / escribir, cargar cualquier información adicional y luego configurarlo para que se vuelva a leer. Ciertamente no es ideal.
fuente
Me siento sucio al proporcionar esto como una opción, pero si elige segregar los datos de FILESTREAM en su propia base de datos, podría mantener RI entre las tablas en los dbs separados a través de disparadores :
Espere que los problemas de rendimiento y una sección de su cuero cabelludo se vuelvan sin pelo después de sacar los mechones de su cabeza con frustración, pero en teoría podría hacer esto. No recomiendo este enfoque en ningún nivel, en cambio le sugiero que aumente la frecuencia de sus copias de seguridad de tlog y / o cambie al modelo de recuperación de registro masivo y vea cuánto espacio le ahorra, PERO esta es una posible solución. Realmente necesitaría sopesar el beneficio de separar estos datos y tratar con un diseño de base de datos frankensteiniana, pero es una opción.
... tengo que ir a ducharme ahora ...
fuente
Sé que esta pregunta ya está respondida, pero hay otra solución que podría ayudar a otros. Recientemente supe del blog de Brent Ozar que hay una opción para descartar sus copias de seguridad de registros de inmediato:
Para que pueda dejar su base de datos en
Full
modo de recuperación y hacer copias de seguridad de grupos de archivos. Cuando su registro de transacciones sea demasiado grande, simplemente emita el comando de registro de copia de seguridad y listo.fuente