viernes, 11 de julio de 2008

Recuperación de un Servidor MOSS 2007

Esto es un tema algo escabroso, para los que nos hemos topado con el problema de recuperar un Portal hecho en MOSS 2007, entenderán de lo que les habló, para los que se toparon que este articulo de primera mano, Lucky guy!, se evitarán muchos dolores de cabeza. Por lo que este articulo pretender ser una guía práctica y probada para la recuperación total de un Portal hecho en MOSS 2007, planteado bajo dos escenarios la recuperación de un servidor con el mismo nombre o con distinto. Antes de ello describo brevemente otros métodos con los que me tope pero que fueron infectivos o poco confiables.

Hay 3 herramientas accesibles para recuperar un servidor MOSS 2007, estas son:

1) Central Administration Site

2) Línea de Comando stsadm.exe

3) SQL-Server Managemente Studio

La primera y segunda herramienta por si sola no me provee una solución confiable de la restauración, por lo que brevemente las mencionaré, ya que puede ser una solución alterna para una recuperación fácil y rápida para realizar pruebas rápidas de un Portal existente. Lo menciono en este artículo para que sepan amigos lectores que ya probé con esas herramientas y no me dio los resultados esperados. Es curioso que Microsoft haga mención precisamente de esto, indicando que las herramientas de SharePoint Products no recuperan a nivel de farm dicha operación. Para citar el documento que encontrarán en la siguiente dirección: http://technet.microsoft.com/en-us/library/cc262129.aspx Y dice de la siguiente manera:

Important: Although the configuration database and Central Administration content database can be backed up, restoring backups of the configuration database and Central Administration content database taken from a running farm by using the tools built in to SharePoint Products and Technologies or SQL Server is not supported.

This is because data in these databases may not be synchronized with data in other Office SharePoint Server 2007 or Windows SharePoint Services 3.0 databases. Therefore, the tools built in to SharePoint Products and Technologies do not recover these databases during a farm-level restore operation.

La mas fiable es la de SQL-Server además de todas las ventajas que provee por el simple hecho de que es una herramienta familiar para la mayoría de desarrolladores y gente de IT de las herramientas de Microsoft, se crean tareas para su respaldo periódico y lo mejor dejamos la responsabilidad al DBA o al responsable de dicha área.

Dentro de esta ultima solución hay un método para la recuperación total del mismo servidor exactamente como estaba, muy fácil y efectivo, pero debe de tener el mismo nombre el servidor donde se recuperará. Ya que luego de la restauración de cada base de datos en un servidor SQL Server, luego de instalar el MOSS 2007 como un Server Farm con el Asistente de Configuración se le indica que se conecte a un Server Farm Existente y este creará las aplicaciones Web en el IIS y hará las conexiones a la base de datos por nosotros.

Para el segundo escenario de recuperación de MOSS 2007 en un nuevo servidor; es una opción un poco mas laboriosa pero igualmente fiel, ya que es necesario configurar MOSS 2007 pero igual de efectiva al momento de restaurar el respaldo de la base de datos de contenido de nuestros sitios. Ideal para tener un servidor de pruebas o desarrollo o para reconfigurar la granja de servidores con el mismo contenido del sitio. Así mismo se utiliza SQL-Server para restaurar la base de datos de contenido del sitio. Para esta segundo escenario y para la solución que le dí podriamos utilizar el mismo método con las herramientas Central Administration y stsadm.exe, pero la primera no se puede dejar programado la realización del backup y de la otra no es una herramienta de dominio común y deberemos investigar el script para generar la tarea y tendremos la tarea extra de monitorar algo adicional para que no nos falle en el momento menos indicado. (Con el mismo procedimiento pero en vez de utilizar SQL-Server podemos utilizar la siguiente línea de comando: stsadm.exe -o bacup -url [http://servername/site] -filename [Ruata+nombreArchivo], y para recuperar el respaldo con el mismo procedimiento mencionado arriba (y abajo con mas detalle) reemplazar el restore de SQL por la siguiente línea de comando: stsadm.exe -o restore -url [http://servername/site] -filename [Ruata+nombreArchivo] -overwrite. Esto prueba que no es en sí la herramienta si no el procedimiento a utilizar, pero SQL nos provee un ambiente mas amigable y confiable.

De lo aprendido podemos mencionar algo muy importante de conocer sobre MOSS 2007 y es que absolutamente todo esta contenido en bases de datos de SQL-Server, los sitios Web solo tienen los controles, Páginas Web, Web Parts, estilos predeterminados, y algún contenido estándar de los Portales de SharePoint y todo lo que es "configurable" y que sea contenido personalizados a los sitios que vayamos personalizando es almacenado en las base de datos de SQL-Server, inclusive la configuración que se haga de MOSS que es un sitio Web es almacenada en una base de datos de SQL-Server.

Metodos de Recuperación no del todo Fiables

Mencionaré las herramientas disponibles y los resultados obtenidos antes de ver la solución fiable, para los que se preguntan porque no pase por allí primero antes de plantear otra solución y si pase por allí pero no fueron del todo satisfactorias y confiables su restauración, no así su proceso de respaldo que es muy sencillo y pareciera incluirlo todo:

1) Central Administration Site:

La primera opción lógica es escoger la herramienta gráfica, los pasos son los siguientes:

Operación de Respaldo

    1. En el servidor donde esta instalado MOSS 2007, Vaya a SharePoint 3.0 Central Administration.
    2. Central Administration- Operations - Bakup and Restore - Perform a Backup.
    3. Haga clic sobre farm y presione el botón [Continue to Backup Options].
    4. Escriba la ubicación física donde se va almacenar el Backup que puede ser una ruta a un espacio en la red, donde tenga permisos.
    5. Presione OK, y espere a ver que todo el proceso se ha completado, la página Web se actualizará automáticamente.

En la ubicación que indicó encontrará un archivo como este nombre spbrtoc.xml un directorio spbr0000 que contiene el log de la copia de respaldo en un archivo nombrado así: spbackup.log. Allí podremos revisar a detalle la copia de respaldo, si se efectúo con éxito.

Operación de Recuperación del Respaldo

Prerequisitos:

Deberá disponer de un servidor que tenga instalado el MOSS 2007 por lo menos en la fase que tenga instalado la herramienta Central Administration. (La instalación del producto ser verá en la solución final, por lo que aquí no se detalla).

    1. En el servidor donde esta instalado MOSS 2007, Vaya a SharePoint 3.0 Central Administration.
    2. Central Administration- Operations - Bakup and Restore - Restore from Backup.
    3. En Backup Location: Escriba la ubicación física donde se encuentra los archivos de respaldo y haga clic sobre el botón [Ok].
    4. Luego clic sobre el circulito vacio en Select y haga clic sobre el botón [Continue Restore Process]-
    5. Clic sobre la cajita de Farm.
    6. Nuevamente clic sobre el botón [Continue Restore Process].
    7. Seleccionemos Same Configuration deberá colocar el usuario y la clave del usuario donde lo requiera. Si fuera otro es oportunidad de cambiarlo aquí.
    8. Presione [Ok] y sea paciente a que termine el proceso de recuperación; la página Web se actualizará automáticamente. Cuando termine el proceso ud. se dará cuenta.

2) Línea de Comando:

Para hacer una copia de respaldo completo por línea de comando:

En la siguiente ubicación donde se encuentra el stsadm.exe:

[drive]\program files\common files\microsoft shared\web server extensions\bin\12\

stsadm.exe -o backup -directory \\backupservername\backups\ -backupmethod full

Donde -o significa la operación a realizar.

-directory la ubicación de destino de los archivos de backup

-backupmethod opciones pueden ser full or Differential.

Para restaurar esta backup que necesitas:

Un Servidor Windows con MOSS 2007 instalado sin haber corrido el Asistente de Configuración y una instancia de SQL-Server disponible ya sea en el mismo servidor o en otro, y por ultimo ejecutar la siguiente línea de comando:

[drive]\program files\common files\microsoft shared\web server extensions\bin\12\

stsadm.exe -o restore -directory \\backupservername\backups\ -restoremethod overwrite

RESULTADO: Aunque me hizo la restauración de la mayoría, algunos servicios no me permitió crearlos, me genero algún error desconocido, y si primero levantaba los servicios (algunos de ellos crean base de datos) al finalizar la restauración me marcaba que habían ocurrido algunos errores que impidieron la recuperación de las sesiones dentro de MOSS 2007. Con lo que me quedo la incertidumbre si algo no quedo bien o no funcionaría.

Métodos de Recuperación Fiables

Escenario No.1:

Cuando a sucedido un falla en el servidor y se quiere recuperar ese mismo servidor o un servidor con el mismo nombre.

Procedimiento:

1) Realizar una copia de respaldo de todas las bases de datos de SQL-Server que pertenecen a Sharepoint. (Una forma sencilla de identificarlas es; tienen el nombre Sharepoint y otras el prefijo WSS (Windows Sharepoint Services).

Si preferimos podemos correr el siguiente query dentro de Managment Studio de SQL-Server para conocer las bases de datos a las cuales debemos hacer respaldo:

use sharepoint_config
go

declare @ServerName varchar(100)
set @ServerName = 'virtualpse'
SELECT o.[Name] AS 'DatabaseName',
Instance.[Name] AS 'DatabaseInstance',
[Server].[Name] AS 'DatabaseServer'
FROM Objects AS o
INNER JOIN classes c on c.id = o.classid
LEFT JOIN Objects AS Instance ON o.ParentId = Instance.Id
LEFT JOIN [Objects] AS [Server] ON Instance.ParentId = [Server].Id
WHERE Server.Name = @Servername
and (c.Fullname LIKE '%Administration.SPConfigurationDatabase%'
OR c.Fullname LIKE '%Administration.SPContentDatabase%'
or c.Fullname like '%Administration.SPSearchDatabase%'
or c.Fullname LIKE '%Administration.SharedDataBase%'
or c.Fullname LIKE '%Administration.SharedResourceProvider%'
or c.Fullname LIKE '%Administration.SearchSharedDatabase%')

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección: http://technet.microsoft.com/en-us/library/ms187048.aspx

2) Restaurar la copia de respaldo de la bases de datos realizada en SQL-Server en el nuevo servidor o en una instancia nueva de SQL-Server.

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección:

http://technet.microsoft.com/en-us/library/ms187048.aspx

3) Asignar seguridad dentro de SQL-Server al usuario con que se hizo la instalación del Portal (para ello revise los usuarios de las bases de datos restauradas).

Ejecute en consola de comando de SQL-Server dentro del Management Studio si es SQL 2005 las siguientes líneas de comando:

alter authorization on database::"databasename" to "domonio\usernameusername"
go
use "databasename"
execute as user = N'dbo'revert
go

Esto deberá realizarse para cada base de datos restaurada.

4) En el nuevo servidor (que debe de tener el mismo nombre) y deberá tener Windows Server 2003 o superior, el .net Framework 2.0 y 3.0 instalados. Y el IIS Instalado. Se debe instalar MOSS 2007 con la configuración Advance & complete.

Partiremos del IIS Instalado. Si se desconoce la instalación de los .NET Frameworks y del IIS revisar los siguientes enlaces:

Microsoft .NET Framework Version 2.0 Redistributable Package (x86)

http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en%20%20

Microsoft .NET Framework 3.0 Redistributable Package

http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en

How to Install IIS on Windows Server 2003

http://technet.microsoft.com/en-us/library/aa998483.aspx

Haga clic sobre el botón Advanced.clip_image002


Luego haga clic sobre Complete y luego sobre el botón [Install Now]:

clip_image004


Si la instalación se realizó con éxito le mostrará la siguiente pantalla; Presione el botón [Close] y este le llevará a un Asistente de Configuración.

clip_image006

5) Al finalizar le indicará que lo enlazará con el Wizard para iniciar la instalación, seleccione la opción para enlazarse a una Farm Existente, le solicitará el nombre del servidor SQL donde restauró las bases de datos, el usuario y la clave. Al finalizar, estará restaurado el Portal completamente.

clip_image008

Luego le dará un mensaje que bajará los servicios del IIS y Sharepoint para realizar la configuración del MOSS 2007(Esto no debería preocuparnos si estamos haciéndolo en un servidor nuevo o que no está siendo utilizado para otras tareas). Haga clic sobre el botón [Yes] para continuar.

clip_image010

Luego le indicará si desea conectarse a un server farm existente o crear uno nuevo deje la opción por default seleccionada que es Yes y presione el botón [Next].

Esta opción le permitirá a MOSS 2007 leer las bases de datos restauradas y crear los sitios por nosotros.

clip_image012

Muy importante que apuntemos al nuevo servidor de SQL-Server donde restauramos las bases de datos de MOSS 2007 Y que utilicemos el usuario con el cual se configuro en el servidor anterior. Debido a las bases de datos restauradas MOSS no aceptara otro usuario ya que tiene registrado internamente en las bases de datos este usuario. Para continuar haga clic sobre el botón [Next].

clip_image014

Deje las opciones por default como están es decir no especifique otro puerto y utilice autenticación NTLM, y presione el botón [Next].

clip_image016

Luego le muestra una ventana resumiendo la información ingresada y si está de acuerdo presione el botón [Next].

clip_image018

Si todo se realizo con éxito le mostrará la siguiente ventana y con ello queda casi concluida la restauración del Portal. Presione el botón [Finish]. Y Pasemos al paso número seis (6).

clip_image020

6) Si tiene WebParts personalizados deberá copiar los archivos con extensión dll en el directorio bin en la siguiente ubicación del nuevo servidor: [drive]:\inetpub\wwwroots\wss\virtual sites\80\bin en el servidor donde se instaló MOSS 2007 y cree un directorio userscontrols en [drive]:\inetpub\wwwroots\wss\virtual sites\80\ y copie los archivos asmx. Y Listo ha terminado la recuperación del Portal en un servidor con el mismo nombre.

Escenario No.2:

Cuando se desea recuperar en un nuevo servidor el Portal; ya sea para propósitos de prueba, desarrollo o recuperación total.

1) Realizar una copia de Respaldo de la base de datos de contenido del Portal(Podemos ubicar a que base de datos corresponde cada aplicación Web yendo a: Central Administration– Application Managment– SharePoint Web Application Management – Content databases).

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección:

http://technet.microsoft.com/en-us/library/ms187048.aspx

Copie el nombre para su posterior uso.

clip_image002[4]


2) En el nuevo Servidor (W2K3) crearemos una nueva instalación de MOSS 2007 de tipo Advance & Complete.

a. Repita el procedimiento del paso 4. En el último paso seleccione la opción “No, I want to create a New Server Farm”, luego presione el botón [Next].

b. Luego continúe con el paso 5, únicamente cambie a la opción seleccionada que se hace referencia aquí arribita en el paso a.

3) Levantamos todos los servicios en el Servidor (Central Administration – Operations - Services on server )

Deberán levantarse todos los servicios del Server Farm. El segundo servicio antes que el primero y luego los demás. Algunos solicitarán el usuario administrador y la clave provéalos y deje por default todas las demás opciones. Incluiremos las pantallas debajo de cada servicio como información de referencia, ya que el procedimiento es muy sencillo.

clip_image004[4]

Levantar el Servicio Document Conversions Load balancer Service

clip_image006[4]

Luego levantar el servicio Launcher Service. Seleccione el Load Balancer Server y presione el botón [ok].

clip_image008[4]

Luego el servicio Office SharePoint Server Search Service. Haga clic sobre las cajitas de Query and indexing, prove un correo de contacto para los usuarios del Portal y el usuario y clave del administrador, por ultimo presione el botón [OK].

clip_image010[4]

Provea el usuario y clave del administrador tanto en Service Account como en Content Access Account, seleccione un horario conveniente de indexación y presión el botón [OK].

clip_image012[4]

4) Realizamos la configuración base (Correo Saliente; Central Administration - Operations), pero por el momento no creamos ningún proveedor de Servicio Compartidos (SSP). Configuramos el correo saliente con la siguiente información:

clip_image014[4]

Y el Correo Entrante no se configura, a menos que el cliente desee almacenar los correos dentro de MOSS 2007.

clip_image016[4]

5) En la nueva instalación de MOSS 2007 creamos una aplicación Web (Central Administration – Aplication Managment - Create or extend Web application). Debe seleccionarse el puerto 80, un nombre para la aplicación como Portal, colocar las credenciales del administrador, deje las demás opciones por default y presionar el botón [OK].clip_image018[4]

clip_image020[4]

6) Restauración de la base de datos de contenido respaldada en el servidor de SQL con el cual trabaja la nueva instalación de MOSS 2007.

Si se desconoce el procedimiento para realizar dicha operación comunicarse con el administrador de base de datos o DBA o podrá encontrar una guía en la siguiente dirección:

http://technet.microsoft.com/en-us/library/ms187048.aspx


7) Ahora eliminaremos el enlace entre la base de datos de contenido y la aplicación Web (Central Admiistration– Application Managment– SharePoint Web Application Management – Content databases – Haga clic sobre el nombre de la base de datos y al final de la página Web seleccione el cuadrito de Remove content database y presione ok.

clip_image022

Seleccionar la cajita Remove content database y presionar el botón [OK].

clip_image024

8) Para enlazar la base de datos restaurado con la aplicación web haga lo siguiente:

stsadm –o addcontentdb –url http://NuevaAplicaciónWeb –databasename BD_Restaurada –databaseserver Servidor_BD


9) Creamos nuestro SSP el cual contendrá las aplicaciones Web. Para ello vaya a: Central Administration – Application Managment – Manage this Farm´s Shared Service. Aparecerá en blanco (Porque No hay ningún servicio compartido creado aún)y deberá presionar el botón [New SSP]

clip_image026

El proveedor de servicios compartidos necesitará crear 2 sitios uno para la administración de Servicios Compartidos y otro para el espacio de My Sites donde se almacenarán todos los sitios de cada usuario. El método para crear los sitios es igual a la creación mencionada con anterioridad, no debe utilizar el puerto 80.

clip_image028

10) Para finalizar reinicie el IIS con el comando de línea: iisreset /noforce o desde la consola de administración de IIS.

11) Si tiene WebParts personalizados deberá copiar los archivos con extensión dll en el directorio bin en la siguiente ubicación del nuevo servidor: [drive]:\inetpub\wwwroots\wss\virtual sites\80\bin en el servidor donde se instaló MOSS 2007 y cree un directorio userscontrols en [drive]:\inetpub\wwwroots\wss\virtual sites\80\ y copie los archivos asmx. Y Listo ha terminado la recuperación del Portal en un servidor con el mismo nombre.

En resumen, si existe una forma de recuperación y es confiable. Escoja la herramienta en la que mas se sienta cómodo y que se aplique al escenario que se planteo. Si su configuración de la granja es mas compleja tendrá que aplicar otros criterios posiblemente, pero puede servirle como una guía para encontrar una solución viable.

Hasta la próxima!

Manolo Herrera

P.D. Si no le aparecen las imágenes vaya a mi otro blog donde esta este mismo artículo en http://jmhogua.blogspot.com .

3 comentarios:

Julio dijo...

Estimado Manolo, primero por felicitarte y agradecerte por el articulo que está muy bien elaborado y entendible.
Luego por pedirte si me puedes ayudar con un error que me lanza al momento de realizar la configuración del SharePoint, el error está en algunas filas del archivo log: Not running in high contrast, so we will paint the background with our trademarked image el error que muestra la pantalla dice
Se inició un error de tipo System.ArgumentException. Información adicional de la excepción: Error al cifrar o decifrar. Codigo de error del sistema 997.
De antemano muchas gracias por la ayuda que me puedas brindar.

Marcelo dijo...

Muy Bueno tu documentacion
Me gustaría ver si me puedes ayudar instale un wsp y le hize un deploy solution en el server y me ha dejado la embarrada me mato la funcionalidad the site theme me genera el siguiente error para cualquier site collection que creo o sitio al momento de ir al link site theme (Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints)

veo que el problema esta en la base de datos pero no se en cual podría estar y que tabla, las he revisado todas pero nose donde podria estar el problema y no quiero matar mas el sitio jajaja

Luis Fernando dijo...

Hola Manolo, Excelente este articulo, se nota que te tomaste el tiempo para hacerlo.
He aprovechado tus recomendaciones e hice una migración de un WSS 3.0 a otro servidor que tiene otro nombre también con WSS 3.0.
El problema que tengo es que cuando intento ingresar al aplicativo me muestra el error HTTP 404.
Le agradecería mucho si me puede ayudar.