sql >> Base de Datos >  >> RDS >> Sqlserver

Implementar grupos de disponibilidad AlwaysOn de SQL Server en Linux

En el artículo anterior, expliqué cómo podríamos instalar Ubuntu 18.04 y SQL Server 2019 en las máquinas virtuales. Ahora, antes de continuar, repasemos la configuración.

Creamos tres máquinas virtuales, y los detalles son los siguientes:

Nombre de host Dirección IP Rol
LinuxSQL01 192.168.0.140 Réplica principal
LinuxSQL02 192.168.0.141 Réplica secundaria síncrona
LinuxSQL03 192.168.0.142 Réplica secundaria asíncrona

Actualice el archivo de host.

En la configuración, no estamos utilizando un servidor de dominio. Por lo tanto, para resolver el nombre de host, debemos agregar una entrada en el archivo de host.

El archivo de host se encuentra en /etc directorio. Ejecute el siguiente comando para editar el archivo:

[email protected]:/# vim /etc/hosts

En el archivo de host, ingrese los nombres de host y las direcciones IP de todas las máquinas virtuales:

Guarde el archivo de host.

Realice los mismos pasos en todas las máquinas virtuales.

Habilitar grupos de disponibilidad de SQL Server AlwaysOn

Antes de implementar AlwaysOn, debemos habilitar la función de alta disponibilidad en SQL Server.

En Windows Server 2016 esta opción se puede habilitar desde el administrador de configuración de SQL Server, pero en la plataforma Linux debemos hacerlo con un comando bash.

Conéctese a LinuxSQL01 usando Putty y ejecute el siguiente comando:

[email protected]:~# sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1

Reinicie los servicios de SQL Server:

[email protected]:~# service mssql-server restart

Realice los pasos anteriores en todas las máquinas virtuales.

Crear los certificados para la autenticación

A diferencia de AlwaysOn en el servidor de Windows, la implementación de Linux no requiere un controlador de dominio. Para la autenticación y comunicación entre las réplicas primaria y secundaria, utiliza el certificado.

El siguiente script crea un certificado y una clave maestra. Luego hace una copia de seguridad del certificado y lo asegura con una contraseña.

Conéctese a LinuxSQL01 y ejecute el siguiente script:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'abcd!1234';
CREATE CERTIFICATE AG_Auth_Cert WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE AG_Auth_Cert
   TO FILE = '/var/opt/mssql/data/ AG_Auth_Cert_backup.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/ AG_Auth_Cert_backup.pvk',
           ENCRYPTION BY PASSWORD = 'abcd!1234'
       );

Una vez que creamos el certificado y la clave maestra, los copiamos en réplicas secundarias (LinuxSQL02 y LinuxSQL03) ejecutando el siguiente comando.

Asegúrese de que la clave maestra y la ubicación del certificado sean las mismas en todas las réplicas y que tengan permiso de lectura y escritura.

/*Copy certificate and the key to LinuxSQL02*/

scp /var/opt/mssql/data/AG_Auth_Cert_backup.cer [email protected]:/var/opt/mssql/data/
scp /var/opt/mssql/data/AG_Auth_Cert_backup.pvk   [email protected]:/var/opt/mssql/data/

/*Copy certificate and the key to LinuxSQL03*/

scp /var/opt/mssql/data/AG_Auth_Cert_backup.cer   [email protected]:/var/opt/mssql/data/
scp /var/opt/mssql/data/AG_Auth_Cert_backup.pvk   [email protected]:/var/opt/mssql/data/

Ejecute el siguiente comando en los nodos secundarios para otorgar permisos de lectura y escritura en el certificado y la clave privada:

/*Grant read-write permission on certificate and key to [email protected]*/

[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.pvk
[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.cer

/*Grant read-write permission on certificate and key to [email protected]*/

[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.pvk
[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.cer

Una vez que se asigna el permiso, creamos el certificado y la clave maestra usando la copia de seguridad del certificado y la clave maestra creada en LinuxSQL01.

Para hacerlo, ejecute el siguiente comando en ambas réplicas secundarias:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'abcd!1234';
CREATE CERTIFICATE AG_Auth_Cert
    FROM FILE = '/var/opt/mssql/data/AG_Auth_Cert_backup.cer'
    WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/data/AG_Auth_Cert_backup.pvk',
    DECRYPTION BY PASSWORD = 'abcd!1234'
            );

Una vez que hayamos creado el certificado y la clave maestra, configuraremos los puntos de espejo de la base de datos.

Cree los puntos finales de duplicación

Para comunicarse entre las réplicas principal y secundaria, SQL Server utiliza puntos finales de creación de reflejos.

Un extremo de duplicación utiliza el protocolo TCP/IP para enviar y recibir mensajes de réplicas primarias y secundarias y escucha en un puerto TCP/IP exclusivo.

Ejecute el siguiente script para crear un punto final en los nodos principal y secundario:

/*Run this script on LinuxSQL01*/

CREATE ENDPOINT [AG_LinuxSQL01]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
	    ROLE = ALL,
	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
		ENCRYPTION = REQUIRED ALGORITHM AES
		);
ALTER ENDPOINT [AG_LinuxSQL01] STATE = STARTED;

/*Run this script on LinuxSQL02*/

CREATE ENDPOINT [AG_LinuxSQL02]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
	    ROLE = ALL,
	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
		ENCRYPTION = REQUIRED ALGORITHM AES
		);

ALTER ENDPOINT [AG_LinuxSQL02] STATE = STARTED;

/*Run this script on LinuxSQL03*/

CREATE ENDPOINT [AG_LinuxSQL03]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
	    ROLE = ALL,
	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
		ENCRYPTION = REQUIRED ALGORITHM AES
		);
ALTER ENDPOINT [AG_LinuxSQL03] STATE = STARTED;

Una vez que se hayan creado los puntos de duplicación, creemos un grupo de disponibilidad.

Crear grupo de disponibilidad

Vamos a configurar AlwaysON usando SQL Server Management Studio.

Primero, inícielo y conéctese a la instancia de LinuxSQL01 usando sa cartas credenciales. Una vez conectado a la instancia de SQL Server, haga clic con el botón derecho en Always On High Availability y seleccione el Asistente para nuevo grupo de disponibilidad .

El asistente de grupos de disponibilidad comienza.

1. Introducción

En una Introducción pantalla, vea la lista de tareas que realizará el asistente del grupo de disponibilidad. Haga clic en Siguiente.

2. Especifique la opción de grupo de disponibilidad

En la pantalla Especificar opción de grupo de disponibilidad, proporcione el nombre del grupo de disponibilidad deseado y elija EXTERNO del tipo de clúster menú desplegable.

Además, coloque una marca de verificación para Detección de estado de nivel de base de datos caja. Habilita la sesión de eventos extendidos para la disponibilidad de salud grupal.

3. Seleccionar bases de datos

Puede elegir la base de datos para agregar al grupo de disponibilidad en Seleccionar bases de datos pantalla. Nota:La base de datos debe cumplir con los siguientes requisitos previos:

  1. La base de datos debe estar en el modelo de recuperación COMPLETO.
  2. Se debe crear una copia de seguridad COMPLETA de la base de datos.

He restaurado una copia de seguridad de WideWorldImportors base de datos en la réplica principal. La base de datos está COMPLETA modelo de recuperación y se ha generado una copia de seguridad completa.

Seleccione WideWorldImportors base de datos de la lista y haga clic en Siguiente .

4. Especificar réplicas

En Especificar réplicas pantalla, tenemos varias pestañas para configurar diferentes opciones. Repasémoslos todos.

Pestaña Réplicas

Aquí, especificamos las réplicas principal y secundaria, el modo de disponibilidad y los modos de conmutación por error.

Usamos LinuxSQL01 como una réplica principal. LinuxSQL02 y LinuxSQL03 son una réplica secundaria.

El modo de disponibilidad para LinuxSQL02 será compromiso síncrono y para LinuxSQL03 será compromiso asíncrono .

Para agregar la réplica, haga clic en Agregar réplica . Luego, en Conectarse al servidor cuadro de diálogo, especifique el nombre del servidor y los detalles de inicio de sesión de SQL para conectarse a la instancia:

Pestaña Puntos finales

Aquí, podemos ver la lista de réplicas y sus puntos finales de duplicación con los números y nombres de puerto correspondientes:

Preferencias de copia de seguridad

Aquí, especifica la réplica que desea utilizar para generar la copia de seguridad. Esta opción es útil cuando desea descargar el proceso de copia de seguridad de la base de datos SQL dentro del grupo de disponibilidad.

Puede elegir cualquiera de las siguientes opciones:

  1. Preferir secundaria:la copia de seguridad se generará en la réplica secundaria. Si la réplica secundaria no está disponible, la copia de seguridad se generará en la réplica principal.
  2. Solo secundaria:todas las copias de seguridad se generarán en la réplica secundaria.
  3. Principal:las copias de seguridad se generarán en la réplica principal.
  4. Cualquier réplica:la copia de seguridad se generará a partir de cualquiera de las réplicas.

Usaremos el Preferir secundario opción:

Oyente

El agente de escucha del grupo de disponibilidad es un nombre virtual que usa una aplicación para conectar las bases de datos del grupo de disponibilidad. Especifique el nombre DNS del oyente y su puerto en Nombre DNS del oyente. y Puerto cuadros de texto.

Seleccione IP estática desde el modo de red menú desplegable.

Para agregar la dirección IP para el agente de escucha del grupo de disponibilidad, haga clic en Agregar.>Ingrese la dirección IP y máscara de subred .

Enrutamiento de solo lectura

Aquí puede proporcionar la URL de enrutamiento de solo lectura y Lista de enrutamiento de solo lectura para réplicas primaria y secundaria.

No configuraremos el enrutamiento de solo lectura en nuestra demostración. Por lo tanto, haga clic en Siguiente. Para obtener más información sobre el enrutamiento de solo lectura, puede consultar Enrutamiento de solo lectura para un Always On.

Ahora, volvamos al proceso principal en el que trabajamos.

5. Seleccione Sincronización de datos inicial

En Seleccionar sincronización de datos inicial pantalla, configure sus preferencias para la sincronización de datos inicial. Los detalles de cada opción se proporcionan en la pantalla del asistente y puede elegir cualquiera de ellos:

  1. Recopilación automática.
  2. Base de datos completa y copia de seguridad de registros.
  3. Solo para unirse.
  4. Omitir la sincronización de datos inicial.

No he creado los WideWorldImportors base de datos en la réplica de LinuxSQL02 y LinuxSQL03, seleccionando la Semilla automática opción. Creará la base de datos en ambas réplicas e iniciará la sincronización de datos. Haga clic en Siguiente.

6. Validación y Resumen

Sobre la Validación pantalla, el asistente valida todas las configuraciones.

Para implementar correctamente el grupo de disponibilidad Always On, necesita que todas las validaciones se hayan realizado correctamente. Si hay algún error, debes solucionarlo.

En el Resumen pantalla, puede ver la lista de configuraciones elegidas para implementar el grupo de disponibilidad.

Revise los detalles una vez más y haga clic en Finalizar – inicia el proceso de implementación.

Si desea generar el script del proceso de implementación, haga clic en Script .

Como vemos, se inicia el proceso de implementación de AlwaysOn. Una vez que se complete con éxito, haga clic en Cerrar para salir del asistente.

Por lo tanto, se completa la implementación del grupo de disponibilidad AlwaysOn en SQL Server 2019.

Resumen

Este artículo nos ayuda a comprender el proceso de implementación paso a paso del grupo de disponibilidad AlwaysOn de SQL Server en Linux.

El siguiente artículo explicará cómo podemos configurar el agente de escucha del grupo de disponibilidad y realizar una conmutación por error manual mediante SQL Server Management Studio. ¡Estén atentos!