TotemGuard Digital Security Plan de mantenimiento NetSupport DNA para un funcionamiento óptimo Totemguard.com 1 902 360 645 TotemGuard Digital Security Índice INTRODUCCION.......................................................................................................................................3 PLAN DE MANTENIMIENTO.....................................................................................................................4 1. Copia de seguridad (automática)......................................................................................................4 2. Programación de la copia de seguridad (automática).......................................................................5 3. Tratamiento del log de transacciones (automática).........................................................................11 4. Limpieza de datos en la base de datos (manual)...........................................................................12 5. Espacio en disco (automático - manual).........................................................................................12 6. Re-indexación de índices (manual).................................................................................................19 Anexo A. Solución de problemas de Timeout..........................................................................................20 Totemguard.com 2 902 360 645 TotemGuard Digital Security INTRODUCCION Con el presente documento, se pretende sentar las bases para programar un plan de mantenimiento que ayude a mantener los sistemas implicados en NetSupport DNA con un funcionamiento óptimo. Dicho plan de mantenimiento tiene como objeto la prevención de posibles problemas de espacio y rendimiento, tanto del servidor donde se aloja la base de datos NetSupport DNA, como el propio servidor que mantiene el servicio NetSupport DNA Server. Para ello, se propone como ejemplo, el siguiente plan de mantenimiento, que puede servir como base para la elaboración de un plan de mantenimiento propio. En él, se detallan procedimientos, como por ejemplo el de realizar una copia de seguridad de la base de datos, por lo menos, una vez a la semana. Esto no significa que necesariamente se deba realizar un backup semanal, sino que dependiendo de nuestras necesidades, la frecuencia de dicha copia puede incrementarse, por ejemplo a una copia al día, si así lo requiriese nuestro entorno. Así pues, el plan de mantenimiento descrito a continuación, aunque a modo de ejemplo, cumple con las necesidades de la mayoría de entornos, pero deberá ser convenientemente revisado para adaptarlo al entorno final de cada instalación de NetSupport DNA. NOTA IMPORTANTE: El plan de mantenimiento descrito en el presente documento, hace referencia a entornos con SQL Server 2005 (tanto en versiones Express, como en versiones Standard y Enterprise). Sin embargo, muchos de los aspectos aquí mencionados, servirán de base para la creación de planes para otras versiones de SQL Server. Totemguard.com 3 902 360 645 TotemGuard Digital Security PLAN DE MANTENIMIENTO 1. Copia de seguridad (automática) Realizar una tarea programada encargada de ejecutar una copia de seguridad completa y verificada de la base de datos, de forma periódica y automática. Se recomienda programar la ejecución de dicha tarea un mínimo de una vez por semana, y siempre en horas en las que la carga de trabajo del SQL Server sea mínima (típicamente, por las noches, fuera del horario laboral). Para ello, se creará un archivo backupDNA.sql con un código como el que sigue: /*Nombre y destino del backup*/ DECLARE @BackupName nvarchar(100) SET @BackupName = N'NetSupportDNA' + N' ' + STR(DATEPART(year,GETDATE()), 4, 0) + REPLACE(STR(DATEPART(month,GETDATE()), 2,0), N' ', N'0') + REPLACE(STR(DATEPART(day,GETDATE()), 2,0), N' ', N'0') DECLARE @BackupFile nvarchar(600) SET @BackupFile = N'C:\'+ @BackupName + N'.bak' /*Proceso de copia de seguridad*/ BACKUP DATABASE [NetSupportDNA] TO DISK = @BackupFile WITH FORMAT, INIT, MEDIANAME = N'NetSupportDNA', NAME = @BackupName, SKIP, NOREWIND, NOUNLOAD, STATS = 10 /*Proceso de verificacion*/ declare @backupSetId as int select @backupSetId = position from msdb..backupset where database_name=N'NetSupportDNA' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'NetSupportDNA' ) if @backupSetId is null begin raiserror(N'Error de comprobación. No se encuentra la información de copia de seguridad para la base de datos ''NetSupportDNA''.', 16, 1) end RESTORE VERIFYONLY FROM DISK = @BackupFile WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO Este archivo .sql, se podrá generar desde la herramienta de consultas del SQL Server Management Studio, o directamente desde un editor de textos como el Bloc de Notas. Totemguard.com 4 902 360 645 TotemGuard Digital Security Se recomienda probar el código anterior antes de dar por bueno el archivo SQL. Para ello, se podrá, desde el mismo apartado de consultas del SQL Server Management Studio, ejecutar el script mediante la tecla F5 o desde la opción Consulta → Ejecutar. Nuevamente, se deberá realizar este testeo en un momento de carga mínima del servidor SQL. En el ejemplo anterior, se generará un archivo llamado “NetSupportDNA YYYYMMDD.bak” donde YYYY corresponderá con el año actual, MM con el mes, y DD con el día. El resultado de dicha query, además de generar el archivo .bak con la copia de seguridad, generará por pantalla el resultado del proceso, indicando: • El resultado del proceso de copia, con un mensaje como el siguiente: ◦ “BACKUP DATABASE procesó correctamente X páginas en Y segundos” • El resultado de la verificación de la copia de seguridad, con un mensaje como: ◦ “El conjunto de copia de seguridad del archivo 1 es válido” 2. Programación de la copia de seguridad (automática) Una vez comprobado el correcto funcionamiento del script sql del punto anterior, se deberá programar una ejecución periódica del mismo para automatizar el proceso de backup. Para ello, se podrán usar dos alternativas: • Usar las tareas programadas del SQL Server Agent • o usar las tareas programadas de Windows Se explicará con más detalle el segundo punto, por ser una solución válida en la mayoría de entornos, al contrario que la opción del SQL Server Agent. En cualquier caso, para el primer punto, y siempre y cuando se disponga del componente SQL Server Agent (las versiones de SQL Server Express no disponen de este complemento) se podrá definir una nueva tarea encargada de la ejecución periódica del backup, definiendo los pasos del proceso y la periodicidad de la ejecución. En cuanto al uso del propio programador del sistema operativo, se deberá seguir el siguiente proceso para la definición de la tarea: 1. Desde el panel de control de Windows → Tareas programadas, se creará una nueva tarea mediante la opción “Agregar tarea programada”. Totemguard.com 5 902 360 645 TotemGuard Digital Security 2. Aparecerá el asistente para la creación de la nueva tarea programada. Siguiente. Totemguard.com 6 902 360 645 TotemGuard Digital Security 3. Se deberá pulsar sobre “Examinar” para buscar el ejecutable SQLCMD.EXE, que se encontrará típicamente en “C:\Archivos de programa\Microsoft SQL Server\90\Tools\Binn”. 4. Una vez seleccionado el ejecutable SQLCMD.EXE, se abrirá una nueva ventana donde introducir tanto el nombre como la periodicidad de la ejecución. Así por ejemplo, se podrá introducir como nombre para la tarea programada “Backup DNA” con periodicidad “Semanalmente”. Totemguard.com 7 902 360 645 TotemGuard Digital Security 5. A continuación, se deberá especificar el día (o días) y la hora en la que se realizará la tarea. Así por ejemplo, se podrá seleccionar el backup para los sábados a las 2 de la madrugada, una vez a la semana. 6. En la siguiente pantalla, se especificarán las credenciales de la cuenta de usuario encargada de esta tarea. Se deberá especificar unas credenciales que tengan permisos suficientes para realizar la tarea. Totemguard.com 8 902 360 645 TotemGuard Digital Security 7. Finalmente, se mostrará el resumen de la tarea y una vez pulsado el botón “Finalizar” se habrá concluido la automatización de la misma mediante el asistente. 8. Una vez concluido el asistente, se observará la tarea en el listado de tareas programadas de dicha opción en Panel de control → Tareas programadas. Se deberá hacer doble click sobre la tarea recién creada, para editar los detalles de la misma. 9. En la pestaña “Tarea”, se deberá modificar la instrucción definida en “Ejecutar”, que tendrá una instrucción como la siguiente: “C:\Archivos de programa\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE” Añadiendo el siguiente texto al final de la instrucción: -S servername -E -i C:\Backups\BackupDNA.sql -o C:\Backups\logs\Resultado.txt Obteniendo así, una instrucción como la siguiente: “C:\Archivos de programa\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE” -S servername -E -i C:\Backups\BackupDNA.sql -o C:\Backups\logs\Resultado.txt Donde “servername” deberá sustituirse por el nombre del servidor SQL (o nombre del Servidor\Instancia), y C:\Backups\BackupDNA.sql por la ruta donde se encuentre el script sql con el código para la copia y verificación de la base de datos. Igualmente, se ha añadido el parámetro “-o” para que el resultado de la consulta se almacene en “C:\Backups\logs\Resultado.txt”, con tal de poder comprobar el resultado de la ejecución. Totemguard.com 9 902 360 645 TotemGuard Digital Security 10. Se deberá clickar sobre “Aplicar” y posteriormente sobre “Aceptar” para guardar los cambios. 11. Finalmente, se recomienda ejecutar la tarea en un momento de poca carga en el SQL Server haciendo click derecho sobre el nombre de la tarea → Ejecutar, con tal de comprobar el correcto funcionamiento de la misma. NOTA: Se recomienda almacenar las copias de seguridad en servidor de ficheros, para prevenir problemas de espacio en disco, debido al tamaño de los archivos de backup. Con estos dos puntos, se conseguirá una automatización del procedimiento de copia de seguridad de DNA. Finalmente, cabe recordar que se deberá revisar semanalmente el resultado de la ejecución almacenado (en el ejemplo) en C:\Backups\logs\Resultado.txt para corroborar la validez de la copia de seguridad. Totemguard.com 10 902 360 645 TotemGuard Digital Security 3. Tratamiento del log de transacciones (automática) Toda base de datos de SQL Server, tiene asociado su archivo de registro de transacciones. Este archivo, almacena los cambios realizados en los datos de la base de datos, para poder revertirlos. Concretamente, el archivo de registro de NetSupportDNA tiene como nombre NetSupportDNA_log.ldf. Sin embargo, este archivo tiende a crecer de forma preocupante si no se previene dicho crecimiento, llegando a influir muy negativamente en el rendimiento de NetSupport DNA. Por esta razón, se recomienda en primer lugar realizar una reducción periódica del mismo. Para ello, se insta a modificar el script programado generado en punto 1, para realizar un backup del log de transacciones, una vez realizado el backup de la base de datos. Para ello, bastará con añadir, al final del script, el siguiente código: /*Nombre y destino del backup*/ DECLARE @LogName nvarchar(100) SET @LogName = N'NetSupportDNA_log' + N' ' + STR(DATEPART(year,GETDATE()), 4, 0) + REPLACE(STR(DATEPART(month,GETDATE()), 2,0), N' ', N'0') + REPLACE(STR(DATEPART(day,GETDATE()), 2,0), N' ', N'0') DECLARE @LogFile nvarchar(600) SET @LogFile = N'C:\'+ @LogName + N'.bak' /*Proceso de copia de seguridad*/ BACKUP LOG [NetSupportDNA] TO DISK = @LogFile WITH FORMAT, INIT, MEDIANAME = N'DNALOG', NAME = @LogName, SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO NOTA: El código anterior se encargará de crear una copia de seguridad del log de transacciones en C:\NetSupportDNA_log.bak, pero no lo vaciará. Se recomienda al administrador de la base de datos, que valore la posibilidad de añadir la opción TRUNCATE_ONLY seguido de un SHRINKFILE, si se viese que el log de transacciones suele sobrepasar 1GB de tamaño. BACKUP LOG NetSupportDNA WITH TRUNCATE_ONLY DBCC SHRINKFILE (NetSupportDNA_Log, 0) GO Totemguard.com 11 902 360 645 TotemGuard Digital Security 4. Limpieza de datos en la base de datos (manual) El siguiente punto en el plan de mantenimiento, hace referencia al mantenimiento de los datos que conforman la base de datos de NetSupport DNA. Este punto, al contrario que los anteriores, no se puede automatizar, y por tanto, se tendrá la necesidad de ejecutarse de forma manual, por lo menos, una vez al mes. De esta forma, y siempre después de asegurarse de que el backup de la semana en curso se ha realizado de forma satisfactoria con la tarea programada del punto 2, se deberán seguir los siguientes pasos: 1. Desde la consola NetSupport DNA → Herramientas → Mantenimiento de la base de datos → Eliminar datos, eliminar los datos anteriores a, por ejemplo, un año natural (si nos encontramos en día 15 de abril de 2010, eliminaremos datos con fecha límite 01 de abril de 2009). Si se obtiene un timeout como respuesta, se deberá seguir el proceso especificado en Anexo A. del presente documento. 2. Posteriormente, una vez eliminados los datos antiguos de forma satisfactoria, se deberá ejecutar en la herramienta de consultas del SQL Server Management Studio, la siguiente instrucción, también en horario de mínima actividad del servidor SQL. DBCC SHRINKDATABASE (NetSupportDNA, 10) donde 10 significa que dejará un 10% del tamaño libre actual en el archivo 3. Una vez realizado este proceso, se habrá conseguido dejar en la base de datos, únicamente datos con fecha como máximo de un año de antigüedad, y posteriormente, se habrá conseguido compactar la base de datos, y por tanto, reducir su tamaño aumentando el rendimiento global de la aplicación. Se recomienda realizar esta tarea en un momento en que el servidor SQL esté en un mínimo de actividad, para no afectar al rendimiento del mismo. Igualmente, se recomienda comprobar el tamaño del archivo con la base de datos NetSupportDNA.mdf, antes y después de este proceso, con tal de corroborar el éxito del mismo. Se podrá ubicar el archivo NetSupportDNA.mdf en C:\Archivos de Programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data, junto al resto de bases de datos del servidor SQL. 5. Espacio en disco (automático - manual) En cuanto al mantenimiento de los sistemas que afectan a NetSupport DNA, también se recomienda no olvidar el comprobar que se dispone de suficiente espacio en disco en las unidades de los servidores que afectan a NetSupport DNA. Totemguard.com 12 902 360 645 TotemGuard Digital Security Dichas unidades, son las siguientes: • Unidad de instalación del sistema operativo del servidor NetSupport DNA. • Unidad de instalación de la aplicación NetSupport DNA. • Unidad donde se ubica el directorio de paquetes de NetSupport DNA (por defecto en C:\Archivos de Programa\NetSupport DNA\DNA\Server\Packages). • Unidad donde se ubica la base de datos de NetSupport DNA. • Unidad de instalación del sistema operativo del servidor SQL Server. • Unidad de instalación del SQL Server. • Unidad donde se ubican las copias de seguridad de la base de datos de NetSupport DNA. Se recomienda repasar el tamaño libre de estas unidades, por lo menos una vez al mes, o en su defecto, programar un aviso con NetSupport DNA para que controle que se dispone de suficiente tamaño, y que se encargue de lanzar un aviso en caso contrario. Se puede programar un aviso desde NetSupport DNA, tal y como sigue: 1. Iniciar la consola NetSupport DNA. 2. En la jerarquía de PCs, ubicar el servidor DNA Server, así como el servidor SQL Server. 3. Seleccionar el departamento del servidor DNA Server (el aviso afectará a todas las máquinas de este departamento). 4. Una vez seleccionado el departamento (o sub-departamento), hacer click derecho sobre él → Configuraciones (En el ejemplo “ZEALOT” es el nombre de la máquina con el servidor NetSupport DNA, mientras que “Laptops” es el nombre del sub-departamento de dicho servidor). Totemguard.com 13 902 360 645 TotemGuard Digital Security 5. Seleccionar la opción “Avisos” de la nueva ventana, seleccionando “Avisos de PC”. 6. En la nueva ventana, asegurarse de seleccionar el departamento (sub-departamento en el ejemplo) del servidor NetSupport DNA, y pulsar sobre “Gestionar”. Totemguard.com 14 902 360 645 TotemGuard Digital Security 7. Pulsar sobre “Nuevo” para crear un nuevo aviso 8. Seleccionar el aviso del tipo “Disco físico” y escoger el usar un porcentaje del espacio libre o un tamaño fijo para el aviso. En el ejemplo, se usa un porcentaje. Siguiente. Totemguard.com 15 902 360 645 TotemGuard Digital Security 9. Indicar en “El espacio libre es” el porcentaje de tamaño para el cual dará el aviso. En el ejemplo, se lanzará el aviso cuando el tamaño libre en disco sea menor que el 25% del total. Siguiente. Totemguard.com 16 902 360 645 TotemGuard Digital Security 10. Finalmente, se podrá escoger si se quiere ser avisado por correo electrónico al saltar el aviso (como se recomienda). Para ello, bastará con seleccionar al usuario encargado de recibir el aviso del listado de usuarios disponibles, seleccionándolo a la lista de contactos, indicando que “Si” se quiere “notificar al usuario por correo electrónico” Totemguard.com 17 902 360 645 TotemGuard Digital Security 11. Una vez finalizado, se deberá “agregar” el aviso mediante la opción “Agregar” 12. Posteriormente, se deberá “Guardar” y “Cerrar”, para dejar el aviso programado. NOTA: Se deberá repetir el proceso para el departamento del servidor SQL Server. Totemguard.com 18 902 360 645 TotemGuard Digital Security 6. Re-indexación de índices (manual) En algunos entornos, podemos encontrar tamaños de índice enormes. En muchos casos, llegan a ser más grandes los índices que los propios datos de la tabla. Se puede comprobar el tamaño de cada tabla desde el Management studio, haciendo click derecho/propiedades en dicha tabla. Nos mostrará tanto el tamaño de datos como el tamaño de índice. No se recomienda utilizar la reindexación por regla general, pero en algunos casos es necesaria. Siempre que se haga, deberá ser en horas de trabajo nulo, ya que la reindexación bloquea totalmente la tabla con la que está trabajando, y ralentiza enormemente el rendimiento del SQL. Con el siguiente script, podemos hacer una reindexación de toda una base de datos. USE DatabaseName --Enter the name of the database you want to reindex DECLARE @TableName varchar(255) DECLARE TableCursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_type = 'base table' OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN DBCC DBREINDEX(@TableName,' ',90) FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor Fuente: http://www.sql-server-performance.com/tips/rebuilding_indexes_p1.aspx Totemguard.com 19 902 360 645 TotemGuard Digital Security Anexo A. Solución de problemas de Timeout En el presente apartado se describe como proceder al recibir un “timeout” como respuesta al intentar eliminar datos desde la opción “Mantenimiento de la base de datos” de la consola NetSupport DNA. Así por ejemplo, si desde la opción Herramientas → Mantenimiento de la base de datos → Eliminar Datos, se pretenden eliminar los datos anteriores a un año natural, se deberán dejar seleccionados todos los checkboxs de la sección, y escoger como fecha límite, una fecha adecuada como fecha de inicio de los datos válidos (si se está a día 17 de abril de 2010, se puede escoger como fecha de inicio el 01 de abril de 2009). Este proceso, puede ser un proceso largo, debido a la gran cantidad de datos a eliminar que puede tener la base de datos. Por esta razón, y si NetSupport DNA muestra un mensaje de timeout al intentar lanzar la limpieza de la base de datos, se recomienda seguir el siguiente proceso: 1- Añadir la siguiente key en registro de windows, donde tenemos instalado DNA Server: HKLM\Software\NetSupport Ltd\NetSupport DNA\Database Value Type : DWORD - Decimal Value Valuename : Timeout Value : 800 (Este valor corresponde al número de segundos necesarios para dar timeout) 2- Reiniciar el servicio DNA Server, desde inicio -> ejecutar -> services.msc -> localizar "NetSupport DNA Server" -> Reiniciar 3- Repetir el proceso de limpieza desde la opción “Mantenimiento de la base de datos”, seleccionando primeramente datos anteriores al 01 de enero de 2008 y posteriormente datos anteriores al 01 de enero del 2009. 4. Si continuasen los errores de timeout, se deberá seleccionar cada chechbox de datos por separado, tal y como sigue: ▪ Únicamente selección de checkbox “medición de Internet”, para fecha límite 01 de enero de 2008. Eliminar datos. ▪ Posteriormente, únicamente selección de checkbox “medición de aplicaciones”, para fecha límite 01 de enero de 2008. Eliminar datos. ▪ Posteriormente, selección de todos los checkboxs excepto “medición de Internet” y “medición de aplicaciones” para fecha límite 01 de enero de 2008. Eliminar datos. ▪ Análogamente para fecha límite 01 de enero de 2009 Totemguard.com 20 902 360 645