Clúster de alta disponibilidad de Linux MHA

Tabla de contenido

concepto

Principio del clúster de datos de alta disponibilidad de MHA

Configuración del clúster de alta disponibilidad

Inicio de sesión sin contraseña


concepto


Clúster de alta disponibilidad MHA

MHA (Master High Availability) es actualmente una solución relativamente madura para la alta disponibilidad de MySQL. Fue desarrollada por la empresa japonesa DeNA Youshimaton (que ahora trabaja en Facebook). Es un excelente conjunto de soluciones maestras y de conmutación por error para el entorno de alta disponibilidad de MySQL. Altamente disponible software de impulso. Durante el proceso de conmutación por error de MySQL, MHA puede completar automáticamente la operación de conmutación por error de la base de datos en un plazo de 0 a 30 segundos, y durante el proceso de conmutación por error, MHA puede garantizar la coherencia de los datos en la mayor medida posible para lograr una verdadera alta disponibilidad en ese sentido.

Principio del clúster de datos de alta disponibilidad de MHA


MHA (Master High Availability) es una solución de alta disponibilidad de MySQL de código abierto que puede monitorear automáticamente el estado de la replicación maestro-esclavo de MySQL y promover automáticamente el servidor esclavo al nuevo servidor maestro cuando el servidor maestro falla, logrando así una alta disponibilidad de MySQL. .

MHA funciona de la siguiente manera:

1. MHA instalará un agente en el servidor maestro y en el servidor esclavo para monitorear el estado de MySQL.

2. Cuando el servidor maestro falla, el agente de monitoreo de MHA detectará la falla del servidor maestro y promoverá el servidor esclavo al nuevo servidor maestro.

3. Antes de promover el servidor esclavo al nuevo servidor maestro, MHA sincronizará automáticamente los datos MySQL en el servidor esclavo con los datos del servidor maestro para garantizar la coherencia de los datos.

4. Cuando el nuevo servidor maestro entre en línea, MHA cambiará automáticamente otros servidores esclavos al nuevo servidor maestro para lograr una alta disponibilidad de MySQL.

En resumen, MHA logra una alta disponibilidad de MySQL al monitorear automáticamente el estado de la replicación maestro-esclavo de MySQL y cambiar automáticamente a un nuevo servidor maestro cuando el servidor maestro falla.

Configuración del clúster de alta disponibilidad


En primer lugar, para una mejor identificación.

Modifique el nombre de usuario en la línea de comando:

hostnamectl set-hostname nodo1

bash: actualizar el nombre de host

Gerente: [gerente]                            

Servidor principal: [maestro]                   

Servidor esclavo: [esclavo1]           

Servidor esclavo: [esclavo1]      

Inicio de sesión sin contraseña


Utilice vim para abrir /etc/hosts en cuatro servidores y escriba la IP del administrador, el servidor maestro y el servidor esclavo más el nombre del host.

De esta manera, al iniciar sesión usando ssh, puede iniciar sesión directamente usando el nombre de host.

Por ejemplo: ssh nodo1

192.168.1.126 nodo1
192.168.1.125 nodo2
192.168.1.106 nodo3
192.168.1.105 nodo4

 

 

Las cuatro máquinas virtuales deben generar claves.

 ssh-keygen -t rsa

 ssh-keygen -t rsa

Clave de copia de configuración sin contraseña

[Los cuatro servidores deben especificar el nodo1]

ssh-copy-id -i .ssh/id_rsa.pub raíz@nodo1

ssh-copy-id -i .ssh/id_rsa.pub raíz@nodo1

Envíe el archivo autorizado_keysau en el nodo1 al nodo2/3/4

[Realice un inicio de sesión sin contraseña]

【¡Aviso! ! ! Los nodos 1, 2, 3 y 4 deben autenticarse entre sí para iniciar sesión sin contraseña]

scp .ssh/claves_autorizadas raíz@nodo2:.ssh

Inicie sesión con ssh node2 para probar

scp .ssh/claves_autorizadas raíz@nodo3:.ssh

Inicie sesión con ssh node3 para probar

scp .ssh/claves_autorizadas raíz@nodo4:.ssh

Inicie sesión con ssh node4 para probar

Abrir nodo2 [servidor principal]

Descargue la fuente de liberación de epel en nodo2

 yum -y install epel-release

[Debe sacar la fuente CentOS-Base.repo en yum y luego instalarla]

Extraiga el paquete de código fuente MySQL preparado al sistema

Ingrese el comando para instalar:

yum -y instalar mariadb servidor-mariadb

Vaya al directorio para buscar el paquete e instalarlo:

rpm -ivh mha4mysql-nodo-0.56-0.el6.noarch.rpm

vim abre el archivo de configuración de MySQL

escribir

server-id = 1 [Especifique el identificador único del servidor MySQL, utilizado para distinguir diferentes servidores en la replicación maestro-esclavo]

log-bin = master-log [Habilite registros binarios para registrar todas las operaciones de actualización de la base de datos en la replicación maestro-esclavo]

Relay-log = Relay-log [Especifique el nombre del registro de retransmisión, utilizado para que el servidor esclavo reciba actualizaciones del servidor maestro en la replicación maestro-esclavo]

skip_name_resolve [Deshabilitar la resolución DNS puede mejorar el rendimiento del servidor MySQL]

[En general, estos parámetros de configuración se utilizan para configurar la replicación maestro-esclavo de MySQL. `server-id`, `log-bin` y `relay-log` son parámetros obligatorios, mientras que `skip_name_resolve` es opcional. Se usa para mejorar actuación]

Para escribir en [MySQL]

[Después de escribir la configuración, guarde, salga e ingrese: systemctl restart mariadb para reiniciar mysql]

Inicie sesión en MySQL e ingrese:

otorgar esclavo de replicación en *.* a 'esclavo'@'%' identificado por '123'; 

[Autorizar a los usuarios a utilizar desde la base de datos]

[Significa otorgar permiso a un usuario llamado "esclavo" para replicar como servidor esclavo en todas las bases de datos y todas las tablas, y establecer la contraseña en "123". El "%" significa que el usuario puede conectarse al servidor MySQL desde cualquier host.

 otorgar todo en *.* a 'mha'@'%' identificado por '123';

[Autorizar a los usuarios para que el administrador los utilice para administrar el maestro]

[Significa otorgar al usuario mha todos los permisos para todas las tablas en todas las bases de datos y establecer la contraseña en 123. % significa que puede conectarse al servidor MySQL desde cualquier dirección IP]

ingrese el comando:

 mostrar estado maestro;

[Ver el estado del servidor principal de la base de datos actual]

Ingrese nodo3 [servidor esclavo]

Arrastre el paquete de código fuente preparado al nodo3

Ingrese el comando: instalar mariadb

 yum -y instalar mariadb mariadb-server epel-release

[MariaDB es un sistema de gestión de bases de datos relacionales de código abierto, similar a MySQL]

Ingrese el comando para instalar:

 rpm -ivh mha4mysql-nodo-0.56-0.el6.noarch.rpm

Luego vim ingresa al archivo de configuración principal de MySQL

vim /etc/mi.cnf

Escribir:

server-id = 2 [Indica el identificador único del servidor]                 

Relay-log = Relay-log [representa los nombres de archivo del registro de retransmisión y del registro binario respectivamente]         

log-bin = master-log [representa los nombres de archivo del registro de retransmisión y del registro binario respectivamente]         

read_only = ON [Indica si el servidor esclavo es de solo lectura]               

Relay_log_purge = 0 [Indica si se deben limpiar automáticamente los registros de retransmisión]           

skip_name_resolve [Indica si se debe omitir la resolución DNS]               

log_slave_updates = 1 [Indica si se deben registrar las operaciones de actualización realizadas desde el servidor]

[Guardar, salir y reiniciar MySQL].

Ingrese el comando de reinicio: systemctl restart mariadb

Para escribir en [MySQL]

Regrese al nodo2 [servidor maestro] e ingrese mostrar estado maestro; ver el estado de la base de datos

Abrir nodo3 [servidor esclavo 1]

Inicie sesión en MySQL

Entrada: Especifique el servidor [detener esclavo; debe cerrar el servicio antes de especificarlo]

cambie maestro a master_host='192.168.1.125',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=517;

[- `master_host`: especifique la dirección IP o el nombre de host de la base de datos maestra.

[- `master_user`: especifica el nombre de usuario utilizado para la replicación.

[- `master_password`: especifica la contraseña utilizada para la replicación.

[- `master_log_file`: especifica el nombre del archivo de registro binario de la base de datos maestra.

[- `master_log_pos`: Especifique la ubicación desde la cual comenzar a replicar el registro binario de la base de datos maestra.

 Después de especificar el servidor principal, inicie el servicio.

 iniciar esclavo;

[Se utiliza para iniciar un servidor esclavo (esclavo) para sincronizar datos con el servidor maestro (maestro)]

 mostrar estado de esclavo \G;

[Se utiliza para ver el estado del servidor esclavo de replicación en la instancia de base de datos actual. Entre ellos, "\G" genera los resultados en un formato más legible, y cada atributo ocupa una línea para una fácil visualización. Este comando se puede utilizar para verificar si la replicación maestro-esclavo está funcionando correctamente y para verificar el retraso del servidor esclavo, etc.]

otorgar todo en *.* a 'esclavo'@'%' identificado por '123';

[Autorizar al usuario para que el administrador lo utilice para administrar el esclavo]

[Significa otorgar al usuario "esclavo" todos los permisos para todas las bases de datos y todas las tablas en cualquier host, y establecer la contraseña en "123". % significa que cualquier host puede conectarse a la base de datos】

Ingrese el nodo 4 [servidor esclavo 2]

Arrastre el paquete de código fuente preparado al nodo4

Ingrese el comando para instalar:

 rpm -ivh mha4mysql-nodo-0.56-0.el6.noarch.rpm

Ingrese el comando: instalar mariadb

 yum -y instalar mariadb mariadb-server epel-release

[MariaDB es un sistema de gestión de bases de datos relacionales de código abierto, similar a MySQL]

vim abre el archivo de configuración de MySQL

vim /etc/mi.cnf

Escribir:

server-id = 3 [Establezca el identificador único del servidor MySQL en 3, que se utiliza para distinguir diferentes servidores en la replicación maestro-esclavo]           

Relay-log = Relay-log [Establezca la ubicación de almacenamiento y el prefijo del nombre de archivo del registro de retransmisión]         

log-bin = master-log [Habilite registros binarios para registrar todas las operaciones que modifican la base de datos para la replicación maestro-esclavo y la recuperación de datos]         

read_only = ON [Configura el servidor MySQL en modo de solo lectura y prohíbe operaciones de escritura en la base de datos]               

Relay_log_purge = 0 [Deshabilitar la purga automática de registros de retransmisión y requerir purga manual]           

skip_name_resolve [Desactivar la antiresolución de DNS para acelerar la conexión]               

log_slave_updates = 1 [Configure el servidor esclavo para que también registre las operaciones de modificación recibidas en su propio registro binario para la replicación en cascada]

Luego guarde, salga y reinicie MySQL

systemctl reiniciar mariadb

 Para escribir en [MySQL]

Inicie sesión en MySQL

Entrada: Especifique el servidor principal [Apague el servicio y detenga el esclavo antes de especificar;]

cambiar maestro amaster_host='192.168.1.125',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;

Después de especificar, inicie el servicio.

iniciar esclavo;

[Se utiliza para iniciar un servidor esclavo (esclavo) para sincronizar datos con el servidor maestro (maestro)]

mostrar estado de esclavo \G;

[Se utiliza para ver el estado del servidor esclavo de replicación en la instancia de base de datos actual. Entre ellos, "\G" genera los resultados en un formato más legible, y cada atributo ocupa una línea para una fácil visualización. Este comando se puede utilizar para verificar si la replicación maestro-esclavo está funcionando correctamente y para verificar el retraso del servidor esclavo, etc.]

otorgar todo en *.* a 'esclavo'@'%' identificado por '123';

[Autorizar al usuario para que el administrador lo utilice para administrar el esclavo]

[Significa otorgar al usuario "esclavo" todos los permisos para todas las bases de datos y todas las tablas en cualquier host, y establecer la contraseña en "123". % significa que cualquier host puede conectarse a la base de datos】

Regresar al nodo1 [Administrador]

Introduzca el paquete de código fuente preparado en el administrador

Ingrese los comandos respectivamente: Instalar MySQL

yum -y instalar mariadb mariadb-server epel-release

yum -y instalar mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm

Crear mkdir /etc/mha_master

vim ingrese /etc/mha_master/mha.cnf

Escribir:

[predeterminado del servidor]

usuario=mha

contraseña=123

manager_workdir=/etc/mha_master/app1

manager_log=/etc/mha_master/manager.log

remoto_workdir=/misdatos/mha_master/app1

ssh_user=raíz

repl_user=esclavo

repl_contraseña=123

intervalo_ping=1

[servidor 1]

nombre de host=192.168.174.125 [IP principal]

puerto_ssh=22

candidato_maestro=1

[servidor2]

nombre de host = 192.168.174.106 [primer IP esclavo]

puerto_ssh=22

candidato_maestro=1

[servidor3]

nombre de host = 192.168.174.105 【Segunda IP esclava】

puerto_ssh=22

candidato_maestro=1

Después de escribir, guardar y salir.

ingresar:

masterha_check_ssh --conf=/etc/mha_master/mha.cnf

Se muestra una pantalla para indicar la detección exitosa.

Vuelva a ingresar: verifique si el clúster de replicación de MySQL está bien

 masterha_check_repl --conf=/etc/mha_master/mha.cnf

¡Si ocurre un error en el último paso! ! !

Puedes ingresar el comando:

otorgar todo en *.* a 'esclavo'@'%' identificado por '123';

Configure nuevamente los permisos de usuario para el servidor maestro y el servidor esclavo

Supongo que te gusta

Origin blog.csdn.net/2302_77750172/article/details/131209368
Recomendado
Clasificación