¿Qué es Percona XtraDB Cluster?
Percona XtraDB Cluster es una versión avanzada de MySQL que permite que múltiples servidores de bases de datos trabajen juntos como un solo "clúster". Imagina que tienes varias computadoras (servidores) que actúan como una única base de datos. El propósito principal de este clúster es ofrecer alta disponibilidad y replicación de datos en tiempo real.
¿Por qué usar un clúster de bases de datos?
En desarrollo, a veces una sola base de datos puede no ser suficiente por varias razones:
- Escalabilidad: Si tienes muchos usuarios y una sola base de datos, el servidor puede saturarse. Un clúster permite distribuir la carga entre múltiples servidores.
- Disponibilidad: Si la única base de datos falla, tu aplicación se detiene. Con un clúster, los datos se replican entre varios servidores, por lo que si uno falla, los demás continúan funcionando.
- Seguridad de datos: Al tener los datos replicados en varios servidores, reduces el riesgo de pérdida de datos.
¿Cómo funciona Percona XtraDB Cluster?
Para entender cómo funciona, imagina un equipo de personas trabajando en un documento compartido:
- Replicación en tiempo real: Cuando uno de los servidores (nodos) recibe una solicitud para agregar, modificar o eliminar datos, esta información se copia automáticamente a los demás servidores del clúster. Es como si varias personas estuvieran editando el mismo documento y cada cambio se sincronizara inmediatamente para que todos vean lo mismo.
- Todos los nodos son iguales: En un clúster de Percona, todos los servidores (nodos) pueden realizar operaciones de lectura y escritura. No hay un "servidor principal" y un "servidor secundario" como en otros sistemas. Esto significa que puedes distribuir las solicitudes de tu aplicación entre los diferentes nodos para mejorar la velocidad y eficiencia.
- Consenso y sincronización: Percona XtraDB Cluster usa un mecanismo llamado Galera para asegurarse de que todos los nodos estén sincronizados. Si un nodo recibe una solicitud para insertar datos, ese cambio debe ser aprobado por los demás nodos antes de aplicarse. Esto garantiza que los datos sean coherentes en todos los servidores.
- Fallos y recuperación: Si un nodo falla, el clúster sigue funcionando con los demás nodos. Cuando el nodo caído se reinicia, automáticamente se sincroniza con el resto del clúster para recuperar los datos que se perdió mientras estuvo desconectado.
¿Cómo se configura Percona XtraDB Cluster en términos simples?
- Nodos: Un clúster de Percona está formado por varios nodos. Cada nodo es básicamente una instancia de MySQL que está configurada para sincronizar datos con los demás nodos.
- Replicación: Al escribir o actualizar datos en uno de los nodos, esos cambios se replican a los otros nodos casi inmediatamente.
- Balanceo de carga: En tu aplicación, puedes configurar las operaciones de lectura y escritura para que se distribuyan entre los nodos. Por ejemplo, puedes configurar que todas las escrituras se hagan en un nodo específico y que las lecturas se distribuyan entre los demás nodos.
1) Levantar vagrant
1.1 Crear archivo Vagrantfile
Es necesario tener virtualbox instalado y vagrant configurado. Partiendo de eso creamos un archivo Vagrantfile con el siguiente contenido:
Vagrant.configure("2") do |config|
# Configuración de la máquina 1
config.vm.define "pxc-node-1" do |server|
server.vm.box = "ubuntu/focal64"
server.vm.hostname = "pxc-node-1"
server.vm.network "private_network", ip: "192.168.56.11"
server.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end
# Configuración de la máquina 2
config.vm.define "pxc-node-2" do |server|
server.vm.box = "ubuntu/focal64"
server.vm.hostname = "pxc-node-2"
server.vm.network "private_network", ip: "192.168.56.12"
server.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end
# Configuración de la máquina 3
config.vm.define "pxc-node-3" do |server|
server.vm.box = "ubuntu/focal64"
server.vm.hostname = "pxc-node-3"
server.vm.network "private_network", ip: "192.168.56.13"
server.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end
# Configuración de la máquina 4
config.vm.define "pxc-node-4" do |server|
server.vm.box = "ubuntu/focal64"
server.vm.hostname = "pxc-node-4"
server.vm.network "private_network", ip: "192.168.56.14"
server.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
end
# Configuración de la máquina 4 (solo Ubuntu)
config.vm.define "pxc-proxysql" do |server|
server.vm.box = "ubuntu/focal64"
server.vm.hostname = "pxc-proxysql"
server.vm.network "private_network", ip: "192.168.56.15"
server.vm.provider "virtualbox" do |vb|
vb.memory = "512"
vb.cpus = 1
end
end
end
Ahora levantamos los servidores con vagrant
Esto nos creara 4 maquinas virtuales, en las cuales instalaremos el cluster pxc y cada una de las maquinas se comportara como un nodo del cluster.
Una vez hecho esto podemos configurar la conexion por ssh, para eso copiamos la configuracion de ssh de vagrant a nuestro archivo .ssh/config para ver la configuracion de cada host ejecutar y copiar la salida:
vagrant ssh-config pxc-node-1
vagrant ssh-config pxc-node-2
vagrant ssh-config pxc-node-3
Nos dara una salida como la siguiente:
Host pxc-node-1
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/user/Documentos/Tests/pxc-vagrant/.vagrant/machines/pxc-node-1/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
La salida la copiamos al archivo .ssh/config
2) Instalar Percona XtraDB Cluster
La finalidad de este paso es instalar percona XtraDB Cluster desde los repositorios
Ejemplo de como acceder a los nodos:
En los 3 nodos instalar percona xtradb cluster:
apt update \
&& wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb \
&& dpkg -i percona-release_latest.generic_all.deb \
&& percona-release setup pxc57 \
&& apt install -y libdbi-perl libdbd-mysql-perl libmecab2 socat libcurl4-openssl-dev libev4 \
&& apt install -y percona-xtrabackup-24 qpress \
&& apt install -y percona-xtradb-cluster-full-57=5.7.40-31.63-1.focal percona-xtradb-cluster-server-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-client-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-test-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-5.7-dbg=5.7.40-31.63-1.focal percona-xtradb-cluster-server-debug-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-garbd-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-garbd-debug-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-common-5.7=5.7.40-31.63-1.focal \
&& systemctl start mysql
3) Configurar nodos
La finalidad de este apartado es configurar los nodos para que se comuniquen entre ellos y puedan compartir informacion en forma de cluster
Todas las configuraciones siguientes se corren excluyendo el nodo 4, ya que se integrara al cluster mas adelante.
Nos conectamos al nodo y entramos a la consola de mysql, en caso de que nos pida contraseña utilizaremos "root", por ejemplo
ssh pxc-node-1
sudo mysql
En el nodo 1 creamos el usuario SST
CREATE USER 'sstuser'@'%' IDENTIFIED BY 'temporal1';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'%';
FLUSH PRIVILEGES;
En cada nodo cambiamos la configuracion para agregarlo al cluster
Editar el siguiente archivo:
nano /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf
Cambiamos unicamente la siguiente informacion:
wsrep_cluster_address=gcomm://192.168.56.11,192.168.56.12,192.168.56.13
wsrep_node_address=<ip_nodo>
# Nombre del nodo de preferencia la terminacion de la ip
wsrep_node_name=pxc-cluster-node-1
pxc_strict_mode=PERMISSIVE
# La misma contraseña del usuario SST
wsrep_sst_auth="sstuser:temporal1"
Nuestro archivo deberia verse de la siguiente manera pero con las configuraciones correspondientes al nodo actual,
[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib/galera3/libgalera_smm.so
# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://192.168.56.11,192.168.56.12,192.168.56.13
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# Slave thread to use
wsrep_slave_threads=2
wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node IP address
wsrep_node_address=192.168.56.11
# Cluster name
wsrep_cluster_name=pxc-cluster
#If wsrep_node_name is not specified, then system hostname will be used
wsrep_node_name=pxc-cluster-node-1
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=PERMISSIVE
# SST method
wsrep_sst_method=xtrabackup-v2
#Authentication for SST method
wsrep_sst_auth="sstuser:temporal1"
3.1 Iniciar el primer nodo
En todos los nodos detenemos mysql:
Una vez que hemos finalizado al configuración de nuestros 3 nodos, accedemos al nodo 1 y lo inicializamos usando el siguiente comando
/etc/init.d/mysql bootstrap-pxc
Este comando iniciara nuestro nodo pero ademas indicara que es nuestro nodo principal
Una vez hecho esto accedemos a mysql
Podemos verificar el estado de nuestro cluster usando el siguiente comando
show status like 'wsrep%';
La salida del comando deberia ser algo similar a esto
+----------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid | b598af3e-ace3-11e2-0800-3e90eb9cd5d3 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 1 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_ready | ON |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)
3.2 Iniciar el segundo y tercer nodo
Accedemos a los nodos 2 y 3 respectivamente y ejecutamos el siguiente comando
Eso inicializara nuestro nodo y deberia sincrinizarse con nuestro nodo principal, nodo 1
Una vez se haya inicializado ingresamos a mysql y comprobamos el estado de nuestro cluster
show status like 'wsrep%';
La salida de nuestro comando ahora deberia mostrarnos que el tamaño del cluster ha cambiado, podemos observarlo en la variable wsrep_cluster_size
+----------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------+--------------------------------------+
| wsrep_local_state_uuid | b598af3e-ace3-11e2-0800-3e90eb9cd5d3 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 2 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_ready | ON |
+----------------------------+--------------------------------------+
40 rows in set (0.01 sec)
Hasta este punto, ya tendras un Cluster de Base de Datos con Percona XtraDB Cluster.
La información se replica entre todos los nodos.
Puedes comprobarlo creando una base de datos.
3.3 Crear base de datos
Para poder realizar las pruebas podemos crear una base de datos con datos de prueba, para el ejercicio trabajaremos con la siguiente base de datos:
CompanyDB
Ingresamos a mysql y creamos una base de datos
Una vez hayamos accedido a mysql podemos crear la base de datos usando el siguiente comando
CREATE DATABASE companydb;
Salimos de mysql
Transferir el archivo de backup a nuestro nodo 1, posicionado en la carpeta donde descargamos nuestro backup ejecutamos lo siguiente:
scp backup.sql pxc-node-1:/home/vagrant/test
Nos conectamos al nodo y nos posicionamos en la carpeta, ejemplo:
ssh pxc-node-1
cd /home/vagrant/test
Una vez la hayamos importado nos posicionamos en la ruta donde tengamos nuestro backup y ejectuamos el siguiente comando
mysql -u root -p companydb < backup.sql
Si te da error importar la base de datos, porque el collation no corresponde a tu version de MySQL, puede ejecutar lo siguiente:
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' backup.sql -> Actualizar la bd
3.4 Comprobación
Esto nos importara la información de la base de datos que creamos previamente, ademas, al tener configurados nuestros nodos deberia replicarse la información de nuestra base de datos, para ello podemos comprobarlo accediendo a mysql en alguno de nuestros nodos
Verificamos que tengamos la base de datos que creamos en el nodo 1
La salida del comando deberia mostrarnos la base de datos que creamos en el nodo 1
+--------------------+
| Database |
+--------------------+
| information_schema |
| companydb | -- Base de datos que creamos en el nodo 1
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
Una vez que hayamos comprobado que tenemos nuestra base de datos en los tres nodos podemos realizar las pruebas, las pruebas que realizaremos seran las mismas que se hicieron en Implementar Percona Cluster - Parte 2
Una vez hecho esto en ambos nodos nuestro cluster deberia estar configurado correctamente por lo que ya podriamos realizar nuestras pruebas
Luego de nuestras configuraciones debemos tener un cluster similar al siguiente:
4) Pruebas
4.1) Replicacion
La finalidad de esta prueba es verificar que la información se replica en cada uno de nuestros nodos sin importar en donde hacemos las inserciones de registros.
4.1.1 Acceder al servidor y conectarse a mysql en los nodos
# Ejemplo de conexion por ssh
ssh pxc-node-1
# Conectarse a mysql
sudo mysql
4.1.2 Conectarse a la base de datos
4.1.3 Verificamos en todos los nodos el ultimo ID:
select * from Companies order by CompanyID DESC LIMIT 10 \G
4.1.4 Hacer inserciones en el nodo 1 (se puede realizar desde cualquier nodo):
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
Creamos 3 registros en el nodo 1, al crearlo, la información debería reflejarse en los otros nodos:
Volvemos a verificar los últimos IDs
4.1.5 En todos los nodos, verificamos que la información se este replicando correctamente:
select * from Companies order by CompanyID DESC LIMIT 10 \G
Podemos observar que la información se ha replicado correctamente:
4.2) Servidor caido
La finalidad de este apartado es detener un servidor y comprobar que las replicaciones continúan sin problema alguno.
4.2.1 Detenemos mysql en cualquiera de nuestros nodos
Nos conectamos a un nodo, por ejemplo el nodo 3
# Ejemplo de conexion por ssh
ssh pxc-node-3
En cualquier nodo ejecutamos, en este caso de ejemplo el 3:
4.2.2 Insertamos registros
Hacer inserciones en cualquiera de los nodos sobrantes (Se pueden realizar desde cualquier nodo, para este ejemplo el nodo 1):
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
mysql> INSERT INTO Companies (CompanyID, Name, Address, Phone, Email) VALUES (NULL, 'Other Company', 'Unit 5699 Box 8173 DPO AP 62802', '+1-635-243-2015x623', '[email protected]');
Para esta prueba, teniendo un servidor detenido realizamos una inserción de 5 registros, la cual se replico hacia nuestro servidor que esta en linea:
4.3) Reintegro de servidor caido
La finalidad de esta prueba es volver a levantar el servidor que desactivamos previamente y ver si la información se pierde o se replica
En esta prueba podremos observar que sucede en caso de que uno de nuestros nodos se detenga, como en el caso anterior que detuvimos el nodo, pero que pasa si queremos reintegrarlo, la informacion que insertamos mientras estaba caida se replica? podemos comprobarlo levantando el nodo que detuvimos en el paso 4.2.1 si volvemos a levantarlo la informacion que se creo mientras estaba ausente se replicará.
4.3.1 Levantamos el nodo faltante
En el nodo caido ejecutamos:
# Ejemplo de conexion por ssh
ssh pxc-node-3
service mysql start
Levantamos nuevamente nuestro nodo y al hacerlo se nos replica la información que se agrego previamente:
select * from Companies order by CompanyID DESC LIMIT 10 \G
Extrabackup tiene una forma de conocer el ultimo hash de los registros insertados, con esto se guiá de que tan sincronizado esta con las otras bases de datos.
5) Levantar un nodo con xtrabackup y unirlo al cluster
La finalidad de este apartado es levantar un nuevo nodo y unirlo al cluster, para comprobar como se hace la replicacion de los datos en un servidor que esta vacío.
5.1 Instalar PXC
Con el nodo 4 que dejamos vacio, podemos realizar la configuracion e integracion del nodo, realizamos lo siguiente.
Desde una instancia nueva de ubuntu 20.04:
apt update \
&& wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb \
&& dpkg -i percona-release_latest.generic_all.deb \
&& percona-release setup pxc57 \
&& apt install -y libdbi-perl libdbd-mysql-perl libmecab2 socat libcurl4-openssl-dev libev4 \
&& apt install -y percona-xtrabackup-24 qpress \
&& apt install -y percona-xtradb-cluster-full-57=5.7.40-31.63-1.focal percona-xtradb-cluster-server-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-client-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-test-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-5.7-dbg=5.7.40-31.63-1.focal percona-xtradb-cluster-server-debug-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-garbd-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-garbd-debug-5.7=5.7.40-31.63-1.focal percona-xtradb-cluster-common-5.7=5.7.40-31.63-1.focal \
&& systemctl start mysql
5.2 Editar el archivo
nano /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf
Agregar la configuración del nodo
GNU nano 4.8 /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf
[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib/galera3/libgalera_smm.so
# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
# Agregar las ip's incluidas la del nuevo nodo
wsrep_cluster_address=gcomm://192.168.56.11,192.168.56.12,192.168.56.13,192.168.56.14
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# Slave thread to use
# El numero de nucleos "nproc"
wsrep_slave_threads=2
wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node IP address
# IP del nodo actual
wsrep_node_address=192.168.56.14
# Cluster name
wsrep_cluster_name=pxc-cluster
#If wsrep_node_name is not specified, then system hostname will be used
# Nombre para identificar al nodo
wsrep_node_name=pxc-cluster-node-4
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=PERMISSIVE
# SST method
wsrep_sst_method=xtrabackup-v2
#Authentication for SST method
#wsrep_sst_auth="sstuser:s3cretPass"
wsrep_sst_auth="sstuser:temporal1"
Detener el servicio de mysql
Iniciar de nuevo el servicio de mysql
Comprobamos que el servidor mysql se inicio correctamente:
Con esto el nuevo nodo debe estar añadido y devemos ver que la informacion se ha replicado.
Video Tutorial
Puedes ver el paso a paso en el video de nuestro canal.
Utilidades para el Desarrollo
Debido a que esto se realiza en un entorno de Desarrollo/Pruebas para entender el concepto y funcionamiento de Percona XtradbCluster, brindaremos los siguientes comandos para facilitar la solución de errores:
Logs de Errores de Mysql Percona Cluster:
tail -f /var/log/mysqld.log
Logs de Errores de Xtrabackup (al momento de levantar un nuevo nodo)
tail -f /var/lib/mysql//innobackup.backup.log
Error al inicializar Cluster
Una cosa a tener en cuenta es que si el vagrant se detiene bruscamente (como si se apagaran los servidores) el cluster mostrara un error al volver a levantarse, ya que desconoce que servidor fue el ultimo en detenerse.
Teniendo en cuenta esto, podemos levantar el Cluster nuevamente entrando al nodo 1 (nodo principal) y modificando el siguiente archivo:
nano /var/lib/mysql/grastate.dat
Modifica la variable safe_to_bootstrap
, de la siguiente forma:
Con esto ya podremos levantar el cluster nuevamente:
/etc/init.d/mysql bootstrap-pxc
Problemas de Sincronizacion debido a Firewall
Puedes comprobar que los puertos 4444, 4567 y 4568 esten abiertos entre las maquinas virtuales de la siguiente forma:
En el servidor que se unira al cluster (JOINER):
En el servidor que sera el donante (DONOR):
echo "hello" | socat - TCP:ip.adr.of.donor:4444
Con esto puedes comprobar si los puertos se encuentran abiertos o tienes inconvenientes con Firewall. El servidor nuevo estará a la escucha de informacion en el puerto designado (en este caso 4444) y el servidor Donante, enviara un "hello" que se imprimira en el donante.
Levantar cluster con un Backup usando Xtrabackup
Debido a que Percona Cluster necesita una tabla en donde almacenar datos de la replicacion y el cluster, se necesita realizar lo siguiente en el nodo que iniciará el cluster. Con el MySQL funcionando ejecuta en la terminal de ubuntu:
Esto deberia mostrar un output parecido a esto:
bd.table1 OK
bd.table2 OK
bd.table OK
...
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
Puedes comprobar que el cambio funcionío ejecutando lo siguiente:
SHOW GLOBAL VARIABLES LIKE 'wsrep_sync_wait';
Saber si el cluster esta en funcionamiento
Puedes ejecutar la siguiente query:
show global status where variable_name IN ('wsrep_local_state','wsrep_local_state_comment','wsrep_local_commits','wsrep_received','wsrep_cluster_size','wsrep_cluster_status','wsrep_connected','wsrep_ready');
Esto brindará un output como el siguiente:
+---------------------------+---------+
| Variable_name | Value |
+---------------------------+---------+
| wsrep_received | 7 |
| wsrep_local_commits | 0 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 3 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_ready | ON |
+---------------------------+---------+
8 rows in set (0.00 sec)
Explicacion de cada parametro:
- wsrep_received: Esta variable indica cuántos eventos de replicación (transacciones) ha recibido el nodo desde los otros nodos del clúster. En este caso, el nodo ha recibido 7 eventos.
- wsrep_local_commits: Muestra cuántas transacciones locales ha confirmado el nodo en su propia base de datos. En este caso, el nodo no ha hecho ninguna confirmación de transacciones propias, por eso está en 0.
- wsrep_local_state: Indica el estado del nodo dentro del clúster. El valor 4 corresponde al estado Synced, lo que significa que el nodo está completamente sincronizado y listo para procesar transacciones.
- wsrep_local_state_comment: Es un comentario en texto del estado del nodo. Como el valor es Synced, confirma que el nodo está sincronizado con el resto del clúster. Mas Info
- wsrep_cluster_size: Indica el número de nodos activos en el clúster. En este caso, hay 3 nodos activos.
- wsrep_cluster_status: Muestra el estado del clúster. Primary significa que el clúster está operativo y que los nodos pueden comunicarse y replicar datos correctamente. Este es el estado deseado
- wsrep_connected: Indica si el nodo está conectado al clúster. ON significa que el nodo está conectado correctamente a los otros nodos.