TotemGuard Digital Security Plan de mantenimiento NetSupport ServiceDesk 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)........................................................................10 4. Re-indexación de índices (manual).................................................................................................11 5. Copia de directorios.........................................................................................................................12 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 ServiceDesk 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 ServiceDesk, como el propio servidor que mantiene el servicio IIS con NetSupport ServiceDesk. 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 ServiceDesk. 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 backupSD.sql con un código como el que sigue: /*Nombre y destino del backup*/ DECLARE @BackupName nvarchar(100) SET @BackupName = N'ServiceDesk' + 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 [ServiceDesk] TO DISK = @BackupFile WITH FORMAT, INIT, MEDIANAME = N'ServiceDesk', NAME = @BackupName, SKIP, NOREWIND, NOUNLOAD, STATS = 10 /*Proceso de verificacion*/ declare @backupSetId as int select @backupSetId = position from msdb..backupset where database_name=N'ServiceDesk' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'ServiceDesk' ) 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 ''ServiceDesk''.', 16, 1) end RESTORE VERIFYONLY FROM DISK = @BackupFile WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO NOTA: Por defecto, la base de datos de NetSupport ServiceDesk, se llama “ServiceDesk” en la versión 3 y superior, y “DNAHelpdesk” en las versiones anteriores. Se deberá adaptar el script al nombre utilizado en la instalación del ServiceDesk. 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 “ServiceDeskYYYYMMDD.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. 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 NetSupport ServiceDesk. 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 9 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 ServiceDesk tiene como nombre ServiceDesk_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 ServiceDesk. 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'ServiceDesk_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 [ServiceDesk] 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:\ServiceDesk_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 ServiceDesk WITH TRUNCATE_ONLY DBCC SHRINKFILE (ServiceDesk_Log, 0) GO TotemGuard.com 10 902 360 645 TotemGuard Digital Security 4. 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 11 902 360 645 TotemGuard Digital Security 5. Copia de directorios Finalmente, ServiceDesk cuenta con una serie de directorios donde almacena información adicional, como los archivos adjuntos de los tickets, o las imágenes de los detalles de los mismos. 5.1. Directorio de instalación del ServiceDesk En el directorio de instalación del ServiceDesk, se encuentra la biblioteca de archivos, los informes personalizados o las imágenes de la personalización de la interfaz del ServiceDesk, entre otros. Por esta razón, se recomienda realizar una copia de seguridad del mismo, de forma periodica. Por defecto, el directorio de instalación del ServiceDesk se encuentra en: C:\Archivos de programa\NetSupport\NetSupport Service Desk\ 5.2. Biblioteca de archivos La ubicación de la biblioteca de archivos de ServiceDesk, se define en el mismo ServiceDesk, en Admin->Opciones de Base de Datos → Opciones de biblioteca de archivos: Por defecto, dicha biblioteca se encuentra en el directorio de instalación del ServiceDesk. Si se ha cambiado la ubicación del mismo, se deberá añadir dicho directorio a la copia de seguridad periodica. TotemGuard.com 12 902 360 645