Sie sind auf Seite 1von 14

Implementacin de SQL Server 2008 en Alta Disponibilidad (Mirroring)

Preparado para AUSA Versin 1.0


Preparado por Jose Lazon

Consultor de Plataforma de Datos

Hoja de Revisin y Conformidad


Registro de Cambios
Fecha 21/09/2011 Autor Jos Lazn Versin 1.0 Referencia de los cambios Creacin de Documento

Revisores
Nombre Versin aprobada Posicin Fecha

Tabla de Contenido

Introduccin. .................................................................................................................................... 4 Descripcin de la Arquitectura Implementada ........................................................................ 4 Configuracin de Mirroring en Modo de Alta Proteccin ....8 Verificacin de Comunicacin ................................................................................................... 27

Introduccin.
El presente documento describe la arquitectura implementada utilizando el esquema Mirroring para el proyecto de Migracin de bases de datos SQL Server 2008 AUSA. El esquema Database Mirroring es una tecnologa de Microsoft SQL Server 2008, que puede ofrecer alta disponibilidad y soluciones de alto rendimiento para redundancia de base de datos. Las transacciones de se envan directamente desde una base de datos principal hacia un base de datos espejo, con este esquema la base de datos espejo tendr todas las transacciones casi al da con respecto a la base de datos principal, se utiliza un tercer servidor que tenga el rol de testigo, para que pueda realizar el Failover automticamente del servidor principal al Espejo. 1. Descripcin de la Arquitectura Implementada. El modo Mirroring configurado e implementado es de Alta Proteccin, que consisten en un Servidor Principal, Un Servidor Espejo, Una Instancia de Testigo, El Failover se realiza en Forma Automtica.

2. Configuracin de Mirroring en Modo de Alta Proteccin (Servidores PELIMSIDB04) El modo de alta proteccin consisten en un servidor Principal y un servidor Secundario y el testigo, para el proyecto se tomaron los servidores PELIMSIDB04, PELIMSIDB03, PELIMSIMIR01, PELIMSIMIR01\Witness como servidor principal, servidor Mirror y el servidor Testigo respectivamente. 2.1 Se utiliz para la configuracin de la seguridad, sesiones de TCP para sincronizar los logs de transacciones y para monitorear el estado de los servidores el cual emplea autenticacin a nivel de sesin, se utiliz certificados digitales y encriptacin con el algoritmo AES para la comunicacin entre servidores (el Mirroring soporta tambin el algoritmo RC4 para la encriptacin de comunicaciones).

La topologa utilizando certificados es la siguiente

PELIMSIMIR01\Witness

PELIMSIDB04

PELIMSIMIR01

PELIMSIDB03
Cabe sealar que un servidor espejo debe tener siempre una correspondencia uno a uno con el servidor principal, es decir si un servidor principal tiene 4 Bases de Datos Principales, entonces el espejo para este servidor debe tener tambin 4 base de datos Mirror, un topologa distinta a esta no es soportada.

Para poder ver las bases de datos que se encuentra en la instancia del servidor principal puede utilizar el Management Studio o tambin por T-SQL.
select * from sys.databases

2.2 En los Servidor principales (PELIMSIDB04, PELIMSIDB03) creamos el Master Key y el certificado, en la instancia del servidor principal con el fin de utilizarlo en las conexiones salientes para la conexin del mirror de la Bases de datos.

use master; create master key encryption by password = 'sup3rv1s0r123456789####';


Creamos el certificado con el siguiente script
--creamos el certificado para esta instancia de sql:

create certificate sql_principal with subject = 'certificado PELIMSIDB04'


Creamos el EndPoint para poder establecer la conexin, los EndPoint para los servidores implicados utilizaran el puerto 2105, este puerto tiene que estar habilitado, escuchara por todas las ips entrantes, la autenticacin utilizara el certificado creado anteriormente y utilizara el algoritmo de encriptacin AES.
--creamos el endpoint para el servidor principal de mirroring de

Create Endpoint EndPoint_P state = STARTED as TCP ( LISTENER_PORT = 2105 , listener_ip = ALL ) For Database_Mirroring ( Authentication = Certificate sql_principal , Encryption = Required Algorithm AES , role = ALL );
Sacamos un backup al certificado

Backup Certificate sql_principal to file = 'E:\Data\7_Certificado\sql_principal.cer';


Para poder ver los certificados de la base de datos master se puede utilizar el siguiente script.
select * from master..sys.certificates;

2.3 Ahora tenemos que copiar el archivo sql_principal al servidor PELIMSIMIR01 2.4 En el servidor espejo (PELIMSIMIR01), creamos el Master Key y el certificado, en la

instancia del servidor secundario con el fin de utilizarlo en las conexiones salientes para la conexin del mirror de la Bases de datos.
--creamos el master key

use master; create master key encryption by password = 'sup3rv1s0r123456789####';

Creamos el certificado con el siguiente script

create certificate sql_mirror with subject = 'certificado PELIMSIDB04'


Creamos el EndPoint para poder establecer la conexin, los EndPoint para los servidores implicados utilizaran el puerto 2105, este puerto tiene que estar habilitado, escuchara por todas las ips entrantes, la autenticacin utilizara el certificado creado anteriormente y utilizara el algoritmo de encriptacin AES.

Create Endpoint EndPoint_S state = STARTED as TCP ( LISTENER_PORT = 2104 , listener_ip = ALL ) For Database_Mirroring ( Authentication = Certificate sql_mirror , Encryption = Required Algorithm AES , role = ALL );

Sacamos un backup al certificado

Backup Certificate sql_mirror to file = 'H:\Data\7_Certificado\sql_mirror.cer';

Para poder ver los certificados de la base de datos master se puede utilizar el siguiente script.
select * from master..sys.certificates;

Para poder ver los EndPoint, se puede utilizar el siguiente script select * from sys.database_mirroring_endpoints 2.5 Ahora tenemos que copiar el archivo sql_mirror.cer al servidor

PELIMSIMI04
2.6 Se tendr que configurar las conexiones entrantes en cada servidor en el

servidor espejo (PELIMSIMIR01) creamos un login para el servidor principal (PELIMSIDB04) y los asociamos a su certificado, es importante mencionar que el login deber tener el mismo password que la master key.
--creamos un login en PELIMSIMIR01 para que PELIMSIDB04 se realice la conexion

use master; create login Principal_Login with password = 'sup3rv1s0r12345###'


Creamos un usuario a partir del login creado

create user Principal_Login_user For login Principal_Login


Ahora asociamos el certificado de PELIMSIMIR01 con el usuario creado

create certificate sql_principal authorization Principal_Login_user from file = 'H:\DATA\7_Certificado\sql_principal.cer';

Y finalmente damos permiso de conexin al EndPoint para el Login de PELIMSIMIR01

grant connect on endpoint::EndPoint_S to Principal_Login


2.7 En el servidor PELIMSIDB04 creamos un Login para PELIMSIMIR01 y lo

asociamos a su respectivo certificado, es importante mencionar que el login deber tener el mismo password que la master key.

use master; create login Mirror_Login with password = 'sup3rv1s0r12345###'


Creamos un usuario para este Login

create user Mirror_Login_user For login Mirror_Login


Asociamos el certificado para poder realizar las conexiones entrantes

create certificate sql_mirror authorization Mirror_Login_user from file = 'E:\DATA\7_Certificado\sql_mirror.cer';

Y finalmente damos permisos de conexin al EndPoint al usuario creado

grant connect on endpoint::EndPoint_P_pruebamirror to Mirror_Login


Para configurar el servidor testigo se sigue los mismos pasos que se describen a continuacin

use master; create master key encryption by password = 'sup3rv1s0r123456789####'; create certificate sql_witness with subject = 'certificado PELIMSIMIR01'

Create Endpoint EndPoint_W state = STARTED as TCP ( LISTENER_PORT = 2104 , listener_ip = ALL ) For Database_Mirroring ( Authentication = Certificate sql_witness , Encryption = Required Algorithm AES , role = ALL ); Backup Certificate sql_witness to file = 'H:\Data\7_Certificado\sql_witness.cer'; use master; create login Witness_Login with password = 'sup3rv1s0r12345###' create user Witness_Login_user For login Witness_Login create certificate sql_principal authorization Witness_Login_user from file = 'H:\DATA\7_Certificado\sql_principal.cer'; create certificate sql_mirror authorization Witness_Login_user from file = 'H:\DATA\7_Certificado\sql_mirror.cer'; grant connect on endpoint::EndPoint_W to Witness_Login

2.8 Se tendr que sacar una copia de la base de datos Principales del servidor

PELIMSIDB04 y PELIMSIDB03 restaurar en PELIMSIMIR01, es importante mencionar que todas la base de datos principales tendr que estar modo RECOVERY FULL, es un requisito indispensable para la configuracin del Mirroring. Ejemplo
Backup database DBAUSA to disk ='D:\DBAUSA.bak' with format

10

--Restauramos la base de datos Restore database DBAUSA From Disk='D:\DBAUSA.bak' with norecovery

Cuando se termine de realizar la restauracion se tendra que mostrar la base de datos DBAUSA De la siguiente manera

2.9 Iniciamos en el Servidor PELIMSIMIR01 (Espejo) el Database Mirroring


--iniciamos la comunicacion use master; alter database DBAUSA Set Partner ='TCP://PELIMSIDB04.AUSA.COM.PE:2105'

En PELIMSIDB04 iniciamos el Database Mirroring


alter database DBAUSA Set Partner ='TCP://PELIMSIMIR01.AUSA.COM.PE:2105' alter database DBAUSA Set Witness ='TCP://PELIMSIMIR01.AUSA.COM.PE:2106'

11

Cuando Termina de sincronizar deber mostrarse de la siguiente manera

Y en el servidor PELIMSIMIR01 las base de datos espejo tendr que quedar en modo de Mirror y sincronizado como se muestra en la siguiente figura.

12

3. Verificacin de Comunicacin Para comprobar la conexin de los servidores Mirroring usamos el comando netstat a, el muestra todas las conexin de los servidores. Grfico de ejemplo

13

Tambin se puede utilizar el Mirror Monitor para verificar que la transferencia y sincronizacin entre los servidores Principal y Mirror

14

Das könnte Ihnen auch gefallen