Cómo instalar un servidor MySQL de equilibrio de carga con ProxySQL en Debian 11
ProxySQL es un proxy MySQL de alto rendimiento que ocupa poco espacio y puede instalarse en múltiples entornos, como VM, K8s, bare-metal y contenedores Docker. ProxySQL es una solución de código abierto que proporciona alta disponibilidad para tu Clúster MySQL con soporte de multiplexación de conexiones, proporciona Reglas de consulta para dirigir las escrituras a los primarios y distribuye las lecturas entre las réplicas.
ProxySQL es compatible tanto con AMD64 (x86_64) como con ARM64. Proporciona un proxy de capa de aplicación para tu aplicación y también proporciona consultas avanzadas con detección de fallos.
En esta guía, instalarás y configurarás el equilibrio de carga de MySQL Cluster mediante ProxySQL en un servidor Debian 11. Instalarás ProxySQL v2 con el Cliente percona XtraDB, luego añadirás el Clúster Percona XtraDB al ProxySQL, configurarás el usuario de monitorización de ProxySQL y, a continuación, añadirás la base de datos y el usuario que se utilizarán para tus aplicaciones.
Requisitos previos
Para empezar con esta guía, debes tener los siguientes requisitos:
- Un servidor Linux que ejecute el sistema Debian 11 – Este ejemplo utiliza un servidor Debian con el nombre de host‘proxysql-deb‘.
- Un usuario no root con privilegios de administrador sudo/root.
- Clúster MySQL o Clúster Percona XtraDB totalmente configurado.
Y ya está. Cuando todos los requisitos estén listos, ya puedes iniciar la instalación de ProxySQL.
Configurar repositorios
El primer paso que debes hacer para esta guía es añadir los repositorios ProxySQL y Percona XtraDB a tu servidor. El repositorio Percona XtraDB se utilizará para instalar el paquete«percona-xtradb-cluster-client«, que requiere ProxySQL.
Para empezar, instala algunas dependencias básicas introduciendo el siguiente comando apt. Introduce y cuando te lo pida y pulsa ENTER para continuar.
sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates
A continuación, descarga el archivo del repositorio de Percona XtraDB e instálalo mediante el siguiente comando«dpkg«.
wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb
Ahora actualiza y refresca el índice de paquetes de Debian mediante el siguiente comando apt. Deberías ver que se ha añadido el nuevo repositorio de Percona XdtraDB.
sudo apt update
A continuación, introduce el comando‘percona-release‘ para activar el repositorio Percona XtraDB Cluster 8.0.
sudo percona-release setup pxc80
Con el repositorio Percona XtraDB añadido, ejecuta ahora el siguiente comando para añadir la clave GPG y el repositorio para el ProxySQL.
wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg' echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list
Actualiza y refresca de nuevo tu índice de paquetes Debian para apple el nuevo repositorio.
sudo apt update
Con los repositorios Percona XtraDB y ProxySQL añadidos, puedes instalar los paquetes cliente de ProxySQL y Percona XtraDB.
Instalar el cliente de clúster ProxySQL y Percona XtraDB
En esta sección, instalarás el paquete ProxySQL v2 con el paquete cliente Percona XtraDB. Introduce el siguiente comando apt para instalar los paquetes ProxySQL y cliente Percona XtraDB.
sudo apt install proxysql2 percona-xtradb-cluster-client
Cuando se te solicite, introduce y para confirmar y pulsa INTRO para continuar.
Una vez instalado ProxySQL, se ejecutará e iniciará automáticamente al arrancar el sistema. Introduce el siguiente comando de utilidad systemctl para verificar el estado del servicio ProxySQL.
sudo systemctl is-enabled proxysql sudo systemctl start proxysql
La salida ‘activado‘ confirma que el ProxySQL se iniciará automáticamente al arrancar el sistema. Y la salida ‘activo (en ejecución)‘ confirma que el ProxySQL se está ejecutando.
A continuación, introduce el siguiente comando mysql para acceder al servidor ProxySQL con el usuario y contraseña predeterminados«admin«.
mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '
Si lo consigues, deberías obtener el intérprete de comandos del ProxySQL como se muestra a continuación. Te has conectado al módulo de administración ProxySQL a través del cliente Percona XtraDB.
Ahora introduce la siguiente consulta para obtener la lista de bases de datos del servidor ProxySQL. Deberías ver varias bases de datos disponibles en el servidor ProxySQL.
SHOW DATABASES;
Con el servidor ProxySQL y el cliente Percona XtraDB Cluster instalados, estás listo para añadir MySQL o Percona XtraDB Cluster al servidor ProxySQL y configurar el equilibrio de carga.
Añadir MySQL Cluster/Percona XtraDB Cluster a ProxySQL
El primer paso que debes dar después de instalar el servidor ProxySQL es añadir tu Cluster MySQL o percona XtraDB al servidor ProxySQL. Y esto se puede conseguir a través del shell del ProxySQL. Este ejemplo utiliza Percona XtraDB Cluster con los siguientes detalles:
Hostname IP Address Port --------------------------------- pxc01 192.168.5.15 3306 pxc02 192.168.5.16 3306 pxc03 192.168.5.17 3306
Antes de empezar, asegúrate de que has iniciado sesión en el shell ProxySQL. A continuación, introduce las siguientes consultas para añadir tus servidores MySQL al ProxySQL. Asegúrate de cambiar los detalles de direcciones IP y puertos con los detalles de tu cluster MySQL.
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306); INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306); INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);
La salida«Consulta OK, 1 fila afectada» confirma que el servidor MySQL se ha añadido al servidor ProxySQL.
Introduce la siguiente consulta para verificar la lista de servidores MySQL que están disponibles en ProxySQL. Deberías ver tres servidores MySQL añadidos al servidor ProxySQL.
SELECT * FROM mysql_servers;
Con el Cluster MySQL o Percona XtraDB añadido a ProxySQL, a continuación tendrás que configurar la monitorización del Cluster Percona XtraDB en ProxySQL.
Configurar el usuario de monitorización de ProxySQL
Para asegurarte de que el Cluster MySQL o Percona XtraDB está sano, ProxySQL monitorizará continuamente el backend de todos los servidores MySQL disponibles. Para ello, debes crear un nuevo usuario en tu Percona XtraDB Cluster y, a continuación, definir el usuario de monitorización en el servidor ProxySQL.
Inicia sesión en tu servidor Percona XtraDB Cluster, accede al intérprete de comandos MySQL mediante el comando ‘mysql’ y, a continuación, ejecuta las siguientes consultas MySQL para crear un nuevo usuario ‘monitor’ con la contraseña ‘monitor’.
CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor'; GRANT USAGE ON *.* TO 'monitor'@'%'; FLUSH PRIVILEGES;
SELECT USER,host FROM mysql.user; SHOW GRANTS FOR 'monitor'@'%';
A continuación, pasa al servidor ProxySQL y ejecuta la siguiente consulta para definir el usuario que se utilizará para monitorizar Percona XtraDB Cluster. Esto cambiará la variable por defecto‘mysql-monitor_username‘ por el usuario ‘monitor’ y la variable‘mysql-monitor_password‘ por la contraseña‘monitor‘.
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username'; UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';
Introduce la siguiente consulta para actualizar algunos parámetros adicionales para la monitorización del Cluster Percona XtraDB en el servidor ProxySQL.
UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');
Guarda los cambios que has realizado en‘global_variables‘ dentro del servidor ProxySQL ejecutando las siguientes consultas.
LOAD MYSQL VARIABLES TO RUNTIME; SAVE MYSQL VARIABLES TO DISK;
Deberías recibir una salida como ésta.
Ahora ejecuta la siguiente consulta para verificar la lista de ‘global_variables‘ para‘mysql-monitor_‘ en el servidor ProxySQL.
SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';
Deberías obtener una salida como la siguiente captura de pantalla – La variable ‘mysql-monitor_username’ debe tener el valor del usuario ‘monitor’ y la variable ‘mysql-monitor_password’ para la contraseña es ‘monitor’. Además, puedes ver que el valor de las variables ‘mysql-monitor_connect_interval’,’mysql-monitor_ping_interval’,’mysql-monitor_read_only_interval’se ha cambiado a‘2000‘.
Por último, introduce las siguientes consultas para verificar el estado de monitorización del Cluster Percona XtraDB en el servidor ProxySQL. Esto te mostrará los registros del último estado de registro y el último ping desde el servidor ProxySQL a todos los servidores Percona XtraDB Cluster disponibles.
SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6; SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;
Si se realiza correctamente, deberías recibir una salida como ésta.
Los últimos registros de conexión del servidor ProxySQL a Percona XtraDB Cluster.
Los últimos registros de ping del servidor ProxySQL a Percona XtraDB Cluster.
Con el Cluster MySQL o Percona XtraDB monitorizado por el servidor ProxySQL, ya estás listo para configurar un nuevo usuario que utilizarán tus aplicaciones.
Configurar el usuario de la base de datos para las aplicaciones
Con el servidor ProxySQL instalado y configurado, y el Cluster MySQL o Percona XtraDB añadido como backend de la base de datos, ahora vas a configurar un nuevo usuario que utilizarán tus aplicaciones. Así, en lugar de conectarse directamente al servidor MySQL, tus aplicaciones deberán conectarse al servidor ProxySQL que se ejecuta por defecto en el puerto‘6033‘.
Para configurar un nuevo usuario para tus aplicaciones, debes seguir los siguientes pasos:
- Crea un nuevo usuario en el clúster MySQL o en el Clúster Percona XtraDB y configura los privilegios.
- Añade tu usuario de Percona XtraDB Cluster al servidor ProxySQL – insértalo en la tabla‘mysql_users‘.
Para empezar, vuelve a tu servidor Percona XtraDB Cluster e inicia sesión en el shell de MySQL mediante el usuario root. A continuación, crea un nuevo usuario MySQL y concédele privilegios para acceder a todas las bases de datos introduciendo las siguientes consultas. En este ejemplo, crearás un nuevo usuario«sbuser» con la contraseña«sbpass«. Además, asegúrate de cambiar la dirección IP‘192.168.5.85‘ por la dirección IP del servidor ProxySQL.
CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass'; GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85'; FLUSH PRIVILEGES;
A continuación, vuelve al servidor ProxySQL y ejecuta la siguiente consulta para añadir tu nuevo usuario MySQL al servidor ProxySQL. Tus usuarios MySQL deberían añadirse a la tabla‘mysql_users‘ del servidor ProxySQL. Además, en el momento de escribir esto, el servidor ProxySQL todavía no admite la contraseña encriptada.
INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');
Ahora introduce las siguientes consultas para confirmar y guardar los cambios en tu servidor ProxySQL. Con esto, tu nuevo usuario está listo y puedes utilizar este usuario MySQL para tus aplicaciones.
LOAD MYSQL USERS TO RUNTIME; SAVE MYSQL USERS TO DISK;
Con esto, tu aplicación debería conectarse ahora al servidor ProxySQL con el usuario‘sbuser‘ y la contraseña‘sbpass‘ con el puerto 6033.
Verificar la base de datos y el usuario
En esta sección, verificarás la instalación de ProxySQL conectándote al servidor ProxySQL utilizando el usuario y la contraseña que creaste.
Introduce el siguiente comando ‘mysql’ para acceder al servidor ProxySQL con el nuevo usuario ‘sbuser’ y la contraseña ‘sbpass’. Si lo consigues, deberías ver el intérprete de comandos del servidor ProxySQL.
mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '
Introduce la siguiente consulta para comprobar la lista de bases de datos del Cluster Percona XtraDB. En este ejemplo, hay una base de datos ‘percona‘ en el Cluster Percona XtraDB.
show databases;
Cambia a la base de datos ‘percona‘ mediante la consulta‘USE‘ que aparece a continuación.
use percona
A continuación, introduce las siguientes consultas para comprobar las tablas de lista de la base de datos «percona«. A continuación, recupera los datos disponibles en la base de datos actual en la que estás trabajando.
show tables; select * from example;
Deberías recibir una salida como ésta – Las bases de datos almacenadas en el Cluster Percona XtraDB son accesibles desde el servidor ProxySQL. Esto significa que tu instalación de ProxySQL como equilibrador de carga para el Cluster Percona XtraDB se ha realizado correctamente.
A continuación, introduce las siguientes consultas para insertar nuevos datos en la base de datos«percona» y en la tabla«ejemplo«.
INSERT INTO percona.example VALUES (4, 'pxc04'); INSERT INTO percona.example VALUES (5, 'pxc05');
A continuación, verifica de nuevo los datos recién actualizados mediante la siguiente consulta. si tiene éxito, deberías obtener los nuevos datos disponibles en la tabla ‘ejemplo‘. Esto confirma que tu usuario puede leer y escribir en las bases de datos de Percona XtraDB Cluster.
select * from example;
Por último, para asegurarte de que tus nuevos datos se actualizan en Percona XtraDB Cluster, debes verificarlo directamente desde el servidor percona XtraDB Cluster.
Conéctate a tu servidor Percona XtraDB Cluster, accede al intérprete de comandos MySQL a través del usuario root y ejecuta la siguiente consulta para recuperar los datos de la base de datos‘percona‘ tabla‘ejemplo‘.
select * from percona.example;
Si tiene éxito, deberías obtener los nuevos datos que has añadido a través del servidor ProxySQL.
Teniendo esto en cuenta, tu instalación del servidor ProxySQL como equilibrador de carga para MySQL Cluster o Percona XtraDB Cluster se ha realizado correctamente.
Conclusión
En esta guía, has configurado un equilibrador de carga de MySQL Cluster o Percona XtraDB Cluster mediante ProxySQL en un servidor Debian 11. Has instalado ProxySQLv2, has añadido el Cluster Percona XtraDB a ProxySQL y has configurado la monitorización del Cluster Percona XtraDB en ProxySQL.
Además, también has creado y configurado los usuarios de MySQL o Percona XtraDB Cluster que se pueden utilizar para tus aplicaciones. También has verificado el equilibrio de carga de MySQL Cluster o Percona XtraDB Cluster a través de ProxySQL, que permite una alta disponibilidad y tolerancia a fallos de tu servidor de base de datos y de tus aplicaciones.
Con esto, ahora puedes añadir más nodos de Percona XtraDB Cluster a tu servidor de base de datos con equilibrio de carga. Además, puedes configurar la división de Lectura/Escritura a través de ProxySQL, configurar la fragmentación de ProxySQL y configurar la conexión SSL desde proxySQL al Clúster Percona XtraDB. Para saber más sobre ProxySQL, visita la documentación oficial de ProxySQL.