MHA alta disponibilidad de mysqld

1. Conocimientos relacionados con MHA
 1.1 Qué es MHA
MHA (MasterHigh Availability) es un excelente conjunto de software para conmutación por error y replicación maestro-esclavo en un entorno MySQL de alta disponibilidad.
La aparición de MHA es para resolver el problema del punto único de falla de MySQL.
Durante el proceso de conmutación por error de MySQL, MHA puede completar automáticamente la operación de conmutación por error en 0-30 segundos.
MHA puede garantizar la mayor coherencia de los datos durante el proceso de conmutación por error para lograr una alta disponibilidad en el verdadero sentido.


 
1.2 Composición de MHA 
1) Nodo MHA (nodo de datos)

MHA Node se ejecuta en cada servidor MySQL.
2) MHA Manager (nodo de gestión)

MHA Manager se puede implementar en una máquina independiente para administrar múltiples clústeres maestro-esclavo; también se puede implementar en un nodo esclavo.
MHA Manager detectará regularmente el nodo maestro en el clúster. Cuando el maestro falla, puede promocionar automáticamente al esclavo con los datos más recientes como el nuevo maestro y luego volver a apuntar a todos los demás esclavos al nuevo maestro. Todo el proceso de conmutación por error es completamente transparente para la aplicación.

El principio de funcionamiento de MHA se resume de la siguiente manera:
MHA Manager detectará periódicamente el nodo maestro en el clúster

Cuando el maestro falle, guarde los eventos de registro binario (binlog events) del maestro fallado;

Identificar el esclavo con la última actualización;

Aplicar registros de relés diferenciales a otros esclavos;

Aplicar eventos de registro binario (binlog events) guardados desde el maestro;

Promover un esclavo a un nuevo maestro y hacer que otros esclavos se conecten al nuevo maestro para la replicación;
 


 

1.3 Características de MHA 
En el proceso de conmutación por error automática, MHA intenta guardar el registro binario del servidor maestro de tiempo de inactividad, para garantizar que los datos no se pierdan en la mayor medida posible.
El uso de la replicación semisincrónica puede reducir en gran medida el riesgo de pérdida de datos.Si solo un esclavo ha recibido el registro binario más reciente, MHA puede aplicar el registro binario más reciente a todos los demás servidores esclavos, lo que garantiza la coherencia de los datos de todos los nodos.
En la actualidad, MHA soporta una arquitectura maestra y múltiples esclavos, con al menos tres servidores, es decir, un maestro y dos esclavos.
 


2. El diseño experimental de la implementación de un maestro y dos esclavos de MHA 
cumple con los requisitos: crear un clúster mysql de replicación de lectura y escritura de alta disponibilidad con un maestro y dos esclavos. Las actualizaciones de datos completas reemplazarán el servidor maestro y ocuparán el VIP, para garantizar un funcionamiento normal.

componentes experimentales 

Operación específica del experimento,   paso  
1: Configurar la replicación maestro-esclavo   (  1  )  Modificar el nombre  de    host
del servidor de nodos mysql  # Nodo Slave2 ##  hostnamectl set-hostname mysql3  su  ##manager##  hostnamectl set-hostname manager  su











 


(2) Agregue la relación de mapeo mysql maestro-esclavo 
y agregue los tres hosts:

 vim /etc/hosts
 192.168.73.105 mysql1
 192.168.73.106 mysql2
 192.168.73.107 mysql3
(3) Modifique el archivo de configuración principal de Mysql /etc/my.cnf 
 Nota:

Nodo maestro, abra el registro binario.

Nodos Slave1, Slave2, abra el registro binario y el registro de retransmisión.

 ##Nodo maestro##

 
 vim /etc/my.cnf
 [mysqld]
 server-id = 1
 log-bin = master-bin #Abrir el registro binario, especificar la ubicación de almacenamiento
 log-slave-updates = true     
#Permitir que el esclavo se escriba a sí mismo al copiar datos desde el maestro En el registro binario de
 systemctl
 , reinicie mysqld #restart mysql
 ##
 
 
Slave1 node##

 
 vim /etc/my.cnf
 [mysqld]
 server-id = 2 #El server-id de los tres servidores no puede ser el mismo
 log-bin = master-bin
 relay-log = relay-log-bin
 relay-log-index = esclavo-relé -bin.index
 ​systemctl
 reiniciar mysqld
 ​##
Nodo esclavo2##

 
 vim /etc/my.cnf
 [mysqld]
 server-id = 3 #El server-id de los tres servidores no puede ser el mismo
 log-bin = master-bin
 relay-log = relay-log-bin
 relay-log-index = slave-relay -bin.index
 ​systemctl
 restart mysqld #Restart mysql
(4) Crear un enlace suave en el servidor de nodos mysql 
Se crean los tres servidores de nodos mysql: 

* a 'mha'@'mysql2' identificado por 'manager';  otorgar todos los privilegios en *.* a 'mha'@'mysql3' identificado por 'manager';



 




 
 

 







 Privilegios  de vaciado

(6) Configurar la sincronización maestro-esclavo 
Ver archivos binarios y puntos de sincronización (es decir, compensaciones) en el nodo maestro y realizar operaciones de sincronización en los nodos Esclavo1 y Esclavo2. 

 ##(1) Ver el archivo binario y el punto de sincronización (es decir, el desplazamiento) en el nodo maestro ##
 mostrar el estado del maestro;
 

 #Razones posibles generales para "Slave_IO_Running: No":
  1. No se puede acceder a la red 
  2. Hay un problema con la configuración de my.cnf (se repite la identificación del servidor)
  3. La contraseña, el nombre del archivo y el desplazamiento pos son incorrectos 
  4. El cortafuegos no está cerrado. 

 ##Realizar una operación síncrona en los nodos Slave1 y Slave2##
 cambiar maestro a master_host='192.168.73.105', master_user='myslave', master_password='123123',
master_log_file='master-bin.000006', master_log_pos= 
 154
 ; esclavo; #Iniciar sincronización, si hay un error, ejecutar reset esclavo;
 ##
 Verificar el estado del nodo en Slave1 y Slave2##
 mostrar el estado del esclavo\G     
 


 ##Las dos bibliotecas esclavas deben configurarse en modo de solo lectura##
 establecer global read_only=1;
 ​##
 Insertar datos en la biblioteca principal maestra, probar la sincronización de la base de datos##
 mysql> use db_test
 
mysql> crear información de tabla (id int ,name char (10));
mysql> insertar en valores de información (1, 'datos de mysql1');
 
 
 #Verificar
 si la sincronización es exitosa desde la base de datos
Paso 2: Configurar MHA 
Nota: La instalación de origen de epel aquí no se puede instalar desde la fuente local La fuente local de centos7 no está disponible, debe modificarse a una fuente en línea para la instalación 

1) Instale el software MHA en todos los servidores 
 ## (1) Instale el entorno dependiente de MHA en todos los servidores, primero instale el origen de epel ##
 yum install epel-release --nogpgcheck -y
 ​#Instale
 el entorno dependiente de MHA
yum install -y perl- DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN
 ​##
(2) Para instalar el paquete MHA , primero debe instalar los componentes del nodo en todos los servidores ##
#Cargar el paquete de instalación en el directorio /opt/, descomprimir e instalar los componentes del nodo##
cd /opt
tar zxvf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node- 0.57
perl Makefile.PL
make && make install
 ​##
(3) Finalmente, instale el componente administrador en el nodo administrador MHA## (el componente administrador depende del componente nodo)
cd /opt/
tar zxvf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57
perl Makefile.PL
hacer && hacer instalar  --------------------- -  
   Las líneas punteadas son comentarios -------------------------------------------- ------  ​#manager  Después de instalar el componente, se generarán varias herramientas en /usr/local/bin, incluidas principalmente las siguientes:  masterha_check_ssh #Verificar el estado de configuración SSH de MHA  masterha_check_repl #Verificar el estado de replicación de MySQL  masterha_manger #Iniciar el script del administrador  masterha_check_status #Detectar el estado actual de ejecución de MHA  masterha_master_monitor #Detectar si el maestro está inactivo  masterha_master_switch #Controlar la conmutación por error (automática o manual)  masterha_conf_host #Agregar o eliminar información del servidor configurado  masterha_stop #Cerrar  administrador














 Después de instalar el componente #node, se generarán varios scripts en /usr/local/bin (estas herramientas generalmente se activan mediante scripts de MHAManager sin operación manual), principalmente de la siguiente manera: save_binary_logs #Guarde y copie el registro binario del maestro apply_diff_relay_logs #Identificar
 la
 diferencia de eventos de registro de retransmisión y aplicar la diferencia de eventos a otros esclavos
 filter_mysqlbinlog #Eliminar eventos de ROLLBACK innecesarios (MHA ya no usa esta herramienta)
 purge_relay_logs #Borrar registros de retransmisión (no bloquea subprocesos de SQL)

(2) Configure la autenticación sin contraseña en todos los servidores 
 ## (1) Configure la autenticación sin contraseña para todos los nodos de la base de datos en el nodo administrador
 ssh-keygen -t rsa #Presione la tecla Intro hasta el final para generar una clave. "-t rsa" especifica el tipo de clave.  ssh-copy-id 192.168.73.105 #Pase la clave pública a todos los nodos de la base de  datos
 para formar una conexión sin contraseña para iniciar  sesión  en mysql1 Autenticación sin contraseña de los nodos de la base de datos mysql2 y mysql3  ssh-keygen -t rsa  ssh-copy-id 192.168.73.106 #Pase la clave pública a dos nodos esclavos para formar una conexión sin contraseña para iniciar sesión  ssh-copy-id 192.168. 73.107  ​##  (3) Configurar la autenticación sin contraseña en mysql2 para los nodos de base de datos mysql1 y mysql3  ssh-keygen -t rsa  ssh-copy-id 192.168.73.105  ssh-copy-id 192.168.73.107  ​##  (4) Configurar en mysql3 para Autenticación sin contraseña para nodos de base de datos mysql1 y mysql2  ssh-keygen -t rsa















 ssh-copia-id 192.168.73.105
 ssh-copia-id 192.168.73.106
 

(3) Configure MHA en el nodo administrador 
 ## (1) Copie los scripts relevantes en el directorio /usr/local/bin en el nodo administrador
 cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local /bin
 #Después de copiar, habrá cuatro archivos ejecutables
 ll /usr/local/bin/scripts/
 ​------------
 La línea punteada es un comentario --------- ----- --------------------------------------------
 master_ip_failover #Script de administración VIP al cambiar automáticamente
 master_ip_online_change #Script de administración de VIP al cambiar
 power_manager en línea #Script para apagar el host después de que ocurra una falla
 send_report #Script para enviar alarma después de la conmutación por error
 ---------------- ------ -------------------------------------------- ------ --------  ​​##
   (2) Copie el script de administración VIP mencionado anteriormente durante el cambio automático al directorio /usr/local/bin, aquí use el script master_ip_failover para administrar VIP y conmutación por error


 cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin  ​​##
   (3) Modifique el contenido de la siguiente manera: (Elimine el contenido original, copie directamente y modifique los parámetros relacionados con vip. Puede ingresar: establecer pegar antes de copiar Resolver vim pegar fuera de servicio)  vim /usr/local/bin/master_ip_failover  #!/usr/bin/env perl  use strict;  use warnings FATAL => 'all';  use  Getopt::Long;  my  (  $ comando, $ssh_user, $orig_master_host, $orig_master_ip,  $orig_master_port, $new_master_host, $new_master_ip, $new_master_port  );  ######################### ##  ## Agregar sección de contenido #######################################  mi $vip = '192.168.73.66'; #Especifique la dirección de vip
















 my $brdc = '192.168.73.255'; #Especifique la dirección de transmisión de vip
 my $ifdev = 'ens33'; #Especifique la tarjeta de red vinculada a vip
 my $key = '1'; #Especifique el número de serie de la red virtual tarjeta vinculada a vip
 my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; #Representa el valor de esta variable ifconfig ens33:1 192.168.72.100 my
 $ssh_stop_vip = "/sbin/ifconfig ens33:$key down" ; #Representa el valor de esta variable For ifconfig ens33:1 192.168.72.100 down
 my $exit_code = 0; #Especifique el código de estado de salida como 0
 #my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $ brdc dev $ifdev etiqueta $ifdev: $clave;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;"; #my $ssh_stop_vip = "/usr/sbin/ip
 addr del $vip/24 dev $ifdev etiqueta $ifdev:$clave";
 ############################################## ##############################
 ObtenerOpciones
 (
 'comando=s' => $comando,
 'ssh_user=s' => $ssh_user,
 'orig_master_host=s' => $orig_master_host,
 'orig_master_ip=s' => $orig_master_ip,
 'orig_master_port=i' => $orig_master_port,
 'new_master_host=s' => $new_master_host,
 'new_master_ip=s' => $nueva_ip_maestra,
 'nueva_puerto_maestra=i' => $nueva_puerto_maestra,
 );
 ​exit
 &main();
 ​sub
 main {  ​print  "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";  ​if  ($command eq "stop" | | $command eq "stopssh" )  {





 mi $exit_code = 1;
 eval {  print "Deshabilitar el VIP en el maestro antiguo: $orig_master_host \n";  &stop_vip();  $codigo_salida = 0;  };  if ($@) {  advertir "Error recibido:

























 print "Comprobando el estado del script... OK \n";
 salida 0;
 }
 más {  &uso();  salida 1;  }  }  sub start_vip() {  `ssh $ssh_user@$new_master_host " $ssh_start_vip "`;  }  ## Una simple llamada al sistema que deshabilita el VIP en el old_master  sub stop_vip() {  `ssh $ssh_user@$orig_master_host " $ssh_stop_vip "`;  }  ​sub  uso {  print  "Uso: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=puerto --new_master_host=host --new_master_ip=ip --new_master_port= puerto\n";  }
















 

(4) El nodo administrador edita el archivo de configuración y administra el servidor de nodos mysql 
 mkdir /etc/masterha
 cp /opt/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha/ #copiar archivo de configuración
 vim
 / etc/masterha /app1.cnf #Elimine el contenido original, copie y modifique directamente la dirección IP del servidor de nodo
 [predeterminado del servidor]
 manager_log=/var/log/masterha/app1/manager.log
 manager_workdir=/var/log/masterha /app1
 master_binlog_dir=/usr/local/mysql/data
 master_ip_failover_script=/usr/local/bin/master_ip_failover
 master_ip_online_change_script=/usr/local/bin/master_ip_online_change
 user=mha
 contraseña=administrador
 ping_interval=1
 remote_workdir=/tmp
 repl_password=123123
 repl_user= mi esclava
 second_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.73.106 
-s 192.168.73.107
 shutdown_script=""
 ssh_user=usuario raíz
 =mha
 [
 servidor1]
 hostname=192.168.73.105
 puerto=3306
 [
 servidor2]
 candidato_maestro=1
 check_repl_delay =0
 nombre de host=192.168.73.106
 puerto=3306
 [
 servidor3]
 nombre de host=192.168.73.107
 puerto=3306
 

[predeterminado del servidor]
 manager_log=/var/log/masterha/app1/manager.log #registro del administrador manager_workdir
 =/var/log/masterha/app1 #directorio de trabajo del administrador
 master_binlog_dir=/usr/local/mysql/data/ #master save binlog ubicación, la ruta aquí debe ser coherente con la ruta del binlog configurado en el maestro, de modo que MHA pueda encontrar
 master_ip_failover_script=/usr/local/bin/master_ip_failover  
#Configurar el script de conmutación para la conmutación por error automática, que es el script anterior
 master_ip_online_change_script= /usr /local/bin/master_ip_online_change 
 #Establecer el script de cambio para el cambio manual
 usuario=mha #Establecer el usuario de mysql, el usuario creado al autorizar al administrador
 contraseña=administrador #Establecer la contraseña del usuario de mysql, que es la contraseña utilizada para cree el usuario de monitoreo en el artículo anterior
 ping_interval=1        
 #Establezca el intervalo de tiempo para monitorear la biblioteca principal y enviar paquetes de ping, el valor predeterminado es de 3 segundos y la conmutación por error se realizará automáticamente cuando no haya respuesta después de tres intentos remote_workdir=/
 tmp #Establecer la ubicación de almacenamiento binlog cuando el mysql remoto cambia
 repl_password=123123 #Establecer la contraseña del usuario replicado (el usuario y la contraseña creados durante la autorización de sincronización maestro-esclavo)
 repl_user=myslave #Establecer el usuario del usuario replicado
 report_script=/usr/local/send_report #Establecer el script del alarma enviada después de que se produzca el  cambio
 .
host después de que ocurra una falla (la función principal de este script es apagar el host para evitar que ocurra Split brain, no se usa aquí, puede usar power_manager que viene con el sistema) ssh_user=root #Establezca el nombre de usuario de inicio de sesión
 de ssh
 [
 servidor1] #master
 hostname=192.168.73.105
 puerto=3306
 ​[
 servidor2] #slave1
 hostname=192.168.73.106
 puerto=3306
 candidato_maestro=1
 #Establecer como maestro candidato Después de configurar este parámetro, la biblioteca esclava será promovida a biblioteca maestra después de que se produzca el cambio maestro-esclavo, incluso si la biblioteca esclava no es la última
 esclava
 check_repl_delay=0
 #De manera predeterminada, si un esclavo va a la zaga del maestro por más de 100 millones de registros de retransmisión, MHA no seleccionará al esclavo como nuevo maestro, porque lleva mucho tiempo restaurar el esclavo; configurando check_repl_delay=0, MHA desencadena el cambio e ignorará el retraso de replicación al seleccionar un nuevo maestro. Este parámetro es muy útil para hosts con candidato_maestro=1, porque el maestro candidato debe ser el nuevo maestro durante el proceso de cambio[servidor3] # slave2 hostname  =
   192.168.73.107  puerto=3306



 

(5) La primera configuración necesita abrir manualmente la IP virtual en el nodo maestro
/sbin/ifconfig ens33:1 192.168.73.66/24

(6) Pruebe la autenticación sin contraseña ssh en el nodo administrador 
masterha_check_ssh -conf=/etc/masterha/app1.cnf

(7) Pruebe la conexión mysql maestro-esclavo en el nodo administrador 
masterha_check_repl -conf=/etc/masterha/app1.cnf

Pruebe la conexión maestro-esclavo de mysql en el nodo administrador, y las palabras MySQL Replication Health is OK aparecen al final, lo que indica que es normal

(8) Inicie MHA nohup en el nodo administrador 
masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &  -------------------------------
   Las siguientes son notas------------ - -------------------------------------------------  remove_dead_master_conf  #Este parámetro significa que cuando ocurra el cambio maestro-esclavo, la ip de la antigua biblioteca maestra se eliminará del archivo de configuración.  --manger_log #Ubicación de almacenamiento de registro.  --ignore_last_failover #De forma predeterminada, si MHA detecta un tiempo de inactividad continuo y el intervalo entre dos tiempos de inactividad es inferior a 8 horas, no se realizará la conmutación por error. El motivo de esta limitación es evitar el efecto ping-pong (cambiar de un lado a otro conduce a cerebro dividido). Este parámetro significa ignorar el archivo generado por el último interruptor de activación de MHA. De forma predeterminada, después de que se produzca el cambio de MHA, se registrará en el archivo de registro app1.failover.complete. Si se encuentra que el archivo existe en el directorio cuando se el cambio se vuelve a hacer la próxima vez, no se permitirá activar el cambio, a menos que el archivo se elimine después del primer cambio, por conveniencia, aquí se establece en --ignore_last_failover.  ​







 -------------------------------------------------- --------------------------------------------------
 Use
 y ejecute el programa en segundo plano: se mostrará el resultado al terminal; use Ctrl+C envía una señal SIGINT, y el programa es inmune; cierra la sesión y envía una señal SIGHUP, y el programa se cierra.
 ●Use nohup para ejecutar el programa: el resultado se enviará a nohup.out de manera predeterminada; use Ctrl+C para enviar una señal SIGINT y el programa se cerrará; cierre la sesión y envíe una señal SIGHUP y el programa se inmune.
 ● Use nohup y & para iniciar el programa nohup ./test &: Simultáneamente inmune a las señales SIGINT y SIGHUP.
 ​
 

(9) Verifique el estado de MHA y el registro de MHA en el nodo administrador, y podrá ver la dirección del maestro 
#Verifique el estado de MHA, y podrá ver que el maestro actual es el nodo Mysql1.
 masterha_check_status --conf=/etc/masterha/app1.cnf
 #Revise
 el registro de MHA, también puede ver que el maestro actual es 192.168.73.105
 cat /var/log/masterha/app1/manager.log | grep "maestro actual "
 

(10) Verifique si la dirección VIP existe en Mysql1
 ifconfig
 ​#Para
 cerrar el servicio del administrador, puede usar el siguiente comando.
 masterha_stop --conf=/etc/masterha/app1.cnf
 #O puede cerrarse directamente eliminando el ID del proceso.

Paso 3: Prueba de fallas 
 ------------------------ Algoritmo para la conmutación por error de la biblioteca principal alternativa ------------- - ----------  Algoritmo para
 conmutación por error  1. Generalmente, la biblioteca esclava se juzga desde (posición/GTID) para juzgar si es buena o mala, y los datos son diferentes. El esclavo más cercano al maestro se convierte en el maestro candidato.  2  Si los datos son consistentes, seleccione una biblioteca principal alternativa según el orden de los archivos de configuración.  3  Establezca el peso (candidate_master=1), y el maestro candidato debe ser designado de acuerdo con el peso.  (  1) De forma predeterminada, si un esclavo se retrasa 100M con respecto a los registros de relé del maestro, fallará incluso si tiene peso.  (  2) Si check_repl_delay=0, incluso si hay muchos registros detrás, se fuerza que se seleccione como maestro de respaldo.










 

 ##(1) Detenga el servicio mysql en el nodo maestro Mysql1
 systemctl stop mysqld
 or
 pkill -9 mysql
 ​##
 (2) Supervise y observe los registros en el nodo administrador
 tail -f /var/log/masterha/app1/manager .log  ​​##  
   (3) Después de un cambio automático normal, el proceso MHA se cerrará. MHA modificará automáticamente el contenido del archivo app1.cnf y eliminará el nodo mysql1 de tiempo de inactividad.  vim /etc/masterha/app1.cnf #Ver el archivo de configuración del nodo administrador  ##  (4) Verificar si mysql2 se hace cargo de VIP  ifconfig    
 









 

 3. Repare el maestro defectuoso 
(1) Repare mysql1 (es decir, repare el nodo maestro original)
systemctl reinicie mysqld

(2) Reparar datos maestro-esclavo 
mysql -u root -p
mysql> show master status;

mysql -u root -p
cambiar maestro a master_host='192.168.73.106',master_user='myslave',master_password='123123',master_log_file='master-bin.000002',master_log_pos=154;

(3) Modifique el archivo de configuración app1.cnf en el nodo administrador 
vi /etc/masterha/app1.cnf
 ......
 second_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.72.192 -s 192.168.72.80
 . . ....
 [servidor1]
 nombre de host=192.168.72.60
 puerto=3306
 [
 servidor2]
 candidato_maestro=1
 check_repl_delay=0
 nombre de host=192.168.72.192
 puerto=3306
 ​[
 servidor3]
 nombre de host=192.168.72.80
 puerto=3306

(4) Inicie MHA en el nodo administrador 
masterha_stop --conf=/etc/masterha/app1.cnf
 
 
nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var /log/masterha/app1/manager.log 2>&1 &

(5) Reinicie mysql1 y mysql2 
systemctl reinicie mysqld

Supongo que te gusta

Origin blog.csdn.net/zl965230/article/details/130803423
Recomendado
Clasificación