MySQL ProxySQL · 11 min read · Sep 26, 2025

Cómo instalar un servidor MySQL con balanceo de carga usando ProxySQL en Debian 11

ProxySQL es un proxy MySQL de alto rendimiento con una pequeña huella que se puede instalar 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 multiplexión de conexiones, proporciona reglas de consulta para enrutar escrituras a primarios y distribuye lecturas entre 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 ofrece consultas avanzadas con detección de fallos.

En esta guía, instalarás y configurarás el balanceo de carga del clúster MySQL a través de ProxySQL en un servidor Debian 11. Instalarás ProxySQL v2 con el cliente Percona XtraDB, luego agregarás el clúster Percona XtraDB a ProxySQL, configurarás el usuario de monitoreo de ProxySQL, y luego agregarás la base de datos y el usuario que se utilizarán para tus aplicaciones.

Requisitos previos

Para comenzar 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 completamente configurado.

Eso es todo. Cuando todos los requisitos estén listos, ahora puedes comenzar la instalación de ProxySQL.

Configuración de Repositorios

El primer paso que debes hacer para esta guía es agregar tanto los repositorios de ProxySQL como de Percona XtraDB a tu servidor. El repositorio de Percona XtraDB se utilizará para instalar el paquete ‘ percona-xtradb-cluster-client ‘, que requiere ProxySQL.

Para comenzar, instala algunas dependencias básicas ingresando el siguiente comando apt. Ingresa y cuando se te pida y presiona ENTER para continuar.

sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

instalar dependencias básicas

A continuación, descarga el archivo del repositorio para Percona XtraDB e instálalo a través del comando ‘ dpkg ‘ a continuación.

wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb  
sudo dpkg -i percona-release_latest.generic_all.deb

instalar repositorio percona

Ahora actualiza y refresca tu índice de paquetes de Debian utilizando el siguiente comando apt a continuación. Deberías ver que el nuevo repositorio Percona XdtraDB ha sido agregado.

sudo apt update

Luego, ingresa el comando ‘ percona-release ‘ para habilitar el repositorio del Clúster Percona XtraDB 8.0.

sudo percona-release setup pxc80

habilitar repositorio percona

Con el repositorio Percona XtraDB agregado, ahora ejecuta el siguiente comando para agregar la clave GPG y el repositorio para 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 nuevamente tu índice de paquetes de Debian para aplicar el nuevo repositorio.

sudo apt update

agregar repositorio proxysql

Con ambos repositorios de Percona XtraDB y ProxySQL agregados, puedes instalar los paquetes de ProxySQL y del cliente Percona XtraDB.

Instalando ProxySQL y Cliente del Clúster Percona XtraDB

En esta sección, instalarás el paquete ProxySQL v2 con el paquete del cliente Percona XtraDB. Ingresa el siguiente comando apt para instalar ambos paquetes de ProxySQL y del cliente Percona XtraDB.

sudo apt install proxysql2 percona-xtradb-cluster-client

Cuando se te pida, ingresa y para confirmar y presiona ENTER para continuar.

instalar proxysql

Una vez que ProxySQL esté instalado, se ejecutará automáticamente y se iniciará automáticamente al inicio del sistema. Ingresa el siguiente comando de utilidad systemctl para verificar el estado del servicio ProxySQL.

sudo systemctl is-enabled proxysql  
sudo systemctl start proxysql

Una salida ‘ enabled ‘ confirma que ProxySQL se iniciará automáticamente al arrancar el sistema. Y la salida ‘ active (running) ‘ confirma que ProxySQL está en ejecución.

estado proxysql

A continuación, ingresa el siguiente comando mysql para iniciar sesión en el servidor ProxySQL con el usuario y contraseña predeterminados ‘ admin ‘.

mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '

Una vez que tengas éxito, deberías obtener el shell de ProxySQL como el siguiente. Te has conectado al módulo de administración de ProxySQL a través del cliente Percona XtraDB.

inicio de sesión percona xtradb

Ahora ingresa la siguiente consulta para obtener la lista de bases de datos en el servidor ProxySQL. Deberías ver múltiples bases de datos disponibles en el servidor ProxySQL.

SHOW DATABASES;

lista de bases de datos

Con el servidor ProxySQL y el cliente del Clúster Percona XtraDB instalados, estás listo para agregar MySQL o el Clúster Percona XtraDB al servidor ProxySQL y configurar el balanceo de carga.

Agregando Clúster MySQL/Clúster Percona XtraDB a ProxySQL

El primer paso que debes hacer después de instalar el servidor ProxySQL es agregar tu MySQL o Clúster Percona XtraDB al servidor ProxySQL. Y esto se puede lograr a través del shell de ProxySQL. Este ejemplo utiliza el Clúster Percona XtraDB 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 comenzar, asegúrate de haber iniciado sesión en el shell de ProxySQL. Luego, ingresa las siguientes consultas para agregar tus servidores MySQL al ProxySQL. Asegúrate de cambiar los detalles de las direcciones IP y los puertos con los detalles de tu clúster 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);

Una salida ‘ Query OK, 1 row affected ‘ confirma que el servidor MySQL se agregó al servidor ProxySQL.

agregar servidor mysql a proxysqlk

Ingresa la siguiente consulta para verificar la lista de servidores MySQL que están disponibles en ProxySQL. Deberías ver tres servidores MySQL agregados al servidor ProxySQL.

SELECT * FROM mysql_servers;

Con el Clúster MySQL o Percona XtraDB agregado a ProxySQL, necesitarás configurar el monitoreo del Clúster Percona XtraDB en ProxySQL.

Configurando el Usuario de Monitoreo de ProxySQL

Para asegurarte de que MySQL o el Clúster Percona XtraDB esté saludable, ProxySQL monitoreará continuamente todos los servidores MySQL disponibles en el backend. Para lograr esto, debes crear un nuevo usuario en tu Clúster Percona XtraDB, luego definir el usuario de monitoreo en el servidor ProxySQL.

Inicia sesión en tu servidor Clúster Percona XtraDB, accede al shell de MySQL a través del comando ‘mysql’, luego ejecuta las siguientes consultas de 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, muévete al servidor ProxySQL y ejecuta la siguiente consulta para definir el usuario que se utilizará para monitorear el Clúster Percona XtraDB. Esto cambiará la variable predeterminada ‘ mysql-monitor_username ‘ con el usuario ‘monitor’ y la variable ‘ mysql-monitor_password ‘ para 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';

Ingresa la siguiente consulta para actualizar algunos parámetros adicionales para monitorear el Clúster 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 esta.

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 como el 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 ‘.

verificar monitoreo proxysql

Por último, ingresa las siguientes consultas para verificar el estado de monitoreo del Clúster Percona XtraDB en el servidor ProxySQL. Esto te mostrará registros del último estado de registro y el último ping desde el servidor ProxySQL a todos los servidores disponibles del Clúster Percona XtraDB.

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;

Cuando tengas éxito, deberías recibir una salida como esta.

Los últimos registros de conexión del servidor ProxySQL al Clúster Percona XtraDB.

última conexión

Los últimos registros de ping del servidor ProxySQL al Clúster Percona XtraDB.

ping proxysql

Con el MySQL o Clúster Percona XtraDB monitoreado por el servidor ProxySQL, ahora estás listo para configurar un nuevo usuario que utilizarán tus aplicaciones.

Configurando el Usuario de Base de Datos para Aplicaciones

Con el servidor ProxySQL instalado y configurado, y el MySQL o Clúster Percona XtraDB agregado como el backend de base de datos, ahora configurarás un nuevo usuario que utilizarán tus aplicaciones. Así que, en lugar de conectarse directamente al servidor MySQL, tus aplicaciones deben 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:

  • Crear un nuevo usuario en el clúster MySQL o Clúster Percona XtraDB y configurar privilegios.
  • Agregar tu usuario del Clúster Percona XtraDB al servidor ProxySQL - insertar en la tabla ‘ mysql_users ‘.

Para comenzar, vuelve a tu servidor Clúster Percona XtraDB e inicia sesión en el shell de MySQL a través del usuario root. Luego, crea un nuevo usuario MySQL y otorga al usuario privilegios para acceder a todas las bases de datos ingresando 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 ‘ con 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 agregar tu nuevo usuario MySQL al servidor ProxySQL. Tus usuarios MySQL deben ser agregados a la tabla ‘ mysql_users ‘ en el servidor ProxySQL. Además, en el momento de escribir esto, el servidor ProxySQL aún no admite contraseñas encriptadas.

INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');

Ahora ingresa las siguientes consultas para confirmar y guardar los cambios en tu servidor ProxySQL. Con esto, tu nuevo usuario está listo y puedes usar este usuario MySQL para tus aplicaciones.

LOAD MYSQL USERS TO RUNTIME;  
SAVE MYSQL USERS TO DISK;

crear usuario proxysql

Con esto, tu aplicación ahora debería conectarse al servidor ProxySQL con el usuario ‘ sbuser ‘ y la contraseña ‘ sbpass ‘ con el puerto 6033.

Verificar Base de Datos y 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.

Ingresa el siguiente comando ‘mysql’ para iniciar sesión en el servidor ProxySQL con el nuevo usuario ‘sbuser’ y la contraseña ‘sbpass’. Cuando tengas éxito, deberías ver el shell del servidor ProxySQL.

mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '

conectar a proxysql con nuevo usuario

Ingresa la siguiente consulta para verificar la lista de bases de datos en el Clúster Percona XtraDB. En este ejemplo, hay una base de datos ‘ percona ‘ en el Clúster Percona XtraDB.

show databases;

Cambia a la base de datos ‘ percona ‘ a través de la consulta ‘ USE ‘ a continuación.

use percona

mostrar lista de bases de datos

A continuación, ingresa las siguientes consultas para verificar la lista de tablas en la base de datos ‘ percona ‘. Luego, 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 esta - Las bases de datos que están almacenadas en el Clúster Percona XtraDB son accesibles desde el servidor ProxySQL. Esto significa que tu instalación de ProxySQL como balanceador de carga para el Clúster Percona XtraDB fue exitosa.

mostrar tablas y datos

A continuación, ingresa las siguientes consultas para insertar nuevos datos en la base de datos ‘ percona ‘ y la tabla ‘ example ‘.

INSERT INTO percona.example VALUES (4, 'pxc04');  
INSERT INTO percona.example VALUES (5, 'pxc05');

Luego, verifica nuevamente los datos recién actualizados utilizando la siguiente consulta. Si tienes éxito, deberías obtener los nuevos datos disponibles en la tabla ‘ example ‘. Esto confirma que tu usuario puede leer y escribir en las bases de datos del Clúster Percona XtraDB.

select * from example;

insertar nuevos datos

Por último, para asegurarte de que tus nuevos datos estén actualizados en el Clúster Percona XtraDB, debes verificar directamente desde el servidor del Clúster Percona XtraDB.

Inicia sesión en tu servidor Clúster Percona XtraDB, accede al shell de MySQL a través del usuario root, luego ejecuta la siguiente consulta para recuperar los datos de la base de datos ‘ percona ‘ tabla ‘ example ‘.

select * from percona.example;

Cuando tengas éxito, deberías obtener los nuevos datos que has agregado a través del servidor ProxySQL.

verificar datos actualizados

Con esto en mente, tu instalación del servidor ProxySQL como balanceador de carga para el Clúster MySQL o el Clúster Percona XtraDB es exitosa.

Conclusión

En esta guía, configuraste un balanceo de carga del Clúster MySQL o del Clúster Percona XtraDB a través de ProxySQL en un servidor Debian 11. Has instalado ProxySQLv2, agregado el Clúster Percona XtraDB a ProxySQL y configurado el monitoreo del Clúster Percona XtraDB en ProxySQL.

Además de eso, también has creado y configurado usuarios de MySQL o del Clúster Percona XtraDB que pueden ser utilizados para tus aplicaciones. También has verificado el balanceo de carga del Clúster MySQL o del Clúster Percona XtraDB a través de ProxySQL que permite alta disponibilidad y tolerancia a fallos de tu servidor de base de datos y tus aplicaciones.

Con esto, ahora puedes agregar más nodos del Clúster Percona XtraDB a tu servidor de base de datos con balanceo de carga. Además, puedes configurar la división de lectura/escritura a través de ProxySQL, configurar el sharding de ProxySQL y configurar la conexión SSL de ProxySQL al Clúster Percona XtraDB. Para aprender más sobre ProxySQL, visita la documentación oficial de ProxySQL.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.