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.
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 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.
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
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
Cuando se te pida que aceptes la clave GPG de Percona, introduce y y pulsa INTRO para confirmar.
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
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>’.
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
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
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.
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.
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
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
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
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.
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
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
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
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.
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
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
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
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.
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;
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));
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');
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.
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.