Cómo instalar Percona XtraDB Cluster en Rocky Linux 9

Percona XtraDB Cluster es una solución de clustering de bases de datos totalmente de código abierto para MySQL. Te permite crear despliegues de servidores MySQL de alta disponibilidad con un rendimiento robusto y elevado. La última versión de Percona XtraDB Cluster es la 8.0, que es totalmente compatible con MySQL Server Comunity Edition 8.0.

Percona XtraDB Cluster proporciona funciones como replicación síncrona, replicación multifuente, aprovisionamiento automático de nodos, configuración automática de cifrado SSL y rendimiento optimizado.

Percona XtraDB Cluster garantiza la alta disponibilidad de tu servidor de base de datos, proporciona escalabilidad lineal y evita el tiempo de inactividad y la pérdida de datos.

Esta guía te mostrará cómo configurar un clúster MySQL mediante Percona XtraDB Cluster (PXC) en servidores Rocky Linux 9. Instalarás Percona XtraDB Cluster en varios sistemas Rocky Linux, y configurarás Percona XtraDB Cluster para habilitar la replicación de bases de datos entre servidores, luego también lo verificarás insertando datos en un servidor y comprobando los datos de otro servidor.

Requisitos previos

Para completar esta guía, debes tener dos o más servidores ejecutando Rocky Linux 9. También debes tener un usuario no root con privilegios de administrador sudo/root en todos los servidores. Y también el SELinux se ejecutará en modo permisivo.

Para este ejemplo, se utilizarán tres servidores Rocky Linux 9. A continuación se detallan los servidores:

Hostname       IP Address
--------------------------
pxc-rock01       192.168.5.80
pxc-rock02       192.168.5.81
pxc-rock03       192.168.5.82

Si todos los requisitos están listos, puedes iniciar la instalación del Cluster Percona XtraDB.

Configuración de /etc/hosts y Firewalld

En este primer paso, configurarás el archivo /etc/hosts y firewalld en todos los servidores Linux de Rocky. Modificarás el archivo /etc/hosts y añadirás los detalles de las direcciones IP y el nombre de host de cada servidor, después añadirás algunos puertos que utilizará Percona XtraDB Cluster.

A continuación se detallan los puertos de Percona XtraDB Cluster que debes abrir en tu cortafuegos.

Ports   Used for
---------------------------
3306    MySQL client connection and SST (State Snapshot Transfer)
4444    SST via Percona XtraBackup
4567    write-set replication traffic (over TCP) and multicast replication (over TCP and UDP)
4568    IST (Incremental State Transfer)

Para empezar, abre el archivo ‘/etc/hosts ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/hosts

Añade los detalles del nombre de host y la dirección IP que se utilizarán para el clúster. Asegúrate de cambiar los detalles con tu entorno de servidor.

192.168.5.80  pxc-rock01
192.168.5.81  pxc-rock02
192.168.5.82  pxc-rock03

Guarda y cierra el archivo cuando hayas terminado.

A continuación, introduce el siguiente comando‘firewall-cmd‘ para añadir tu subred de red interna como fuente de confianza. Con esto, sólo las redes de confianza podrán acceder a todos los servidores.

sudo firewall-cmd --permanent --add-source=192.168.5.0/24

Ahora abre algunos puertos para Percona XtraDB Cluster y recarga el firewalld para aplicar los cambios. Una salida ‘success‘ confirma que la nueva regla se ha añadido a firewalld.

sudo firewall-cmd --add-port={3306/tcp,4444/tcp,4567/tcp,4567/udp,4568/tcp} --permanent
sudo firewall-cmd --reload

Por último, introduce el siguiente comando ‘firewall-cmd’ para verificar la lista de reglas habilitadas en firewalld.

sudo firewall-cmd --list-all

La siguiente salida se imprimirá en tu shell de terminal. Asegúrate de que aparecen todos los puertos que utilizará el Cluster Percona XtraDB.

configurar nombre de host y firewalld

Con el archivo /etc/hosts y firewalld configurados, a continuación instalarás los paquetes de Percona XtraDB Cluster.

Instalación de Percona XtraDB Cluster

En esta sección, instalarás Percona XtraDB Cluster en todos tus servidores Rocky Linux. Configurarás el repositorio de Percona XtraDB y, a continuación, instalarás el paquete Percona XtraDB Cluster. También al final, cambiarás la contraseña raíz por defecto de MySQL en todos tus servidores.

En primer lugar, debes añadir y habilitar el repositorio EPEL. Introduce el siguiente comando ‘dnf install’ para añadir el repositorio EPEL.

sudo dnf install epel-release

Ahora introduce el siguiente comando para instalar la aplicación Percona release. Introduce y cuando se te solicite y pulsa ENTER para continuar. Este paquete proporciona una herramienta de línea de comandos‘percona-release‘ que puede utilizarse para gestionar los repositorios de Percona.

sudo dnf install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y

añadir repo percona

A continuación, ejecuta el siguiente comando ‘percona-release‘ para habilitar el repositorio Percona XtraDB Cluster v8.0. Durante el proceso, se te pedirá que desactives el repositorio MySQL por defecto, introduce y para confirmar y pulsa INTRO para continuar.

sudo percona-release setup pxc-80

Un mensaje de salida«¡Todo hecho!» confirma que la operación se ha realizado correctamente.

activar el repositorio percona xtradb

Comprueba la lista del repositorio habilitado introduciendo el comando ‘dnf repolist’ que aparece a continuación. Deberías ver el repositorio ‘pxc-80-release’ habilitado y listado en la salida con algunos repositorios adicionales como ‘prel-release’ y ‘tools-release’.

sudo dnf repolist

listar repos

Ahora introduce el siguiente comando ‘dnf install ‘ para instalar el paquete Percona XtraDB Cluster. Introduce y cuando se te pida confirmación y pulsa INTRO para continuar.

sudo dnf install percona-xtradb-cluster

instala percona xtradb cluster

Cuando se te pida que aceptes la clave GPG de Percona, introduce y y pulsa INTRO para confirmar.

aceptar clave gpg

Una vez instalado Percona XtraDB Cluster, introduce el siguiente comando systemctl para iniciar y habilitar el servicio MySQL.

sudo systemctl start mysql
sudo systemctl enable mysql

Ahora verifica el estado del servicio MySQL utilizando el siguiente comando. La salida ‘activo (en ejecución)‘ confirma que MySQL se está ejecutando. Y la salida ‘..; enabled..’ confirma que MySQL se iniciará automáticamente al arrancar el sistema.

sudo systemctl status mysql

verificar el servicio mysql

Con el Cluster Percona XtraDB en ejecución, ahora cambiarás la contraseña raíz por defecto de todos tus servidores MySQL.

Introduce el siguiente comando para comprobar la contraseña generada por defecto para tu usuario raíz de MySQL. Copia la contraseña raíz por defecto de MySQL.

sudo grep 'temporary password' /var/log/mysqld.log

A continuación, accede al shell de MySQL mediante el comando«mysql» que aparece a continuación. Cuando se te pida la contraseña, pega la contraseña por defecto de MySQL que has copiado.

sudo mysql -u root -p

Una vez iniciada la sesión, deberías ver el intérprete de comandos MySQL con una consulta como ésta ‘mysql>’.

acceder al shell mysql

Introduce la siguiente consulta MySQL para cambiar la contraseña por defecto para el usuario root de MySQL, el quit y salir.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewP4ssr00tMySQL';
quit

cambiar contraseña raíz mysql por defecto

Por último, antes de configurar el Cluster Percona XtraDB, debes detener el servicio MySQL. Introduce el siguiente comando de utilidad ‘systemctl’ para detener el servicio MySQL en todos los servidores.

sudo systemctl stop mysql

Con el Cluster Percona XtraDB instalado, la configuración raíz de MySQL y el servicio MySQL detenido, ya estarás listo para configurar y poner en marcha el cluster.

Copia los certificados SSL/TLS

Desde Percona XtraDB Cluster 8.0, la conexión por defecto entre los servidores del clúster debe ser cifrada. Para configurar el cifrado entre los servidores, debes tener los mismos certificados SSL/TLS en todos los servidores.

En esta sección, copiarás los certificados SSl/TLS generados por defecto del servidor ‘ pxc-rock01‘ a los servidores‘pxc-rock02‘ y‘pxc-rock03‘.

En el servidor «pxc-rock01«, introduce el siguiente comando para verificar los certificados disponibles. Con esto, deberás copiar los archivos de certificados‘server-cert.pem‘,‘server-key.pem‘ y‘ca.pem‘ en los servidores ‘ pxc-rock02 ‘ y ‘ pxc-rock03 ‘.

ls /var/lib/mysql/*.pem

listar certificados

Mueve tu directorio de trabajo a‘/var/lib/mysql‘.

cd /var/lib/mysql

Ahora introduce el siguiente comando scp para copiar los archivos de los certificados SSL/TLS en los servidores pxc-rock02 y pxc-rock03.

scp server-key.pem server-cert.pem ca.pem root@pxc-rock02:/var/lib/mysql
scp server-key.pem server-cert.pem ca.pem root@pxc-rock03:/var/lib/mysql

A continuación se muestra la salida durante el proceso de copia de los certificados SSL/TLS del servidor pxc-rock01 al servidor pxc-rock02.

copia certificados pxc-rock02

Y a continuación se muestra la salida durante el proceso de copia de certificados SSL/TLS del servidor pxc-rock01 al servidor pxc-rock03.

copia certificados pxc-rock03

Inicializar el Cluster Percona XtraDB en pxc-rock01

En primer lugar, inicializarás el Cluster Percona XtraDB del servidor pxc-rock01. Para ello, deberás modificar el archivo de configuración del servidor MySQL ‘/etc/my.cnf‘ y, a continuación, iniciar el servicio‘mysql@bootstrap‘.

Abre el archivo de configuración de MySQL ‘/etc/my .cn f’ utilizando el siguiente comando del editor nano.

sudo nano /etc/my.cnf

Añade la lista de direcciones IP de tu servidor Percona XtraDB Cluster al parámetro‘wsrep_cluster_address‘ y añade el parámetro‘default_storage_engine=InnoDB‘.

# Cluster connection URL contains the IPs of pxc-rock01, pxc-rock02, and pxc-rock03
wsrep_cluster_address=gcomm://192.168.5.80,192.168.5.81,192.168.5.82

# Using the MyISAM storage engine is not recommended.
default_storage_engine=InnoDB

motor wsrep motor de almacenamiento por defecto

Cambia‘wsrep_node_address‘ por la dirección IP del servidor actual,‘wsrep_node_name‘ por el nombre de host del sistema, y‘wsrep_cluster_name‘ por el nombre que tendrá tu cluster.

# Node 1 address
wsrep_node_address=192.168.5.80
# Node Name
wsrep_node_name=pxc-rock01

# Cluster name
wsrep_cluster_name=pxc-cluster

nombre del nodo dirección y nombre del clúster

Por último, al final de la línea, añade la siguiente configuración para habilitar una conexión segura SSL/TLS entre los servidores Percona XtraDB Cluster y la conexión sst.

# enable ssl/tls connection
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"

[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem

activar ssl tls

Guarda y cierra el archivo cuando hayas terminado.

A continuación, introduce la siguiente utilidad de comandos systemctl para iniciar el servicio«mysql@bootstrap» e inicializar el primer servidor Percona XtraDB Cluster.

systemctl start [email protected]

Para verificar y asegurarte de que la inicialización de Percona XtraDB Cluster se ha realizado correctamente, debes acceder al shell de MySQL y comprobar el estado de ‘wsrep%’.

Introduce el siguiente comando ‘mysql’ para acceder al servidor MySQL como usuario‘root’. Introduce tu nueva contraseña de root de MySQL cuando se te solicite.

sudo mysql -u root -p

Tras acceder, introduce la siguiente consulta para comprobar el estado detallado de«wsrep%«.

SHOW STATUS LIKE 'wsrep%';

Deberías recibir una salida como ésta – En la sección ‘wsrep_cluster_size‘ verás el valor‘1‘, que significa que el Cluster Percona XtraDB está inicializado con 1 servidor. También obtendrás las direcciones IP de los servidores en la sección ‘wsrep_incoming_address‘. Por último, el nodo está en estado Sincronizado, lo que significa que está totalmente conectado y listo para la replicación de escritura.

verificar cluster percona xtradb

Con esto, el primer servidor del Cluster Percona XtraDB‘pxc-rock01‘ está inicializado. En el siguiente paso, añadirás los servidores‘pxc-rock02‘ y‘pxc-rock03‘ al clúster.

Añadir el servidor pxc-rock02 al clúster Percona XtraDB

Una vez inicializado el primer Cluster Percona XtraDb, ahora añadirás el servidor pxc-rock02 al cluster. La forma de añadir un servidor a Percona XtraDB Cluster es similar al proceso de inicialización, necesitas modificar el archivo de configuración del servidor MySQL por defecto‘/etc/my.cnf’ y definir la lista de servidores para el cluster, después inicia el servicio MySQL normalmente.

Introduce el siguiente comando del editor nano para abrir el archivo de configuración de MySQL ‘/etc/my.cnf‘.

sudo nano /etc/my.cnf

Añade la lista de direcciones IP de tu servidor Percona XtraDB Cluster al parámetro‘wsrep_cluster_address‘ y añade el parámetro‘default_storage_engine=InnoDB‘.

# Cluster connection URL contains the IPs of pxc-rock01, pxc-rock02, and pxc-rock03
wsrep_cluster_address=gcomm://192.168.5.80,192.168.5.81,192.168.5.82

# Using the MyISAM storage engine is not recommended.
default_storage_engine=InnoDB

dirección wsrep y motor db por defecto

Cambia‘wsrep_node_address‘ por la dirección IP del servidor actual,‘wsrep_node_name‘ por el nombre de host del sistema, y‘wsrep_cluster_name‘ por el nombre que tendrá tu cluster.

# Node #2 address
wsrep_node_address=192.168.5.81
# Node Name
wsrep_node_name=pxc-rock02

# Cluster name
wsrep_cluster_name=pxc-cluster

nombre del nodo dirección del nodo y nombre del clúster

Por último, al final de la línea, añade la siguiente configuración para habilitar una conexión segura SSL/TLS entre los servidores Percona XtraDB Cluster y la conexión sst.

# enable ssl/tls connection
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"

[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem

activar ssl tls

Guarda y cierra el archivo cuando hayas terminado.

A continuación, introduce el siguiente comando systemctl para iniciar el servicio MySQL. Esto también hará que el servidor«pxc-rock02» se una al Cluster Percona XtraDB inicializado.

sudo systemctl start mysql

Por último, para asegurarte de que el servidor « pxc-rock02 » se añade al Clúster Percona XtraDB, debes iniciar sesión en el intérprete de comandos MySQL como usuario root mediante el siguiente comando. Cuando se te solicite, introduce tu contraseña de root de MySQL.

sudo mysql -u root -p

Ahora introduce la siguiente consulta para comprobar el estado del detalle‘wsrep%‘.

SHOW STATUS LIKE 'wsrep%';

Deberías recibir una salida como ésta – En la sección ‘wsrep_cluster_size‘ verás el valor‘2‘, lo que significa que hay dos servidores disponibles en el Cluster Percona XtraDB. También obtendrás las direcciones IP de los servidores en la sección ‘wsrep_incoming_address‘, que son las direcciones IP de los servidores pxc-rock01 y pxc-rock02. Por último, el nodo está en estado Sincronizado, lo que significa que está totalmente conectado y listo para la replicación de conjuntos de escritura.

grupo verofy pxc

Añadir el servidor pxc-rock03 al clúster Percona XtraDB

En esta sección, ahora añadirás el tercer servidor pxc-rock03 server al Cluster Percona XtraDB.

Abre el archivo de configuración ‘/etc/mi.cnf‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/my.cnf

Añade la lista de direcciones IP de tu servidor Percona XtraDB Cluster al parámetro‘wsrep_cluster_address‘ y añade el parámetro‘default_storage_engine=InnoDB‘.

# Cluster connection URL contains the IPs of pxc-rock01, pxc-rock02, and pxc-rock03
wsrep_cluster_address=gcomm://192.168.5.80,192.168.5.81,192.168.5.82

# Using the MyISAM storage engine is not recommended.
default_storage_engine=InnoDB

dirección wsrep y motor de almacenamiento por defecto

Cambia‘wsrep_node_address ‘ por la dirección IP del servidor actual,‘wsrep_node_name‘ por el nombre de host del sistema, y‘wsrep_cluster_name‘ por el nombre que tendrá tu cluster.

# Node #3 address
wsrep_node_address=192.168.5.82
# Node Name
wsrep_node_name=pxc-rock02

# Cluster name
wsrep_cluster_name=pxc-cluster

nombre del nodo y nombre del clúster y dirección ip

Por último, al final de la línea, añade la siguiente configuración para habilitar una conexión segura SSL/TLS entre los servidores Percona XtraDB Cluster y la conexión sst.

# enable ssl/tls connection
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"

[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem

activar ssl/tls pxc-rock3

Guarda y cierra el archivo cuando hayas terminado.

A continuación, introduce el siguiente comando systemctl para iniciar el servicio MySQL y unir el servidor actual pxc-rock03 al Cluster Percona XtraDB.

sudo systemctl start mysql

Por último, introduce el siguiente comando mysql para acceder al shell de MySQL y verificar el estado de‘wsrep%‘. Cuando se te solicite, introduce tu contraseña de root de MySQL.

sudo mysql -u root -p

Ahora introduce la siguiente consulta para comprobar el estado detallado de ‘wsrep%‘.

SHOW STATUS LIKE 'wsrep%';

Deberías recibir una salida como ésta – En la sección ‘wsrep_cluster_size‘ verás el valor‘3‘, que significa que hay tres servidores disponibles en el Cluster Percona XtraDB. También obtendrás las direcciones IP de los servidores en la sección ‘wsrep_incoming_address’, que son las direcciones IP de los servidores pxc-rock01, pxc-rock02 y pxc-rock03. Por último, el nodo está en estado Sincronizado, lo que significa que está totalmente conectado y listo para la replicación de conjuntos de escritura.

verificar cluster pxc-roc03

Llegados a este punto, ya has configurado Percona XtraDB Cluster con tres servidores Rocky Linux 9 diferentes. Y con esto, la replicación de bases de datos debería estar funcionando entre el servidor en Percona XtraDB Cluster. En el siguiente paso, comprobarás la replicación de tu base de datos entre varios servidores.

Comprobación de la replicación de la base de datos

En esta sección, verificarás la replicación de la base de datos en Percona XtraDB CLuster. Esto garantizará que tu instalación se ha realizado correctamente y ha finalizado.

En primer lugar, accede al shell de MySQL desde el servidor pxc-rock02 y crea una nueva base de datos llamada‘testdb‘.

sudo mysql -u root -p
CREATE DATABASE testdb;

crear base de datos pxc-rock02

Ahora pasa al servidor pxc-rock03, conéctate al intérprete de comandos MySQL mediante un usuario root y cambia la base de datos de trabajo por defecto a ‘testdb‘.

sudo mysql -u root -p
USE testdb;

Introduce la siguiente consulta para crear una nueva tabla llamada ‘tabla1‘.

CREATE TABLE table1 (node_id INT PRIMARY KEY, node_name VARCHAR(30));

crear tabla pxc-rock03

A continuación, desplázate al servidor pxc-rock01, conéctate al intérprete de comandos MySQL e inserta nuevos datos en la base de datos«testdb» mediante la consulta«INSERT» que aparece a continuación.

sudo mysql -u root -p
INSERT INTO testdb.table1 VALUES (1, 'pxc-rock01');
INSERT INTO testdb.table1 VALUES (2, 'pxc-rock02');
INSERT INTO testdb.table1 VALUES (3, 'pxc-rock03');

insertar datos

Una vez añadidos los datos, vuelve al servidor pxc-rock02 e introduce la consulta SELECT que aparece a continuación para recuperar todos los datos disponibles en la base de datos ‘testdb‘ y en la tabla‘tabla1‘.

SELECT * FROM testdb.table1;

Si la replicación se realiza correctamente, deberías tener tus datos insertados disponibles en el servidor pxc-rock02. Tus datos se almacenarán en todos los servidores del Cluster Percona XtraDB.

comprobar datos

Esto confirma que la instalación del Cluster Percona XtraDB en los servidores Rocky Linux 9 se ha realizado correctamente.

Conclusión

En esta guía has instalado y desplegado Percona XtraDB Cluster en tres servidores Rocky Linux 9. Has aprendido a instalar Percona XtraDB Cluster, a asegurar el despliegue mediante firewalld, a inicializar el clúster y también a añadir nodos al clúster.

Además, también has asegurado la instalación de Percona XtraDB Cluster cifrando el tráfico entre todos los servidores mediante certificados SSL/TLS y la opción ‘pxc-encrypt-cluster-traffic’, que está activada por defecto en Percona XtraDB Cluster 8.0.

Con esto, puedes añadir más servidores a tu actual Percona XtraDB Cluster siguiendo los pasos que has aprendido para añadir los servidores pxc-rock02 y pxc-rock03. O también puedes configurar el equilibrio de carga y la alta disponibilidad con aplicaciones de terceros como ProxySQL y HAPROXY. Para obtener más información, visita la documentación oficial de Percona XtraDB Cluster.

También te podría gustar...