Tabla de contenido
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