Download Modulo 8 Disponibilidad de Datos y Replicación en SQL Server

Document related concepts

Microsoft SQL Server wikipedia , lookup

Área Global del Sistema wikipedia , lookup

Espejo (Internet) wikipedia , lookup

MySQL Cluster wikipedia , lookup

Procedimiento almacenado wikipedia , lookup

Transcript
Modulo 8
Disponibilidad de Datos y Replicación en SQL Server 2005
○
Introducción a la Disponibilidad de Datos
○
Failover Clustering
○
Database Mirroring
º
Mejoras en Replicación
Introducción a Disponibilidad de Datos
Introducción
Idealmente, un sistema de base de datos debería estar disponible las 24 horas del día, cada día. En
realidad, esto no es siempre posible, hay técnicas que puede usar para incrementar la disponibilidad de
sus aplicaciones. El SQL Server 2005 provee tres tecnologías que pueden ayudarlo a crear sistemas de
base de datos altamente disponibles: clustering, log shipping, y database mirroring.
Clustering
Clustering provee soporte de servidor completo y alta disponibilidad en caso de tener una falla de
hardware o mantenimiento agendado. En caso de falla, el sistema operativo y SQL Server trabajan
juntos para proveer un sistema automatizado para fallas. En el caso de agendar que la computadora no
funcione, puede configurar un nodo para que falle sobre otro para asegurarse que las aplicaciones aun
están disponibles para los usuarios. Ha sido posible tomar ventaja del clustering de Microsoft
Windows® en las ediciones previas de SQL Server, pero SQL Server 2005 Enterprise Edition mejora y
extiende estas capacidades:
El SQL Server 2005 soporta hasta ocho nodos cuando esta corriendo en Microsoft Windows Server.
2003 Datacenter Edition, incrementando la capacidad de failover.
!
El SQL Server 2005 también extiende la funcionalidad de clustering para permitirle ver el clustering
en conjunción con Analysis Services, Notification Services, y SQL Server Replication.
!
Log shipping
Log shipping provee un calido standby de sus datos que puede ser traído online en caso de falla del
sistema. Una base de datos completa es restaurada a un servidor secundario, y luego los logs de
transacción de la base de datos primaria son aplicados constantemente a la base de datos secundaria.
Este es un costo relativamente bajo a la solución de la disponibilidad de datos.
Log shipping esta disponible solo para usuarios de bases de datos, no sistemas de bases de datos. Esto
significa que debe tener un régimen estricto de backup las bases de datos master y msdb en el
servidor primario y restaurarlos en el secundario. Sin este régimen, cualquier metadato cambiado será
perdido en la falla del sistema, resultando potencialmente en logins, trabajos y alertas perdidos.
Database mirroring
Database mirroring es una nueva técnica disponible en SQL Server 2005 Enterprise Edition que
provee una versión mejorada de log shipping para un failover mas rápido. En lugar de shipping
transaction logs e una constante, intervalos configurados, cada transacción es shipped mientras que es
aplicada al servidor primario. No puede configurar un mirror set para automáticamente fail over en el
caso en que el servidor primario falle, y puede programar aplicaciones de cliente para
automáticamente reconectarse con el nuevo servidor primario.
Como log shipping, el mirroring de la base de datos esta disponible solo a usuarios de base de datos, y
requiere que asegure manualmente la disponibilidad y corrección de su sistema de base de datos.
Seleccione una Solución de Alta Disponibilidad
Es importante entender que ninguna de las soluciones de alta disponibilidad en SQL Server 2005 es
una opción aislada. Puede combinar dos o más técnicas dentro del mismo sistema para cubrir todas las
eventualidades.
La siguiente tabla compara y contrasta tres de las tecnologías de alta disponibilidad en SQL Server
2005.
Atributo Disponible
Clustering
Log shipping
Database
mirroring
Detección de Falla
Si
No
Si
Failover Automático
Si
No
Si
Perceived downtime
30 segundos +
recupero
N/A
Menos de tres segundos
Potencial de datos
perdidos
Si una copia de datos
Si la ultima
transacción log
Si en algunas
configuraciones
Masking of storage
failure
Sin disco compartido
Si
Si
Requerimientos
especiales de hardware
Almacenamiento y
servidores certificados
No
No
Distancia limitada
Yes.about 100
miles
No
No
Rango
Base de datos de sistema
y usuario
Base de datos de usuario
Base de datos de Usuario
Puede usar replicación en combinación con soluciones de alta disponibilidad para dar mayor
protección de datos de su sistema.
Introducción a Mirroring de Base de Datos
Introducción
Mirroring de base de datos puede proveer una solución failover casi instantánea para las bases de
datos SQL Server 2005. En esta edición, mirroring de base de datos le permite mantener una copia
actualizada de su base de datos en un servidor aparte para eventos de failover durante una falla del
servidor. Esta sección le enseña el concepto de mirroring una base de datos.
Objetivos de la sección
Luego de completar esta sección, usted podrá:
! Definir mirroring de base de datos.
! Identificar los roles realizados por los servidores en escenarios de mirroring de base de datos.
! Describir como funciona una sesión de mirroring.
! Describir como las diferentes configuraciones se comportar en las diferentes fallas del servidor.
! Describir los conceptos de mirroring de una base de datos.
Qué es Mirroring de Base de Datos?
Introducción
Mirroring de base de datos es una solución de software para incrementar la disponibilidad de la base
de dato. Mirroring de base de datos en SQL Server 2005 mejora el nivel de disponibilidad que tenían
las versiones anteriores de SQL Server y provee una alternativa fácil al clustering failover.
Definición
Mirroring de base de datos funciones manteniendo un servidor en standby que tiene un copia de la
base de datos. Si el servidor de producción falla, las aplicaciones pueden ser redireccionadas al
servidor en standby. El failover puede ser la mas instantánea, típicamente necesita de menos de tres
segundos si es realizada automáticamente.
La base de datos sobre la cual se hace el mirror es usualmente referida como la base de datos
principal; el mirror es llamado la base de datos mirror. (Debe entender que estos términos son
puramente relativo, ya que es posible para las bases de datos cambiar los roles como resultados de
failover.) Los servidores que tienen estas bases de datos se los llama partner servers.
Redirección Transparente para el Cliente
Su las aplicaciones de su cliente usan el SQL Native Client Library (SNAC) provisto con SQL Server
2005, pueden tomar ventaja de la redirección transparente para el cliente. SNAC es conciente que el
servidor al que esta conectado es el mirror y cacheara el nombre del servidor mirror. En el caso de
falla del servidor principal, la sesión del cliente será perdida. El cliente intentara reconectarse al
servidor principal, pero si falla, automáticamente redireccionara la conexión al servidor mirror.
Estados de las Bases de Datos
Hacer un mirror de una base de datos envuelve algunos pasos, durante los cuales la base de datos pasa
por algunos estados:
" Estado de sincronización. Para permitir hacer el mirror, la base de datos mirror debe ser creada, y
todos los cambios realizados a la base de datos principal también deben ser aplicados a la base de
datos mirror. Mientras que esto sucede, la base de datos principal y la mirror están en estado de
sincronización.
" Estado de sincronización. Una vez que la base de datos mirror se actualizo con la base de datos
principal, ambas están en estado de sincronización. Todos los cambios hechos a la base de datos
principal serán automáticamente hechos en la base de datos mirror para asegurarse que permanecen
sincronizadas.
" Estado desconectado. Si un servidor pierde conexión con su servidor/es partner como un falla de la
red, la base de datos pasa a estado desconectado.
" Estado Suspnedido. El mirror puede ser detenido temporalmente, usualmente como resultado de
acciones hechas por administrador de la base de datos. Una vez que la base de datos no esta siendo
espejada, entra en estado suspendido.
Los pasos para configurar un mirror y la transición que realiza cada base de datos son descriptas en
mas detalle en esta lección.
Modos de Operación
Los mirror de las bases de datos pueden operar en dos modos, que determinan el grado de exposición
a la perdida de datos y la naturaleza del failover que pueda realizarse:
" Modo sincronizado. En modo sincronizado, los registros de transaction log son transmitidos de la
base de datos principal a la base de datos mirror, y aplicados a la base de datos mirror antes de ser
hechos en la base de datos principal. Este mecanismo garantiza que no habrá transacciones perdidas, a
expensas del tiempo adicional que requiere completar una transacción. Este modo soporta failover
manual y automático.
" Modo desincronizado. En modo desincronizado, las transacciones son hechas primero en el servidor
principal antes de enviar registros log a la base de datos mirror. La base de datos mirror esta en estado
de desincronizacion perpetuo. Las aplicaciones no son demoradas mientras la comunicación con el
servidor mirror se produce. Esto incrementa el trabajo al peligro de perder la sincronizacion con la
base de datos mirror si la comunicaron falla. El modo desincronizado no soporta failover, aunque un
administrador de base de datos puede realizar pasos para forzar el uso de una base de datos mirror en
caso que la base de datos principal este no disponible. Sin embargo, la base de datos mirror puede no
haber sido actualizada con los mas recientes cambios.
El modo desincronizado de mirror es preferible a log shipping porque el intervalo de sincronizacion
ente bases de datos esta basada en transacciones en vez de logs de archivos enteros. Adicionalmente,
hacer mirror requiere menos administración que log shipping.
Nota
En SQL Server 2005 Beta 3, ambas bases de datos envueltas en el mirror deben operar en modo de
recuperacion completa.
Rol de los Servidores en el Mirroring de Base de Datos
Introducción
El mirror de la base de datos envuelve por lo menos dos partner servers que tienen la base de datos
principal y la mirror. Adicionalmente, otro servidor testigo puede ser usado para monitorear el mirror,
proteger la base de datos mirror, e implementar failover automático.
Servidor de Base de Datos Principal
El servidor servidor de base de datos principal tiene la base de datos principal. Este es el servidor al
cual los usuarios y aplicaciones se conectan normalmente para realizar sus tareas.
Servidor de la Base de Datos Mirror
El servidor de la base de datos mirror tiene la base de datos mirror. Los usuarios y aplicaciones no se
conectan a este usualmente a menos que ocurra un failover y este servidor es hecho el servidor de base
de datos principal. En este caso, luego que la comunicaron ha sido establecida con el servidor
principal, el servidor principal original puede tomar el rol de servidor mirror.
Los servidores de base de datos principal y mirror deben poder comunicarse entre ellos usando una
conexión confiable. Idealmente, ambos servidores deben pertenecer al mismo dominio.
Servidor Testigo
Un Servidor Testigo monitorea los servidores de base de datos principal y mirror y verifica que ambos
servidores estén disponibles. Como esto no es un trabajo intensivo, una computadora corriendo SQL
Server puede actuar como servidor testigo para cualquier set de mirrors.
Si el servidor de la base de datos principal o mirror fallan, el servidor testigo puede trabajar con el
servidor que sobreviva para reconectarse o reaccionar apropiadamente. Las acciones que se realizan,
que dependen de la configuración en curso de set de mirrors, son descriptas mas tarde en esta sección.
Sesiones de Mirror
Introducción
El mirror de la base de datos se realiza en el contexto de una sesion mirror. Una secion mirror
mantiene la infotmacion acerca del estado de las bases de datos, las mirror partners y el servidor
testigo.
Iniciar una sesión mirror
Cuando un administrador de base de datos inicia un una sesión mirror, el servidor de la base de datos
mirror identifica los registros log de las transacciones mas recientes que fueron aplicadas a la base de
datos mirror, y luego requiere cualquier registro log de transacciones subsiguiente del servidor
principal. Esta es la fase de sincronización de la sesión mirror.
Durante la sesión
Luego que la base de datos mirror esta sincronizada con la base de datos principal, el servidor de la
base de datos principal transmitirá todos los registros log de transacciones para la base de datos
principal a la base de datos mirror. Los registros log son transmitidos como cambios son hechos,
efectiva y continuamente rodando la base de datos mirror hacia la base de datos principal. El modo de
operación de la sesión mirror (sincronizada o desincronizada) determina si los registros de log de
transacciones serán aplicados a la base de datos mirror antes o después que las transacciones se
completen en la base de datos principal.
Una sesión mirror mantiene la información acerca del estado de cualquiera de los servidores testigo,
asegurándose que el servidor testigo esta visible y puede monitorear a los partner servers.
Terminar una Sesión Mirror
Una sesión puede ser terminada por una variedad de causas, las mas comunes son:
Falla en la comunicación de los servidores
Si el servidor principal se vuelve inaccesible, el servidor mirror puede ser hecho el servidor principal.
Esto puede ocurrir automáticamente, dependiendo del modo de operación en la sesión mirror y la
presencia de un servidor testigo.
!
Intervención manual del administrador de la base de datos.
El administrador de la base de datos puede terminar manualmente el mirroring usando comandos
Transact-SQL ALTER DATABASE. una sesión puede ser terminada completamente de esta manera,
o un mirroring puede ser simplemente suspendido, para reanudarse mas tarde. (Las bases de datos
pararan a la fase de sincronización otra vez hasta que la sesión continué.)
!
Nota
Luego que una sesión mirror ha comenzado, los usuarios no podrán conectarse a la base de datos
mirror. Este es un mecanismo de seguridad que previene a la base de datos de cambios accidentales.
La base de datos mirror permitirá el acceso solo luego de un failover (cuando toma el rol de base de
datos principal), o si el administrador de la base de datos lo permite.
Los comandos ALTER DATABASE usados para controlar una sesión mirror son descriptos mas
detalladamente en esta sección.
Configuraciones de Base de Datos Mirroring
Introducción
Hay varias maneras de configurar un set de mirrors. El comportamiento de los sets depende de un
numero de factores, incluyendo la presencia de un servidor testigo y el modo de operación
(sincronizado o desincronizado).
Para establecer cualquier tipo de sesión mirror, primero debe restaurar la base de datos desde el
servidor principal dentro del servidor mirror, y luego aplicar los logs de transacción al servidor mirror.
Luego puede establecer la sesión usando las statement ALTER DATABASE con la cláusula SET
PARTNER en cada servidor. tiene la opción de crear un servidor testigo usando la stament ALTER
DATABASE con la cláusula SET WITNESS. Una vez que la sesión es iniciada, las transacciones
que ocurran en el servidor principal serán mirrored en el servidor mirror.
Diferentes configuraciones tendrán diferentes comportamientos ambas durante la sesión y si o el
servidor principal o el mirror fallan, como se describe en los siguientes escenarios.
Escenario: Mirroring Sincronizado con Servidor Testigo
Mirror sincronizado con un servidor testigo provee la mas alta disponibilidad de mirror de base de
datos porque soporta failover automático sin perdida de datos. Sin embargo, como es requisito que las
transacciones sean entradas en el log en el servidor mirror antes de serlo en el servidor principal, la
performance puede verse afectada.
En el modo de operación sincronizada, las transacciones no son comprometidas en el servidor
principal hasta que hayan sido entradas en el log de transacción en el servidor mirror y un mensaje de
éxito ha sido recibido. el comportamiento resultante cuando un servidor se vuelve no disponible,
depende en cual servidor ha fallado, como se describe a continuación:
Servidor Principal. Si el servidor principal se vuelve no disponible por cualquier razón, el servidor
testigo instruirá al servidor mirror a tomar el rol de servidor principal. El servidor mirror traerá la base
de datos mirror online y a los usuarios y aplicaciones que son servidas. A este punto, la sesión mirror
es suspendida porque no hay mirror disponible para el nuevo servidor principal. Cuando el servidor
principal original es recuperado, tomara el rol de servidor mirror del nuevo servidor principal. Si es
Nazario, puede iniciar un failover manual para revertir estos roles a la configuración inicial.
!
Servidor Mirror. Si el servidor mirror se vuelve no disponible, el servidor principal seguirá
operando, pero en un estado suspendido. El Mirroring puede ser reestablecido restaurando el servidor
mirror.
!
Escenario: Mirroring Desincronizado con un Servidor Testigo
Mirroring desincronizado con un servidor testigo provee una alta disponibilidad con buena
performance porque las transacciones pueden ser comprometidas en el servidor principal
inmediatamente. Esta configuración es particularmente útil cuando hay una larga distancia o tardanza
entre los servidores principal y mirror.
En el modo de operación desincronizada, las transacciones son comprometidas en el servidor principal
y enviadas al log de transacciones del servidor mirror. Esto puede incrementar el trabajo porque el
compromiso en el servidor principal no esta esperando comunicación del servidor mirror. El
comportamiento cuando un servidor en un set de mirror desincronizado se vuelve no disponible es
descrito a continuación:
Servidor Principal. Si el servidor principal no esta disponible, el servidor testigo no puede iniciar
failover automático y la base de datos se vuelve no disponible. Puede manualmente forzar el servicio
en el servidor mirror para hacerlo asumir el rol de servidor principal de base de datos y servir su copia
de la base de datos a los usuarios y aplicaciones. Sin embargo, esto puede resultar en la perdida de
transacciones que fueron comprometidas en el servidor principal antes que falle pero aun no fueron
cometidas en el servidor mirror. Cuando el servidor principal original es restaurado, el servidor testigo
lo instruirá a volverse el servidor mirror para la base de datos.
!
Servidor Mirror. Si el servidor mirror se vuelve no disponible, el servidor principal continuara
operando, pero en un estado suspendido. El mirroring puede ser reestablecido recuperando el servidor
mirror y resumiendo la sesión.
!
Escenario: Mirroring Sincronizada sin un Servidor Testigo
El mirroring sincronizado sin un servidor testigo le permite garantizar que los datos en ambos
servidores son siempre concurrentes. Esta configuración es útil cuando necesita garantizar la
integridad de los datos y puede tolerar que el servidor no este disponible e issues de performance
potenciales.
La ausencia de un servidor testigo impacta los efectos de la falla de un servidor mirror en el modo
sincronizado. Failover automático no puede ocurrir porque no hay suficientes servidores para formar
una decisión quórum de cual servidor debe tomar el rol de servidor principal y cual el de servidor
mirror. El comportamiento resultante cuando un servidor no esta disponible y no hay servidor testigo
es descrito a continuación:
Servidor Principal. Si el servidor principal se vuelve no disponible, la base de datos también se
vuelve no disponible. Forzar manualmente al servidor mirror a servir y resumir la sesión mirror una
vez que el servidor principal esta otra vez online.
!
Servidor Mirror. Si el servidor mirror se vuelve no disponible, el servidor principal pondrá la base de
datos offline. Esta acción es para maximizar la protección de la base de datos y asegurar la integridad
de sus contenidos. Una vez que el servidor mirror es reiniciado, el servidor principal se vuelve
disponible automáticamente otra vez.
!
Configurar Mirroring de Base de Datos
Introducción
Crear una sesión mirror envuelve configurar un Server mirror, estableciendo una sesión, y ,
opcionalmente, establecer un servidor testigo. Otras tareas de administración incluyen inicializar
failovers manualmente para propósitos de mantenimiento y terminar sesiones. Esta sección le mostrara
como configurar y usar mirroring de una base de datos.
Objetivos de la sección
Luego de completar esta sección, usted podrá:
! Configurar un servidor mirror.
! Configurar mirroring endpoints.
! Establecer una sesión mirror.
! Establecer un servidor testigo.
! Administrar sesiones mirror.
! Configurar mirroring de base de datos.
Como Configurar un Servidor Mirror
Introducción
Antes de configurar un mirroring de base de datos y establecer una sesión mirror debe configurar el
servidor mirror y la base de datos.
Servidor Mirror
El servidor que tiene la base de datos, debe ser accesible y confiable por el servidor principal de base
de datos. Idealmente, el servidor principal y el servidor mirror deben pertenecer al mismo dominio.
Adicionalmente, si el servidor mirror es tentado a proveer servicio en un failover, esa computadora
debe tener suficiente memoria y poder de proceso para actuar como un sustituto del servidor principal
de base de datos. Debería poder soportar usuarios y aplicaciones sin diferencia notable en la calidad
del servicio.
Nota
El servidor mirror puede ser una instancia en la misma computadora que le servidor principal de base
de datos. Sin embargo esto no es recomendable, porque impactara la performance y la recuperabilidad
de la base de datos en caso de una falla seria de hardware. Para que ocurra un failover automatico
confiable, la base de datos mirror y la base de datos principal debem estar en computadoras diferentes.
Bases de Datos Mirror
Debe crear una base de datos mirror manualmente. Por simplicidad, la estructura de archivos de la
base de datos mirror debe coincidir con la base de datos principal. Ambas bases de datos deben
implementar el modelo de recuperación completa. Luego que la base de datos mirror ha sido creada,
debe aplicar el backup mas reciente de la base de datos completa de la base de datos principal a la
base de datos mirror usando el comando RESTORE DATABASE con la cláusula WITH
NORECOVERY.
Nota
Es importante que use la opción WITH NORECOVERY, porque la base de datos mirror debe
permanecer en el estado de restauración para que los registros de transacción log sean aplicados
durante el mirroring.
Cómo Configurar Mirroring Endpoints
Introducción
Antes de establecer una sesión mirror, debe configurar el mecanismo de configuración por el cual el
mirroring ocurrirá. Esto envuelve asegurarse que los endpoints apropiados son creados en cada
instancia de servidor que practicaran en las operaciones mirroring. Un endpoint simplemente controla
el puerto Transmission Control Protocol (TCP) en el cual una instancia de servidor escucha los
mensajes para una base de datos mirroring. Un endpoint también define el rol que ese endpoint debe
realizar.
Una instancia de servidor requiere solo un endpoint en el cual escuchar, sin importar en cuantas
sesiones de mirroring participa. Sin embargo, cada instancia requiere un único puerto en el cual
escuchar, por lo tanto, si su servidor tiene instancias múltiples de SQL Server participando en una
sesión mirror, cada instancia requiere su propio endpoint, configurado con un único puerto TCP.
Crear un Partner endpoint en el Servidor Mirror
Un servidor mirror requiere un partner endpoint para que pueda comunicarse con los servidores
principales para actividades de mirroring. El siguiente código crea partners endpoint llamados
mirroring_ep y especifica que debe volverse activo inmediatamente seteando el parámetro STATE a
STARTED. También especifica que el puerto TCP 5022 debe ser usado para escuchar las operaciones
de mirroring . El puerto 5022 es el puerto TCP por defecto para operaciones de mirroring de SQL
Server 2005. el ejemplo también muestra como setear el rol del endpoint a PARTNER.
--Endpoint for the mirror server
CREATE ENDPOINT mirroring_ep
STATE=STARTED
AS TCP(LISTENER_PORT=5022)
FOR DATABASE_MIRRORING
(ROLE=PARTNER)
Crear un Partner endpoint en el Servidor Principal
Si su escenario mirroring incluye un servidor testigo, también necesitara crear un endpoint en la
instancia de SQL Server que proveerá servicio testigo. La sintaxis para crear un endpoint testigo es
similar a la usada para crear partner endpoints, con la exclusión que necesita especificar el rol
WITNESS. El siguiente código crea un endpoint para un servidor testigo:
--Endpoint for the witness server
CREATE ENDPOINT mirroring_ep
STATE=STARTED
AS TCP(LISTENER_PORT=5022)
FOR DATABASE_MIRRORING
(ROLE=WITNESS)
Como antes, si otra instancia de SQL Server en la misma computadora ya esta usando el endpoints
para sesiones mirroring, deberá elegir un puerto único para la instancia de SQL Server que esta
actuando como testigo.
Cómo Establecer una Sesion Mirror
Introducción
Luego de haber preparado el servidor y base de datos mirror y crear el endpoint apropiado, debe
iniciar una sesión mirror estableciendo el servidor de base de datos principal y mirror como partners.
Los siguientes ejemplos están basados asumiendo que quiere hacer un mirror de la base de datos
AdventureWorks en el servidor London al servidor Manchester. El ejemplo también asume que el
puerto TCP por defecto 5022 es usado por el mirroring endpoints en cada servidor.
Crear un mirroring en una Relación de Partners
Corra el comando ALTER DATABASE con la cláusula SET PARTNER para crear una relación de
partners entre los servidores:
ALTER DATABASE database_name
SET PARTNER = 'server_network_address'
Corra el comando ALTER DATABASE en el servidor mirror primero, especificando la dirección
endpoint del servidor principal como el parámetro server_network_address. Esto pondrá a la base de
datos mirror en un estado listo para iniciar la sincronización cuando sea contactado por el servidor
principal. Por ejemplo, para configurar un mirror para la base de datos AdventureWorks en el servidor
London, usando el siguiente statement:
ALTER DATABASE AdventureWorks
SET PARTNER = 'TCP://London:5022'
Cuando la base de datos mirror esta lista para comenzar la sincronización, corra el comando ALTER
DATABASE en el servidor principal, especificando el servidor mirror como el parámetro
server_network_address. Para especificar que el servidor Manchester esta configurado para actuar
como el mirror del servidor London, corra el siguiente comando en el servidor London:
ALTER DATABASE AdventureWorks
SET PARTNER = 'TCP://Manchester:5022'
La sincronización y la sesión mirror comenzaran; ambas bases de datos pasar al estado de
sincronización antes de entrar al estado sincronizado.
Cambiar el Modo de Operación
Por defecto, una sesión de mirror opera en modo sincronizado. puede cambiar el modo de operación
de una sesión mirror usando el comando ALTER DATABASE con la cláusula SET PARTNER
SAFETY en cualquier servidor partner:
ALTER DATABASE database_name
SET PARTNER SAFETY <safety_mode>
El parámetro safety_mode puede estar en OFF (para modo desincronizado), o FULL (para modo
sincronizado). Por ejemplo, especificar el modo sincronizado para la sesión mirror configurada antes,
ejecute el siguiente comando en cualquier servidor, el London o el Manchester:
ALTER DATABASE AdventureWorks
SET PARTNER SAFETY FULL
Ver Información de Mirrors en Relacion de Partners
Puede consultar la vista del catalogo sys.databases para examinar la relación de partners mirror entre
bases de datos. La siguiente tabla describe las columnas conteniendo información de mirroring útil.
Columna
Descripción
mirroring_state_desc
Una descripción textual del estado de la base de datos.
Esta columna tendrá alguno de los siguientes valores:
DISCONNECTED
SYNCHRONIZED
SYNCHRONIZING
SUSPENDED
PENDING_FAILOVER
mirroring_partner_name
La dirección de red del mirroring partner.
mirroring_witness_name
La dirección de red del servidor testigo, o nada si no
hay testigo presente.
mirroring_witness_state_desc
Una descripción textual del estado del servidor testigo.
Esta columna tendrá algunos de los siguientes valores:
UNKNOWN
CONNECTED
DISCONNECTED
mirroring_role_desc
Una descripción del rol de la base de datos. Esta
columna tendrá los siguientes valores:
PRINCIPAL
MIRROR
mirroring_safety_level_desc
Una descripción del modo de operación de la base de
datos. Esta columna tendrá los siguientes valores:
UNKNOWN
OFF (desincronizado)
FULL (sincronizado)
mirroring_safety_sequence
Actualiza el numero de secuencia por cambios de
transacción a nivel de seguridad.
mirroring_failover_lsn
EL numero de secuencia de log en el ultimo failover.
Nota
Si una base de datos no participa en una sesión mirror, todas las columnas mirror en sys.databases
para esa base de datos, contendrán valores null.
También puede usar los contadores de performance del set mirror en el objeto de base de datos del
servidor para monitorear la actividad dentro de su set mirror.
Cómo Establecer un Servidor Testigo
Introducción
Si quiere implementar el failover automático, debe establecer un servidor testigo en su set mirror. El
servidor testigo debe estar en una computadora diferente del servidor principal y el mirror, Sin
embargo, un servidor puede actuar como testigo mirror para varias relaciones de partners.
Crear un Testigo
Use el comando ALTER DATABASE con la cláusula SET WITNESS en el servidor principal para
crear un servidor testigo:
ALTER DATABASE database_name
SET WITNESS = 'server_network_address'
Especifique la dirección del servidor testigo y el punto endpoint para actuar como el testigo para el
parametro server_network_address Por ejemplo, para crear un testigo en un servidor llamado
Birmingham para la sesión de mirror entre los servidores London y Manchester discutidos antes, corra
el siguiente comando en el servidor London:
ALTER DATABASE AdventureWorks
SET WITNESS = 'TCP://Birmingham:5022'
Nota
Failover automático correrá si la sesión mirror es establecida usando el modo de operación
sincronizado, un servidor testigo ha sido creado, y las bases de datos principales y mirror están
corriendo en computadoras separadas.
Remover un Testigo
Puede deshabilitar un testigo de una sesión mirror usando el siguiente comando en cualquiera de los
servidores partner:
ALTER DATABASE database_name
SET WITNESS OFF
Con el servidor testigo deshabilitado, la sesión mirror continuara, pero el failover automático no será
posible y el failover deberá ser realizado manualmente.
Nota
El failover manual solo es posible si la sesión mirror es usada en el modo de operación sincronizado.
Ver Información del Servidor Testigo
La vista de catalogo sys.database_mirroring_witnesses contiene información acerca del servidor
testigo. Las columnas de interés de esta vista están resumidas en la siguiente tabla.
Columna
Descripción
database_name
La dirección de red de la base de datos sobre la cual se
esta haciendo el mirror.
principal_server_name
La dirección de red del servidor que tiene la base de
datos principal.
mirror_server_name
La dirección de red del servidor que tiene la base de
datos mirror.
safety_level_desc
Una descripción textual del modo de operación en
curso. Esta columna tendrá los siguiente valores:
UNKNOWN
OFF (desincronizado)
FULL (sincronizado)
Cómo Administrar Sesiones Mirror
Introducción
En presencia de un servidor testigo, el failover ocurrirá automáticamente si el servidor principal falla.
Sin embargo, si no hay servidor testigo disponible, debe hacer un failover manual. Si la base de datos
principal no esta disponible y las bases de datos no están sincronizadas, el failover no puede ocurrir y
debe forzar el servicio a hacer el mirror de la base de datos.
También puede suspender y resumir una sesión mirror para aliviar temporalmente issues de una
performance y terminar sesiones permanentemente.
Realizar un Failover Manual
Puede realizar un failover manual para hacer actualizaciones de hardware u otras operaciones de
mantenimiento en el servidor principal. Failing over asegura que la base de datos este disponible
cuando el servidor principal esta offline.
Si nenecita poner el servidor principal offline, ejecute el comando ALTER DATABASE con la
cláusula SET PARTNER FAILOVER en el servidor principal para iniciar un failover manual:
ALTER DATABASE database_name
SET PARTNER FAILOVER
El servidor mirror completara cualquier recuperación y se pondrá en online. La base de datos mirror y
la principal intercambiaran los roles. Puede llevar el servidor principal original (ahora el mirror)
offline y realizar cualquier mantenimiento requerido. Cuando ponga el servidor otra vez online, puede
poner las bases de datos en sus roles originales y repetir este proceso en el nuevo servidor principal.
Forzar el Servicio
El failover es solo posible cuando la sesión mirror usa el modo de operación sincronizado. Para
sesiones que corren desincronizadas, debe forzar el servicio en el servidor mirror para ponerlo online.
Sin embargo, hay peligro que no todos los registros de transacciones log se hayan propagado en la
base de datos mirror; algunos cambios recientes pueden ser perdidos.
Para forzar el servicio en el servidor mirror, use el comando ALTER DATABASE con la cláusula
SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS en el servidor mirror:
ALTER DATABASE database_name
SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
La mirror de la base de datos será recuperada tan pronto como sea posible y será puesta online. la base
de datos mirror entrara en estado suspendido. cuando el servidor principal se haya recuperado,
también será marcado como suspendido.
Suspender y Resumir Sesiones Mirror
Puede suspender temporalmente las sesiones mirror y luego resumirlas y sincronizar las bases de
datos. Por ejemplo, si se forma un bottleneck, debe querer permitir a todos las transacciones
simplemente completarse en el servidor principal y luego aplicarlos a la base de datos mirror.
Suspender una sesión causa que todas las logs de transacción en el servidor principal crezcan mientras
que cada transacción es logged y almacenada. Hasta que la sesión mirror es resumida o terminada, el
log de transacción del servidor principal no puede ser truncado porque la transacción aun tiene que ser
aplicada al servidor mirror.
Use el comando ALTER DATABASE con la cláusula SET PARTNER SUSPEND en cualquier
servidor para suspender la sesión:
ALTER DATABASE database_name
SET PARTNER SUSPEND
Para resumir la sesión, use el comando ALTER DATABASE y con la cláusula SET PARTNER
RESUME:
ALTER DATABASE database_name
SET PARTNER RESUME
Terminar la Sesión Mirror
Puede terminar manualmente la sesión mirror y terminar la relación entre los servidores. Terminar la
sesión borra toda la información acerca de la sesión desde todos los servidores y deja ambos
servidores el principal y el mirror con una copia independiente de la base de datos. La base de datos
mirror permanecerá en un estado de restauración hasta que sea recuperada o borrada manualmente.
Use el comando ALTER DATABASE con la cláusula SET PARTNER OFF en cualquier servidor
para terminar la sesión:
ALTER DATABASE database_name
SET PARTNER OFF