SQL Server 2022. Alta Disponibilidad con Always ON. Instalación paso a paso (III)
Tercera y última parte de esta serie. Creación del Always On y el clúster totalmente funcional con Alta Disponibilidad.
Si has llegado hasta aquí directamente, te aconsejo a que le eches un ojo a las entradas anteriores con todo el proceso completo.
- Creación del Clúster Windows
- Instalación y configuración de SQL Server 2022
- Creación de grupo de alta disponibilidad Always On (lo que vas a ver a continuación)
Siguiendo con el modelo de las anteriores entradas, esta también la divido en tres partes:
- 1. Creación de Base de Datos y realización de Backup Full
- 2. Creación de Grupo de Alta Disponibilidad Always On y sincronización de Base de Datos
- 3. Comprobaciones posteriores. Pruebas de Conmutación por error/Failover
Vamos a por ello! ▶️
Repasamos
En la entrada anterior, se instaló SQL Server 2022 y SQL Management Studio en los dos servidores. Se creó un usuario de sistema operativo y se puso como propietario del servicio SQL Server. Se habilitó Always On y configuró el puerto en 1433. Por último, se permitió el login a SQL Server con cuentas SQL, se crearon dos usuarios y se le dieron permisos.
Solo falta el quid de la cuestión. Montar el Always On y tener un clúster con alta disponibilidad.
Documentación Oficial
Como en las entradas anteriores, la documentación oficial sobre el asunto que hoy nos compete.
- ¿Qué es un grupo de disponibilidad AlwaysOn?
- Referencia para la creación y configuración de grupos de disponibilidad Always On
Procedimiento
1. Creación de Base de Datos y realización de Backup Full
1.1. Creación de Base de Datos
Conéctate a la «INSTANCIA1» con el usuario «bbdd1» que creaste en el capítulo anterior. Asegúrate de marcar «Autenticación de SQL Server».
Sobre «Bases de Datos» haz click derecho. Pulsa en «Nueva base de datos…»
Ponle el nombre que tu quieras. Yo he puesto «Prueba_AlwaysOn». Pulsa aceptar con todas las opciones por defecto.
1.2. Realización de Backup Full
Haz una copia de seguridad tipo FULL de la base de datos que acabas de crear. Tiene poco sentido, lo se. Es una base de datos nueva, que esta vacía, no tiene datos. ¿Qué vas a guardar?
Es un requisito para cualquier base de datos que vas a añadir a un Grupo de Alta Disponibilidad Always On. Siempre, antes de incluirla, debes realizar un backup full. En caso contrario, vas a ver un mensaje indicándote que no cumples los requisitos.
- Haz click derecho sobre la base de datos que acabas de crear. Pulsa en «Tareas» > «Copia de seguridad…»
- En esta nueva ventana, asegúrate que el tipo de copia de seguridad es Completa (FULL)1 y selecciona la ruta donde vas a guardar la copia. Pulsa «Aceptar».
- Voilà, la copia se ha realizado correctamente.
2. Creación de Grupo de Alta Disponibilidad Always On y sincronización de Base de Datos
2.1. Creación de Grupo de Alta Disponibilidad Always On.
- Click derecho sobre «Alta disponibilidad Always On» > «Asistente para nuevo grupo de disponibilidad…»
- Esta primera ventana es informativa. Pulsa «Siguiente».
- Pon el nombre que tu quieras al grupo. Yo he elegido ADAO (Alta Disponibilidad Always On)
- Observa que aparece «Cumple todos los requisitos». Si no hubiéramos hecho la copia de seguridad, nos indicaría que es una base de datos sin copia, y no nos dejaría seleccionarla. Marca la base de datos que hayas creado para unirla al grupo.
Como la base de datos no está cifrada, no será necesario ponerle ninguna contraseña. - En la pestaña «Replicas» está añadida la INSTANCIA1, que es desde donde estoy conectado. Por lo tanto, click en «Agregar replica…» para añadir la INSTANCIA2, o tantas como tengas.
- Aparece la ventana de login, como si fueras a conectarte a tu base de datos. Aquí es necesario que en «Nombre del servidor» pongas el de la INSTANCIA2. Establece la «Autenticación» como «Autenticación de SQL Server» y no como «Autenticación de Windows».
Aquí es donde entra en juego el usuario que creamos en cada instancia. Pon el nombre de usuario y contraseña del que pertenece a la INSTANCIA2. - Si la conexión es exitosa, verás las dos instancias de base de datos en el listado.
Marca la opción de «Conmutación Automática por error», Confirmación Sincrónica y en caso de que tengas versión Enterprise y quieras tenerla disponible, marca la «Replica Secundaria Legible» > Si. (En la versión Standard es una de las limitaciones que tiene.)
El «Modo de Disponibilidad» Sincrónico o Asincrónico nos daría para un capitulo aparte, que quizá más adelante me anime a escribir sobre él. - En esta misma ventana, ve a la pestaña «Cliente de escucha» (Listener).
Crea un nuevo listener. Ponle el nombre que quieras, el puerto 1433. - Añade una dirección IP Estática que esté dentro del rango que definimos en nuestra tarjeta de red. En este caso, he sumado 1 a la IP de la INSTANCIA1.
- ¿De qué forma vamos a iniciar la sincronización de datos entre instancias?
En esta práctica, tienes una base de datos vacía, prácticamente no pesa nada, y cumple el requisito de «Necesita que las rutas de acceso sean iguales en cada instancia». Selecciona «Inicialización Automática» ya que tardará muy poco tiempo en crear la base de datos en la otra instancia y sincronizarla.
Mi recomendación es que si estás en un entorno productivo y la base de datos es de gran tamaño, lo hagas con el método «Solo unirse». De esta forma tendrás que hacer un backup en origen, copiarlo a destino y restaurarlo en modo de recuperación antes de crear el grupo de disponibilidad. - El asistente realizará unos pasos de validación para ver que todos los requisitos son correctos.
- Posteriormente mostrará un resumen de todas las opciones seleccionadas y también puedes guardarte el script que va a ejecutar pulsando el botón de la parte inferior derecha.
- Se realizan todas las tareas que conlleva el Always On. Puedes ir haciendo seguimiento de todas ellas.
- Se completa el asistente, y ya tienes tu base de datos en Alta Disponibilidad mediante Always On. 👏🏼
2.2. Observa el grupo que acabas de crear
Ya tienes creado el Grupo de Disponibilidad Always On, y en la siguiente imagen, puedes ver los dos servidores, uno al lado del otro, para que veas la información más clara.
En la INSTANCIA1, ADAO está marcado como (Principal). Y desde esta misma INSTANCIA1, dentro del grupo ADAO puedes ver «Replicas de disponibilidad», donde aparece la INSTANCIA2 como secundaria.
Si miras el lateral derecho, conectado a INSTANCIA2, verás que el grupo ADAO está como (Secundario). Pero también se incluye la base de datos que hemos añadido y su correspondiente Listener.
2.3. Sincronización de la base de datos
Ya finalizada la creación del grupo de Alta Disponibilidad, vas corriendo a la INSTANCIA2. No han aparecido las bases de datos que has incluido todavía. Paciencia, dependiendo de su tamaño y de la velocidad de la red, será un proceso más rápido o más lento.
Como verás en la siguiente imagen, la base de datos se crea automáticamente en la INSTANCIA2 y aparece entre paréntesis un mensaje que antes no estaba. (Sincronizado).
Como anteriormente marcaste que las replicas secundarias fueran legibles, desde INSTANCIA2 podrás explotar datos. En las replicas secundarias tendrías una base de datos de solo lectura (read-only).
3. Comprobaciones posteriores. Pruebas de Conmutación por error/Failover
3.1. Ping a la nueva IP del Listener
La IP 192.168.230.21 no está dada de alta en ninguna parte, no se ha creado ninguna entrada para que esta IP resuelva. Antes de crear el listener, si haces un ping a la IP que vas a poner como escucha, verás que no resuelve y no tiene conexión.
Mira CLUSTER1, el clúster de sistema operativo que creamos en los primeros pasos. Verás que hay un nuevo recurso de tipo Rol con el nombre del Grupo de Disponibilidad. Este tiene como propietario el Nodo1 y está escuchando en la IP 192.168.230.21.
Si desde Nodo2 hacemos un ping a esta IP, verás que ahora escucha perfectamente y tiene respuesta.
3.2. Conmutación por error / Failover
Realiza una prueba básica para comprobar que todo funciona correctamente. Haz una conmutación por error controlada para cambiar el rol Primario de Nodo1 a Nodo2, y que ahora Nodo1 sea el secundario.
- En la INSTANCIA1, click derecho sobre el grupo creado y pulsa en «Conmutación por error…» (Failover si está inglés)
- La primera ventana del asistente es informativa. Pulsa «Siguiente».
- Aquí se muestra cual es la Replica principal, y abajo podrás seleccionar cual quieres que ahora se convierta en principal. En este caso, solo hay dos, por lo tanto, aparece la INSTANCIA2.
Especial atención siempre a que la conmutación sea «Sin pérdida de datos». - Conecta con el usuario local de la INSTANCIA2 a la replica que quieres que sea la principal.
- Una vez aceptada la conexión, verás que aparece conectado como «bbdd2» o el usuario que tu hayas creado. Pulsa «Siguiente»
- Pequeño resumen de los cambios que has solicitado hacer. Como siempre, puedes guardar el script que se va a lanzar por debajo.
- Comienza el proceso. Puedes ver las tareas que se realizan detalladamente.
- Finalizado correctamente. La INSTANCIA2 se muestra como principal y la otra ha quedado como secundaria.
(BONUS) Creación de tabla, sincronización y prueba de borrado en replica de solo lectura
Como parte extra, un ejercicio muy sencillo.
Se va a crear una tabla y verificar que replica correctamente al otro servidor. Como es de solo lectura, verás que no se puede ni borrar la tabla ni crear nuevos objetos desde esta replica, marcada como secundaria legible.
En el vídeo verás todos los detalles y comentarios de cada acción que se realiza.
Resumiendo
Existe un panel informativo o cuadro de mando del Always On. Aquí puedes ver toda la información del grupo de disponibilidad desde INSTANCIA2.
El estado es correcto. La instancia principal es INSTANCIA2. Muestra también el estado del clúster windows y el tipo de clúster que es.
Más abajo, puedes observar todas las replicas que forman este Always On, el rol que ocupan, el modo de disponibilidad, el estado de sincronización, y de cara a una conmutación, si hay o no pérdida de datos.
Es muy útil. Puedes ver mucha información de un vistazo rápido.
Y hasta aquí esta guía de como montar un Always On con SQL Server 2022.
¿Te atreves a realizar esta práctica?
Si tienes alguna duda o te atrancas puedes escribirme y te ayudaré encantado.
Ánimo 😉
Comments