Tutoriales y Manuales
Entradas Mensuales
-
▼
2026
(Total:
8061
)
-
▼
octubre
(Total:
388
)
-
Microsoft Teams integrará herramientas externas pa...
-
ProxySQL: el HAProxy (servidores web) pero para se...
-
AT&T pagará 177 millones por dos filtraciones masi...
-
Recaudan más de 1,2 millones de dólares por 98 vul...
-
Chats filtrados: Silent Ransomware extorsionó más ...
-
Lector de PDF malicioso en Google Play distribuye ...
-
IA que reconstruye imágenes leyendo la mente
-
Alemania detiene a presunto miembro clave del rans...
-
Amazon lanza Alexa Tablet
-
VirusTotal analiza IPv4 públicas para exponer serv...
-
Microsoft: PKI, HSM y equipos de seguridad deben p...
-
Fallo de AnyDesk en Linux permite ejecución de cód...
-
El mercado del PC se hunde: los envíos caen un 20,...
-
Ha muerto Margaret Hamilton, responsable del equip...
-
Let's Encrypt reducirá la validez de los certifica...
-
Caen un 20% las ventas de PC
-
Alternativas privadas a GrapheneOS para Android
-
Nueva herramienta de Anthropic para buscar vulnera...
-
AMD presenta IBS Memory Profiler para sus CPU Zen ...
-
IA escribe el 90% del código en China
-
FBI incauta herramientas de hacking vinculadas a C...
-
Citrix urge parchear vulnerabilidad crítica de RCE...
-
Chrome ya soporta JPEG XL vía Rust
-
AMD visita a Samsung para pedir más memoria HBM: S...
-
AWS lanza un entorno de pruebas de código abierto ...
-
IA reemplazará solo al 5% de trabajadores en una d...
-
Fallo en React Server Components permite congelar ...
-
Explotan fallo crítico de Citrix NetScaler para de...
-
Musk usará IA rival en Grok
-
CrowdStrike halla posible currículum de hacker ban...
-
Móviles Android económicos llegan al mercado con m...
-
Samsung Galaxy S27 Ultra, Pro, Plus y Base: precio...
-
Rastro de dinero confirma chats filtrados de banda...
-
Publican PoC de fallo en Telegram Desktop que perm...
-
Fallo grave de Nvidia podría provocar caídas en el...
-
La IA pone a prueba la ventilación del PC: inverti...
-
Intentos de ejecución remota de código aprovechan ...
-
Google: crea juegos con IA sin programar
-
Gitea corrige 27 fallos de seguridad, incluyendo b...
-
Caída de Google en España
-
Culpable de robar criptomonedas del exchange Urani...
-
Cisco alerta sobre fallos críticos que permiten el...
-
Cocreador de Empire Market condenado a 40 años de ...
-
Teams detecta audio y video sintéticos contra deep...
-
Usan reseñas negativas de hoteles para propagar ma...
-
Paramount llevará Cyberpunk 2077 al cine con una a...
-
FBI desmantela herramientas de hacking chinas util...
-
FBI desmantela centro de estafas en Ghana y incaut...
-
Herramienta de pentesting ARTEX AI empleada en rob...
-
Alerta: 16 extensiones maliciosas de Firefox supla...
-
Venderían claves API de VirusTotal en la dark web
-
IA de GitHub detecta contraseñas en el código ante...
-
wolfSSH 1.6.0 corrige 5 fallos de seguridad, inclu...
-
Usan Web3 y blockchain para ocultar ataques a cred...
-
Fallos críticos en Cisco Nexus permiten ejecución ...
-
La radiación de las antenas de telefonía comparada...
-
La NASA publica el vídeo de la reentrada de la cáp...
-
Por tacaños con la ciberseguridad, un ransomware l...
-
Ciberatacantes secuestran dominios de nivel superi...
-
Programador clona Adobe con IA y Rust: Artcraft
-
ZeroKeyUSB, un gestor de contraseñas de bolsillo q...
-
CEO de empresa de recuperación de ransomware es im...
-
Espías chinos en OpenAI y Anthropic
-
SynthID libera su detector de IA
-
Tu WiFi podría estar en este mapa OSINT
-
ChatGPT ahora crea gráficos e imágenes
-
RetinaRelay, una aplicación para poder utilizar un...
-
GPT-6 Astra hace trampas en StarCraft al no poder ...
-
Fallo crítico en inversores Sungrow permite acceso...
-
Publicado PoC de fallo de sesión en Zammad que per...
-
Publicado PoC de fallo crítico en LMCache que perm...
-
Portátiles RTX Spark: de 3.000 a 8.000 euros
-
Raspberry Pi OS ya disponible para PC
-
IA de Microsoft offline requiere PC carísimo
-
WhatsApp Android añade nueva pestaña de contactos
-
Splunk corrige fallo crítico que permite ejecución...
-
Publican PoC de fallo crítico en VMware VMXNET3 qu...
-
Elastic corrige 14 fallos de seguridad, uno permit...
-
EE. UU. ofrece 10 millones por hacker chino que in...
-
Claude Haiku 5.5: el modelo más barato con mejor p...
-
Malware PoeLLM ataca servidores de IA expuestos pa...
-
Utah permitirá recetas médicas mediante IA
-
FSR 4 llegará a APUs de AMD este año
-
CyberXero usa Claude Code, PentAGI y Cobalt Strike...
-
Las RTX 50 han subido un 66% su precio en lo que v...
-
Home Assistant 2026.10 ya está aquí: nuevos mapas ...
-
Google abre SynthID para detectar contenido IA
-
Microsoft y NVIDIA potencian la IA de Windows
-
EE. UU. ofrece hasta 10 millones de dólares por in...
-
Secuestran registros .gh, .sl y .as para obtener c...
-
Fallo en OpenAI permitió acceso gratuito a modelos...
-
Un homenaje tipográfico a las teclas del Commodore 64
-
SonicWall corrige 4 fallos de SMA1000, incluido un...
-
Silent Hill PT llega a PC
-
Infectan más de 100 webs con falsos controles de C...
-
Instagram: modo incógnito de pago
-
Earth Sirrush usa esteganografía PNG y plugins de ...
-
Instrucciones ocultas en páginas web diseñadas est...
-
IA de Anthropic halla fallo en Rejetto HFS que per...
-
Minoría de usuarios de IA domina el gasto
-
Agentes de IA de Tencent habrían extraído datos de...
-
Roban código de Rockstar, 78,6 millones de registr...
-
SonicWall alerta sobre un fallo de SSRF crítico en...
-
Amazon analizaría tu cuerpo según tus compras
-
Raspberry Pi Desktop llega a PC y Mac
-
Guía de placas base 2026
-
Usan anuncios falsos de IA para robar contraseñas ...
-
Person of Interest (Vigilados), una gran serie sob...
-
Meta lanza CRAM para Linux
-
Ubuntu 27.04 usará ntpd-rs por defecto
-
Mes de la Ciberseguridad 2026: No se lo pongas fácil
-
Multa de 7,8 millones de dólares a IQVIA por error...
-
Escaneo activo de vulnerabilidad crítica de RCE en...
-
PS5 Pro usada más cara que nueva en GameStop
-
Grave fallo en Atlassian permite a atacantes no au...
-
Vulnerabilidad crítica sin parchear en LMCache per...
-
Google suspende recompensas por errores en product...
-
LibreOffice rechaza la IA
-
OpenAI marcará textos de ChatGPT en la UE
-
Publican exploit para fallo crítico de Atlassian q...
-
Global Solar Atlas, un mapa para ver de un vistazo...
-
Sony abriría el cajón de sus sagas olvidadas: otro...
-
Vulnerabilidad en el plugin Ninja Forms permite ha...
-
Anthropic renueva su programa de seguridad para ex...
-
Backdoors en Linux suplantan herramientas de segur...
-
Microsoft contrata a joven que hackeó su plataforma
-
32 0-days explotados en Samsung S26, Pixel 10 y Op...
-
Vulnerabilidades críticas en WordPress permiten at...
-
- ► septiembre (Total: 931 )
-
▼
octubre
(Total:
388
)
-
►
2025
(Total:
2103
)
- ► septiembre (Total: 148 )
-
►
2024
(Total:
1110
)
- ► septiembre (Total: 50 )
-
►
2023
(Total:
710
)
- ► septiembre (Total: 65 )
-
►
2022
(Total:
967
)
- ► septiembre (Total: 72 )
-
►
2021
(Total:
730
)
- ► septiembre (Total: 56 )
-
►
2020
(Total:
212
)
- ► septiembre (Total: 21 )
-
►
2019
(Total:
102
)
- ► septiembre (Total: 14 )
-
►
2017
(Total:
231
)
- ► septiembre (Total: 16 )
-
►
2016
(Total:
266
)
- ► septiembre (Total: 38 )
-
►
2015
(Total:
445
)
- ► septiembre (Total: 47 )
-
►
2014
(Total:
185
)
- ► septiembre (Total: 18 )
-
►
2013
(Total:
100
)
- ► septiembre (Total: 3 )
-
►
2011
(Total:
7
)
- ► septiembre (Total: 1 )
Blogroll
Etiquetas
Entradas populares
-
Un YouTuber ha perdido su segunda RTX 5090 debido a que la tarjeta se quemó apenas seis meses después de la primera, a pesar de haber mejo...
-
Una IA ha demostrado que invertir el flujo de ventilación del PC puede reducir hasta 13 °C la temperatura del aire que recibe el disipador d...
-
WordPress lanzó la versión 7.1.3 el 6 de octubre de 2026 para corregir vulnerabilidades de cross-site scripting (XSS) , inyección SQL y div...
ProxySQL: el HAProxy (servidores web) pero para servidores SQL (MySQL, MariaDB y PostgreSQL)
ProxySQL es un proxy de MySQL de alto rendimiento que se utiliza para gestionar y optimizar la conexión de aplicaciones a bases de datos MySQL, MariaDB o Percona XtraDB. Actúa como una capa intermedia entre las aplicaciones y los servidores MySQL, permitiendo una gestión eficiente del tráfico, mejorando el balanceo de carga, la conmutación por error (failover), y el rendimiento general de las consultas.
Principales funciones y características de ProxySQL
1. Balanceo de Carga (Load Balancing):
ProxySQL distribuye automáticamente el tráfico entre varios servidores de base de datos, mejorando la disponibilidad y el rendimiento. Puedes configurarlo para balancear tanto consultas de lectura como de escritura entre servidores maestros y esclavos.
2. Conmutación por Error Automática (Failover):
En caso de que un servidor MySQL falle, ProxySQL detecta automáticamente el fallo y redirige las consultas a otro servidor disponible, sin que la aplicación lo perciba, asegurando la continuidad del servicio.
3. Routing Inteligente:
ProxySQL permite definir reglas para redirigir consultas específicas a ciertos nodos. Por ejemplo, puedes enviar las lecturas a los nodos esclavos y las escrituras al nodo maestro. Esto optimiza el rendimiento de la base de datos al reducir la carga del nodo maestro.
4. Cacheo de Consultas:
ProxySQL tiene la capacidad de almacenar en caché las consultas de lectura, lo que mejora considerablemente el rendimiento al reducir el número de consultas repetidas que llegan a los servidores de base de datos.
5. Alta Disponibilidad (HA):
ProxySQL es compatible con configuraciones de alta disponibilidad. Puede ser desplegado en modo redundante, con varios proxys ejecutándose al mismo tiempo, lo que elimina puntos únicos de fallo.
6. Monitoreo y Estadísticas:
ProxySQL incluye herramientas para monitorear el tráfico y el rendimiento de las consultas SQL. Puedes obtener estadísticas en tiempo real sobre las conexiones, latencia y uso de recursos.
7. Compatibilidad con Clústeres y Replicación:
ProxySQL es compatible con soluciones de clúster como Percona XtraDB Cluster, Galera Cluster, y replicación estándar de MySQL. Gestiona de manera inteligente las topologías de replicación, asegurando que las lecturas se dirijan a nodos esclavos y las escrituras al nodo maestro o nodos de escritura.
8. Reescritura de Consultas:
ProxySQL permite la reescritura de consultas SQL en tiempo real. Esto es útil para mejorar el rendimiento o modificar ciertas consultas sin cambiar la aplicación.
¿Cómo funciona ProxySQL?
ProxySQL se coloca entre la aplicación y los servidores de base de datos. Su arquitectura está diseñada para manejar grandes volúmenes de tráfico y permitir la configuración de reglas personalizadas para dirigir y optimizar el tráfico SQL. Los flujos de trabajo típicos incluyen los siguientes pasos:
- 1. Conexiones de la Aplicación: Las aplicaciones no se conectan directamente a los servidores MySQL, sino a ProxySQL. La conexión con ProxySQL se realiza usando las mismas credenciales y métodos de autenticación que la base de datos.
- 2. Routing de Consultas: ProxySQL evalúa las consultas recibidas y las redirige según las reglas configuradas. Esto puede incluir la distribución de consultas de lectura a nodos esclavos o consultas de escritura al nodo maestro.
- 3. Balanceo de Carga: Cuando hay múltiples servidores disponibles, ProxySQL distribuye las consultas SQL de manera eficiente entre ellos. Los algoritmos de balanceo de carga pueden configurarse para distribuir el tráfico de manera uniforme, basada en la carga actual de los servidores o el número de conexiones.
- 4. Failover: ProxySQL monitorea continuamente el estado de los servidores de base de datos. Si un servidor falla, redirige automáticamente las consultas a los nodos restantes disponibles.
- 5. Cacheo de Consultas: Si está habilitado, ProxySQL almacena en caché el resultado de consultas SQL de lectura, lo que evita realizar consultas repetitivas a la base de datos.
6. Monitoreo y Ajustes Dinámicos:
ProxySQL proporciona información en tiempo real sobre el rendimiento de las bases de datos y las consultas. Esto te permite ajustar las configuraciones de ProxySQL dinámicamente para mejorar el rendimiento, sin reiniciar el servicio.
Arquitectura de ProxySQL
ProxySQL tiene dos capas principales:
· Frontend: Esta es la capa que recibe las conexiones de las aplicaciones. Los clientes se conectan a esta capa como si fuera un servidor MySQL estándar.
· Backend: Es la capa que maneja las conexiones a los servidores MySQL. ProxySQL redirige las consultas desde el frontend a los servidores MySQL backend, siguiendo las reglas de balanceo de carga y reescritura de consultas definidas.
Implementación típica de ProxySQL
- 1. Configuración de ProxySQL en un servidor independiente.
- 2. Conexión de aplicaciones: Las aplicaciones apuntan a ProxySQL en lugar de directamente a los servidores de MySQL.
- 3. Configuración de reglas de routing: Se definen reglas de cómo ProxySQL debe redirigir las consultas (lectura/escritura, particionamiento, etc.).
- 4. Monitoreo: Se habilitan métricas de monitoreo para analizar el rendimiento de las consultas y del balanceo de carga.
Casos de uso de ProxySQL
- 1. Escalabilidad horizontal: Permite añadir nodos de MySQL para balancear carga, mejorando el rendimiento de grandes sistemas.
- 2. Alta disponibilidad: En entornos de producción críticos, ProxySQL ayuda a gestionar el failover sin intervención manual.
- 3. Optimización de consultas: A través de reescritura y cacheo de consultas, se puede optimizar el uso de los recursos de la base de datos.
- 4. Entornos de múltiples bases de datos: Ideal para entornos con múltiples servidores de bases de datos o clusters, como Percona XtraDB Cluster o Galera Cluster.
Configuración ProxySQL.
1. Instalación de ProxySQL
Para instalar ProxySQL en un servidor independiente (que actuará como proxy para el clúster), ejecuta los siguientes comandos en un servidor con Ubuntu o Debian:
sudo apt update
sudo apt install proxysql
Una vez instalado, puedes iniciar ProxySQL con:
sudo systemctl start proxysql
Verifica que esté corriendo correctamente:
sudo systemctl status proxysql
2. Acceder a la consola de administración de ProxySQL
Para acceder a la consola de administración, usa el siguiente comando:
mysql -u admin -padmin -h 127.0.0.1 -P6032
La contraseña por defecto es admin. Cambia esta contraseña después de acceder.
3. Configuración básica de ProxySQL
Dentro de la consola de administración de ProxySQL, puedes empezar a configurar los nodos de tu clúster. Suponiendo que tienes dos nodos maestros y dos nodos esclavos, la configuración sería la siguiente:
Agregar servidores MySQL (Masters y Slaves)
Primero, añade los dos nodos maestros (servidores A y B) y los dos nodos esclavos (servidores C y D) a la tabla de servidores MySQL en ProxySQL.
-- Añadir los nodos maestros
INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections) VALUES
(10, 'master1_ip', 3306, 1000), -- Nodo maestro 1
(10, 'master2_ip', 3306, 1000); -- Nodo maestro 2
-- Añadir los nodos esclavos
INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections) VALUES
(20, 'slave1_ip', 3306, 1000), -- Nodo esclavo 1
(20, 'slave2_ip', 3306, 1000); -- Nodo esclavo 2
En este caso, estamos utilizando hostgroup_id 10 para los nodos maestros y hostgroup_id 20 para los nodos esclavos.
Configuración de usuarios
A continuación, agrega un usuario de base de datos en ProxySQL que las aplicaciones utilizarán para conectarse. Suponiendo que tu usuario es app_user:
INSERT INTO mysql_users (username, password, default_hostgroup, transaction_persistent) VALUES
('app_user', 'password', 10, 1);
- default_hostgroup 10: Esto significa que el grupo predeterminado para este usuario será el hostgroup de los maestros (para escrituras).
- transaction_persistent 1: Esto garantiza que una transacción completa se ejecutará en el mismo host y no se distribuirá a varios.
Reglas de enrutamiento
Debes definir las reglas que redirijan las consultas de lectura (`SELECT`) a los nodos esclavos y las consultas de escritura (`INSERT`, UPDATE, DELETE, etc.) a los nodos maestros.
Para redirigir todas las lecturas (`SELECT`) a los esclavos, puedes crear la siguiente regla de enrutamiento:
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES
(1, 1, '^SELECT.*', 20, 1);
- Esta regla dice que cualquier consulta que comience con SELECT será enviada al hostgroup 20 (nodos esclavos).
Las escrituras (`INSERT`, UPDATE, DELETE) no necesitan reglas especiales, ya que por defecto irán al hostgroup definido para este usuario, que en este caso son los nodos maestros (hostgroup 10).
Aplicar los cambios
Después de haber configurado los servidores, usuarios y reglas de enrutamiento, es necesario aplicar los cambios:
LOAD MYSQL SERVERS TO RUNTIME;
LOAD MYSQL USERS TO RUNTIME;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
SAVE MYSQL USERS TO DISK;
SAVE MYSQL QUERY RULES TO DISK;
4. Configuración avanzada (opcional)
Failback en caso de fallo de un maestro
Puedes configurar ProxySQL para que realice un failover automático si uno de los nodos maestros falla. Esto se hace monitoreando los servidores y definiendo prioridades de failover.
-- Habilitar monitorización de los servidores MySQL
UPDATE mysql_servers SET status='ONLINE' WHERE hostname='master1_ip' OR hostname='master2_ip';
-- Configurar intervalos de monitoreo
SET mysql-monitor_ping_interval=1000; -- Intervalo de ping para monitorear
Balanceo de carga entre esclavos
Para distribuir las consultas de lectura de manera equitativa entre los esclavos, ProxySQL puede balancear las consultas de lectura entre los nodos esclavos.
-- Balancear consultas entre esclavos
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply, multiplex) VALUES
(2, 1, '^SELECT.*', 20, 1, 1);
Failover en caso de fallo de un esclavo
Puedes configurar la conmutación por error de ProxySQL si un nodo esclavo falla, de modo que redirija automáticamente el tráfico de lecturas al nodo esclavo que aún esté disponible.
5. Monitoreo y optimización
ProxySQL permite obtener estadísticas en tiempo real sobre el tráfico y los servidores de MySQL. Esto es útil para asegurarse de que el clúster está funcionando como se espera.
Para ver estadísticas del tráfico:
SELECT * FROM stats_mysql_query_digest;
Para monitorear el estado de los servidores:
SELECT * FROM runtime_mysql_servers;
Si está en línea o desconectado.
6. Configuración de la aplicación
Finalmente, configura tu aplicación para que apunte a ProxySQL en lugar de directamente a los servidores MySQL:
host = 'proxysql_ip'
port = 6033
username = 'app_user'
password = 'password'
Tu aplicación ahora estará conectada a ProxySQL, que gestionará la distribución del tráfico entre los nodos maestros y esclavos de manera eficiente.
Comandos ProxySQL.
1. Gestión de Servidores MySQL
- Ver todos los servidores MySQL configurados:
SELECT * FROM mysql_servers;
- Agregar un nuevo servidor MySQL a un hostgroup:
INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections) VALUES
(10, '192.168.1.100', 3306, 1000);
- Eliminar un servidor MySQL de un hostgroup:
DELETE FROM mysql_servers WHERE hostname = '192.168.1.100' AND hostgroup_id = 10;
- Actualizar los parámetros de un servidor MySQL:
UPDATE mysql_servers SET status='OFFLINE_SOFT' WHERE hostname = '192.168.1.100' AND hostgroup_id = 10;
- Aplicar cambios a los servidores (cargar cambios en el entorno de ejecución):
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
2. Gestión de Usuarios MySQL
- Ver todos los usuarios configurados:
SELECT * FROM mysql_users;
- Agregar un nuevo usuario MySQL:
INSERT INTO mysql_users (username, password, default_hostgroup) VALUES
('app_user', 'app_password', 10);
- Eliminar un usuario MySQL:
DELETE FROM mysql_users WHERE username = 'app_user';
- Aplicar cambios a los usuarios:
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
3. Reglas de Enrutamiento de Consultas
- Ver todas las reglas de enrutamiento:
SELECT * FROM mysql_query_rules;
- Agregar una nueva regla de enrutamiento:
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES
(1, 1, '^SELECT.*', 20, 1);
- Eliminar una regla de enrutamiento:
DELETE FROM mysql_query_rules WHERE rule_id = 1;
- Aplicar cambios a las reglas de enrutamiento:
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
4. Monitorización de Consultas y Servidores
Monitorización de Consultas
- Ver estadísticas de las consultas más ejecutadas:
SELECT * FROM stats_mysql_query_digest ORDER BY count_star DESC LIMIT 10;
- Ver estadísticas sobre el tiempo de ejecución de consultas:
SELECT * FROM stats_mysql_query_digest ORDER BY sum_time DESC LIMIT 10;
- Ver estadísticas por tipo de consulta (lecturas/escrituras):
SELECT hostgroup, digest_text, count_star, sum_time, min_time, max_time FROM stats_mysql_query_digest WHERE digest_text LIKE 'SELECT%' OR digest_text LIKE 'UPDATE%' OR digest_text LIKE 'DELETE%' ORDER BY sum_time DESC;
Monitorización de Servidores MySQL
- Ver estado en tiempo real de los servidores MySQL:
SELECT * FROM runtime_mysql_servers;
Esto te muestra información como el estado actual (ONLINE/OFFLINE), latencia, tiempos de respuesta, etc.
- Ver estadísticas de conexiones de los servidores MySQL:
SELECT * FROM stats_mysql_connection_pool;
Este comando proporciona información sobre las conexiones activas, cerradas, fallidas, y el uso del pool de conexiones para cada servidor en tiempo real.
- Ver estadísticas de tráfico de los servidores MySQL:
SELECT * FROM stats_mysql_global;
Monitorización de Errores y Fallos
- Ver el número de consultas fallidas:
SELECT * FROM stats_mysql_errors;
- Ver errores específicos de los servidores MySQL:
SELECT * FROM stats_mysql_errors_by_host;
- Ver errores específicos por tipo de consulta:
SELECT * FROM stats_mysql_errors_by_query;
5. Monitorización de ProxySQL
- Ver estadísticas globales del proxy:
SELECT * FROM stats_mysql_global;
Esto incluye métricas generales como el tráfico total, número de consultas ejecutadas, tiempos de procesamiento, etc.
- Ver el uso del pool de conexiones:
SELECT * FROM stats_mysql_connection_pool;
- Ver el estado de las conexiones:
SELECT * FROM stats_mysql_processlist;
- Ver métricas de latencia y tiempos de respuesta:
SELECT * FROM stats_mysql_latency;
6. Gestión de la Monitorización
ProxySQL tiene un conjunto de configuraciones de monitorización que se pueden ajustar para detectar el estado de los servidores y realizar failover si es necesario.
- Configurar intervalo de ping para los servidores MySQL:
SET mysql-monitor_ping_interval = 1000; -- en milisegundos
- Configurar el intervalo para verificar los tiempos de respuesta:
SET mysql-monitor_read_only_interval = 2000; -- en milisegundos
- Configurar el intervalo de latencia:
SET mysql-monitor_connect_interval = 1000;
7. Reinicio y Reinicialización
- Reiniciar ProxySQL:
sudo systemctl restart proxysql
- Reiniciar la configuración (limpiar y recargar todo):
LOAD MYSQL SERVERS TO RUNTIME;
LOAD MYSQL USERS TO RUNTIME;
LOAD MYSQL QUERY RULES TO RUNTIME;
- Guardar toda la configuración en disco:
SAVE MYSQL SERVERS TO DISK;
SAVE MYSQL USERS TO DISK;
SAVE MYSQL QUERY RULES TO DISK;
8. Tareas Administrativas Avanzadas
- Hacer un backup de la configuración de ProxySQL:
proxysql --backup-to-file=/ruta/al/archivo.sql
- Restaurar la configuración de ProxySQL desde un archivo:
proxysql --restore-from-file=/ruta/al/archivo.sql
Servidor web HTTP
ProxySQL incluye un servidor web HTTP integrado que proporciona una interfaz visual para monitorear el estado y el rendimiento del proxy. Ofrece métricas en tiempo real, estadísticas del grupo de conexiones (*connection pool*) y datos históricos en un formato fácil de leer.
El servidor web es opcional y está deshabilitado de forma predeterminada.
El servidor HTTP se controla mediante varias variables globales dentro del módulo de administración.
Variables principales
Variable Predeterminado Descripción
admin-web_enabled false Establecer en true para habilitar el servidor.
admin-web_port 6080 Puerto TCP en el que escucha el servidor.
admin-web_verbosity 0 Nivel de detalle de depuración (0-10).
Autenticación
El servidor web utiliza las credenciales definidas en la variable admin-stats_credentials. Estas consisten en pares usuario:contraseña separados por punto y coma.
SET admin-stats_credentials = 'stats:stats_pass;monitor:monitor_pass';
Características
Panel de control y métricas
La interfaz web ofrece varias páginas para un análisis detallado:
- Grupo de conexiones (Connection Pool): Desglose detallado de las conexiones al backend (en uso, libres, OK, errores) por grupo de hosts y servidor.
- Resumen de consultas (Query Digest): Vista en tiempo real de las consultas más frecuentes y sus métricas de rendimiento.
- Estadísticas del sistema: Uso de CPU y memoria del proceso ProxySQL.
- Lista de procesos (Processlist): Visualización de las conexiones de cliente activas y su estado actual.
Integración con Prometheus
El servidor web también proporciona un punto final (*endpoint*) dedicado para la recopilación de métricas de Prometheus (normalmente en /metrics cuando está habilitado).
Activación
Para habilitar el servidor web en tiempo de ejecución:
Establezca la bandera de habilitación:
SET admin-web_enabled = 'true';
Aplique el cambio:
LOAD ADMIN VARIABLES TO RUNTIME;
Consulte la documentación de comandos de administración para obtener más detalles.
Seguridad
- Acceso restringido: Se recomienda encarecidamente vincular la interfaz web a 127.0.0.1 o utilizar un cortafuegos para restringir el acceso, ya que contiene datos de rendimiento confidenciales.
- Usuarios dedicados: Utilice las credenciales `admin-stats` específicamente para la monitorización, a fin de evitar compartir las credenciales administrativas `admin-admin`.
- Solo lectura: El servidor web integrado por defecto es estrictamente de solo lectura. No puede utilizarse para modificar la configuración de ProxySQL a menos que se instale explícitamente un complemento de interfaz de usuario (UI).
Descripción general
ProxySQL es un proxy de código abierto y alto rendimiento diseñado específicamente para MySQL (y bases de datos compatibles con MySQL como Percona Server y MariaDB). Se ubica entre la capa de su aplicación y sus servidores MySQL, manejando de forma transparente la acumulación de conexiones (connection pooling), la división de lectura/escritura, el enrutamiento de consultas y la conmutación por error (failover) sin requerir cambios en el código de la aplicación.
Arquitectura
Application Servers
ProxySQL (port 3306)
- Connection Multiplexing
- Query Routing Rules
- Query Cache
- Query Rewriting
|
+---> MySQL Primary (writes)
|
+---> MySQL Replica 1 (reads)
|
+---> MySQL Replica 2 (reads)
ProxySQL Admin (port 6032)
- Runtime configuration
- Monitoring dashboard
Instalación
# On RHEL/CentOS/Amazon Linux
rpm -ivh proxysql-2.6.0-1-centos7.x86_64.rpm
systemctl enable proxysql
systemctl start proxysql
# On Debian/Ubuntu
dpkg -i proxysql_2.6.0-ubuntu22_amd64.deb
systemctl start proxysql
Configuración básica
ProxySQL utiliza una base de datos SQLite en memoria para la configuración. Conéctese a la interfaz de administración:
mysql -h 127.0.0.1 -P 6032 -u admin -padmin --prompt "ProxySQL Admin> "
Añadir servidores MySQL
-- Add backend MySQL servers
INSERT INTO mysql_servers (hostgroup_id, hostname, port, weight, comment)
VALUES
(10, '10.0.1.10', 3306, 1000, 'primary'),
(20, '10.0.1.11', 3306, 1000, 'replica-1'),
(20, '10.0.1.12', 3306, 1000, 'replica-2');
-- Hostgroup 10 = writes, Hostgroup 20 = reads
Añadir usuarios MySQL
INSERT INTO mysql_users (username, password, default_hostgroup, transaction_persistent)
VALUES ('appuser', 'secret', 10, 1);
-- default_hostgroup=10 means writes go to primary by default
Configurar la división de lectura/escritura
-- Route SELECT queries to the read hostgroup (20)
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply)
VALUES
(1, 1, '^SELECT.*FOR UPDATE', 10, 1), -- SELECT FOR UPDATE stays on primary
(2, 1, '^SELECT', 20, 1); -- All other SELECTs go to replicas
-- Apply changes
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
Monitoreo de Backends
-- Check server health status
SELECT * FROM mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 10;
-- Check connection pool stats
SELECT hostgroup, srv_host, status, ConnUsed, ConnFree, ConnERR
FROM stats_mysql_connection_pool;
+-----------+------------+--------+----------+----------+---------+
| hostgroup | srv_host | status | ConnUsed | ConnFree | ConnERR |
+-----------+------------+--------+----------+----------+---------+
| 10 | 10.0.1.10 | ONLINE | 5 | 15 | 0 |
| 20 | 10.0.1.11 | ONLINE | 3 | 17 | 0 |
| 20 | 10.0.1.12 | ONLINE | 2 | 18 | 0 |
+-----------+------------+--------+----------+----------+---------+
Estadísticas de consultas
ProxySQL realiza un seguimiento del rendimiento de las consultas para cada resumen de consulta (query digest) distinto:
SELECT digest_text, count_star, sum_time, min_time, max_time, sum_time/count_star AS avg_time
FROM stats_mysql_query_digest
ORDER BY sum_time DESC
LIMIT 10;
Esto convierte a ProxySQL en una herramienta inestimable para identificar consultas lentas sin depender del registro de consultas lentas de MySQL.
Multiplexación de conexiones
ProxySQL multiplexa miles de conexiones de aplicaciones en un número mucho menor de conexiones backend:
-- Configure connection pool size per hostgroup
UPDATE mysql_servers SET max_connections = 50
WHERE hostgroup_id = 10;
UPDATE mysql_servers SET max_connections = 100
WHERE hostgroup_id = 20;
LOAD MYSQL SERVERS TO RUNTIME;
Almacenamiento en caché de consultas
-- Cache queries matching a pattern for 5 seconds
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, cache_ttl, apply)
VALUES (100, 1, '^SELECT.*FROM product_catalog', 5000, 1);
LOAD MYSQL QUERY RULES TO RUNTIME;
Gestión de conmutación por error (Failover)
Combinado con un gestor de topología de replicación como Orchestrator o MHA, ProxySQL puede actualizar automáticamente el enrutamiento cuando un nodo primario falla:
# Orchestrator calls this on failover
mysql -h 127.0.0.1 -P 6032 -u admin -padmin -e "
UPDATE mysql_servers SET status = 'OFFLINE_HARD'
WHERE hostname = 'old-primary-host';
UPDATE mysql_servers
SET hostgroup_id = 10
WHERE hostname = 'new-primary-host';
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
Resumen
ProxySQL es el proxy estándar de facto para despliegues de MySQL que requieren alta disponibilidad, escalado de lectura y gestión de conexiones a gran escala. Proporciona división transparente de lectura/escritura, agrupamiento de conexiones que reduce los costes de conexión de MySQL en varios órdenes de magnitud y análisis de consultas en tiempo real. Su arquitectura reconfigurable en tiempo de ejecución permite que los cambios de topología y las actualizaciones de enrutamiento de consultas se realicen sin reiniciar la aplicación ni sufrir tiempos de inactividad.
Cómo verificar la versión de ProxySQL
$ proxysql --version
ProxySQL version 3.0.4-162-gfaa64a5, codename Truls
Una versión de depuración contiene _DEBUG en su cadena de versión. Es más lenta que la versión que no es de depuración, pero más fácil de depurar en caso de fallos.
$ proxysql --version
ProxySQL version 3.0.4-162-gfaa64a5_DEBUG, codename Truls
Configurar ProxySQL a través de la interfaz de administración
En primer lugar, tenga en cuenta que la mejor manera de configurar ProxySQL es a través de su interfaz de administración. Esto permite una configuración en línea (sin tener que reiniciar el proxy) mediante consultas SQL a su base de datos de administración. Es una forma eficaz de configurarlo tanto de manera manual como automatizada.
Como forma secundaria de configurarlo, tenemos el archivo de configuración.
Configurar ProxySQL a través de la interfaz de administración
Para iniciar sesión en la interfaz de administración de MySQL (con las credenciales predeterminadas), use un cliente mysql y conéctese utilizando las siguientes credenciales de admin localmente en el puerto (6032):
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Admin>
nota: Si la versión de su cliente MySQL es la versión 8.04 o superior, agregue --default-auth=mysql_native_password al comando anterior para conectarse a la interfaz de administración.
Para iniciar sesión en la interfaz de administración para PostgreSQL, use el cliente psql y conéctese usando admin en el puerto 6132 (los comandos SQL de Admin son los mismos):
$ export PGPASSWORD=admin
$ psql -U admin -h 127.0.0.1 -p6132
psql (17.4 (Ubuntu 17.4-1.pgdg22.04+2), server 16.1)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: none)
Type "help" for help.
admin=#
Una vez conectado a la interfaz de administración, tendrá a su disposición una lista de bases de datos y tablas que se pueden consultar utilizando el lenguaje SQL:
Admin> SHOW DATABASES;
+-----+---------+-------------------------------+
| seq | name | file |
+-----+---------+-------------------------------+
| 0 | main | |
| 2 | disk | /var/lib/proxysql/proxysql.db |
| 3 | stats | |
| 4 | monitor | |
+-----+---------+-------------------------------+
4 rows in set (0.00 sec)
Esto le permitirá controlar la lista de servidores backend, cómo se enruta el tráfico hacia ellos y otros ajustes importantes (como el almacenamiento en caché, control de acceso, etc.). Una vez que haya realizado modificaciones en la estructura de datos en memoria, debe cargar la nueva configuración en el runtime o persistir los nuevos ajustes en el disco (para que sigan allí después de reiniciar el proxy). Un tutorial detallado sobre cómo configurar ProxySQL a través de la interfaz de Admin está disponible aquí.
Configurar ProxySQL a través del archivo de configuración
Aunque el archivo de configuración solo debe considerarse como una forma secundaria de configurar el proxy, no debemos descartar su valor como una forma válida de inicializar una nueva instalación de ProxySQL.
Repasemos rápidamente las secciones principales del archivo de configuración (esta visión general sirve como un resumen de alto nivel de la configuración de ProxySQL).
Secciones de nivel superior:
· admin_variables: contiene variables globales que controlan la funcionalidad de la interfaz de administración.
· mysql_variables: contiene variables globales que controlan la funcionalidad para manejar el tráfico entrante de MySQL.
· mysql_servers: contiene filas para la tabla mysql_servers de la interfaz de administración. Básicamente, estas definen los servidores backend hacia los cuales se enruta el tráfico entrante de MySQL. Las filas se codifican según el formato de archivo .cfg, aquí hay un ejemplo:
mysql_servers =({address="127.0.0.1"port=3306hostgroup=0max_connections=200})
· mysql_users: contiene filas para la tabla mysql_users de la interfaz de administración. Básicamente, estas definen los usuarios que pueden conectarse al proxy y los usuarios con los que el proxy puede conectarse a los servidores backend. Las filas se codifican según el formato de archivo .cfg, aquí hay un ejemplo:
mysql_users:({username="root"password="root"default_hostgroup=0max_connections=1000default_schema="information_schema"active=1})
· mysql_query_rules: contiene filas para la tabla mysql_query_rules de la interfaz de administración. Básicamente, estas definen las reglas utilizadas para clasificar y enrutar el tráfico entrante de MySQL, según varios criterios (patrones coincidentes, usuario utilizado para ejecutar la consulta, etc.). Las filas se codifican según el formato de archivo .cfg, aquí hay un ejemplo (Nota: el ejemplo es una regla de enrutamiento de consultas muy genérica y se recomienda crear reglas específicas para las consultas en lugar de usar una regla genérica como esta):
mysql_query_rules:({rule_id=1active=1match_pattern="^SELECT .* FOR UPDATE$"destination_hostgroup=0apply=1},{rule_id=2active=1match_pattern="^SELECT"destination_hostgroup=1apply=1})
· pgsql_variables: contiene variables globales que controlan la funcionalidad para manejar el tráfico entrante de PostgreSQL.
· pgsql_servers: contiene filas para la tabla pgsql_servers de la interfaz de administración. Básicamente, estas definen los servidores backend hacia los cuales se enruta el tráfico entrante de PostgreSQL. Las filas se codifican según el formato de archivo .cfg, aquí hay un ejemplo:
pgsql_servers =({address="127.0.0.1"port=5432hostgroup=0max_connections=200})
· pgsql_users: contiene filas para la tabla pgsql_users de la interfaz de administración. Básicamente, estas definen los usuarios que pueden conectarse al proxy y los usuarios con los que el proxy puede conectarse a los servidores backend. Las filas se codifican según el formato de archivo .cfg, aquí hay un ejemplo:
pgsql_users:({username="postgres"password="postgres"default_hostgroup=0max_connections=1000active=1})
· pgsql_query_rules: contiene filas para la tabla pgsql_query_rules de la interfaz de administración. Básicamente, estas definen las reglas utilizadas para clasificar y enrutar el tráfico entrante de PostgreSQL, según varios criterios (patrones coincidentes, usuario utilizado para ejecutar la consulta, etc.). Las filas se codifican según el formato de archivo .cfg, aquí hay un ejemplo (Nota: el ejemplo es una regla de enrutamiento de consultas muy genérica y se recomienda crear reglas específicas para las consultas en lugar de usar una regla genérica como esta):
pgsql_query_rules:({rule_id=1active=1match_pattern="^SELECT .* FOR UPDATE$"destination_hostgroup=0apply=1},{rule_id=2active=1match_pattern="^SELECT"destination_hostgroup=1apply=1})
Diferencias entre ProxySQL, Redis y Memcached
| Característica | ProxySQL | Redis | Memcached |
| Tipo de sistema | Proxy / Middleware de capa 7 para MySQL | Almacén de datos clave-valor en memoria (NoSQL) | Caché clave-valor simple en memoria |
| Integración en la app | Transparente: La aplicación se conecta como si fuera una base de datos MySQL (no requiere cambiar código). | Manual: La aplicación debe estar programada para leer/escribir explícitamente en Redis usando un SDK. | Manual: La aplicación debe estar programada para usar la librería de Memcached. |
| Nivel de funcionamiento | Intercepta y entiende el protocolo SQL (analiza comandos SELECT, INSERT, etc.). | Trabaja con estructuras de datos (Strings, Hashes, Lists, Sets, JSON). | Trabaja con pares Clave-Valor simples (cadenas de texto o binarios). |
| Persistencia | No aplica (solo cachea respuestas SQL en RAM). | Sí: Permite guardar copias en disco (RDB/AOF) para no perder datos tras un reinicio. | No: Es 100% volátil. Si el servicio se reinicia, los datos desaparecen. |
| Multihilo / Rendimiento | Diseñado para miles de conexiones concurrentes a MySQL. | Monohilo para operaciones de datos (ultra rápido, pero usa 1 núcleo de CPU para datos). | Multihilo (escala eficientemente en servidores con múltiples núcleos de CPU). |
| Funciones extra | Separación Lectura/Escritura, balanceo de carga, failover y reescritura de queries. | Pub/Sub (mensajería), colas de trabajo, expiración de claves (TTL), transacciones. | Solo almacenamiento y recuperación por clave con expiración por tiempo. |
¿Cuál elegir según el caso?
-
Usa ProxySQL si: Tienes una aplicación existente (por ejemplo, un software a medida o un CMS) conectada a MySQL y quieres acelerarla o separar tráfico de lectura/escritura sin tocar ni una sola línea de código.
-
Usa Redis si: Estás desarrollando una aplicación o usas un framework (Laravel, Symfony, Django, WordPress) que soporta caché de objetos, manejo de sesiones de usuario, colas de tareas en segundo plano o almacenamiento persistente en memoria.
-
Usa Memcached si: Necesitas un sistema de caché de datos simple, ligero y distribuido donde solo requieras consultar claves simples sin lógica compleja ni persistencia, aprovechando múltiples núcleos de CPU.
ProxySQL Query Cache
Habilitar caché
-- Cache all SELECT queries for 5 seconds (5000 ms)INSERT INTO mysql_query_rules (rule_id, active, match_pattern, cache_ttl, apply) VALUES (50, 1, '^SELECT', 5000, 1);LOAD MYSQL QUERY RULES TO RUNTIME;SAVE MYSQL QUERY RULES TO DISK;
Almacenamiento en caché de consultas específicas
Para un control más preciso, busca un patrón más específico y establece un TTL más largo para los datos que rara vez cambian:
-- Cache product catalog queries for 60 seconds
INSERT INTO mysql_query_rules (
rule_id, active, match_pattern, cache_ttl, apply
) VALUES (51, 1, '^SELECT .* FROM products', 60000, 1);
-- Cache exchange rate lookup for 10 minutes
INSERT INTO mysql_query_rules (
rule_id, active, match_pattern, cache_ttl, apply
) VALUES (52, 1, 'SELECT .* FROM exchange_rates', 600000, 1);
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
Configuración del tamaño de la caché
Establece el umbral de memoria que utiliza el hilo de purga de la caché. Se trata de un límite flexible: cuando el uso supera este valor, el hilo de purga se vuelve más agresivo a la hora de eliminar entradas:
SET mysql-query_cache_size_MB = 256;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
Supervisión de la eficacia de la caché
Consulta la tabla `stats_mysql_global` para ver los contadores de aciertos y fallos de la caché:
SELECT Variable_Name, Variable_Value
FROM stats_mysql_global
WHERE Variable_Name LIKE 'Query_Cache%';
Key variables
Query_Cache_count_GET - total cache lookups
Query_Cache_count_GET_OK - cache hits (result found)
Query_Cache_count_SET - entries added to cache
Query_Cache_bytes_IN - bytes written into cache
Query_Cache_bytes_OUT - bytes read from cache
Query_Cache_Purged - entries evicted due to TTL or memory pressure
Una relación alta entre GET_OK y GET indica que la caché es eficaz.
Omitir la caché para usuarios específicos
Si se desea que determinados usuarios obtengan siempre datos actualizados (por ejemplo, herramientas de administración), añade una regla que coincida con sus consultas sin establecer cache_ttl y utiliza un rule_id más bajo para que se evalúe en primer lugar. Al establecer apply=1 se detiene el procesamiento de reglas, por lo que no se aplicará ninguna regla de almacenamiento en caché posterior:
INSERT INTO mysql_query_rules (
rule_id, active, username, match_pattern, apply
) VALUES (1, 1, 'admin_user', '^SELECT', 1);
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
Borrar la caché
En ProxySQL 2.x, se puede vaciar toda la caché de consultas con un solo comando:
PROXYSQL FLUSH QUERY CACHE;
En producción, es preferible utilizar TTL cortos en lugar de vaciados manuales.
ProxySQL con Docker
Descripción de la imagen
Para descargar la imagen más reciente, basta con ejecutar:
$ docker pull proxysql/proxysql
O bien, para una versión específica (las imágenes utilizan versionado semántico), especifica la etiqueta correspondiente:
por ejemplo, para la versión 3.0.3:
$ docker pull proxysql/proxysql:3.0.3
por ejemplo, para la versión 2.7.3:
$ docker pull proxysql/proxysql:2.7.3
Si se omite la versión o parte de ella, se entiende que se refiere a la última de la serie:
Por ejemplo, la última de la serie 3.0.y:
$ docker pull proxysql/proxysql:3.0
Por ejemplo, la última de la serie 3.x.y:
$ docker pull proxysql/proxysql:3
La imagen se basa en Debian y ejecuta ProxySQL como proceso en primer plano.
NOTA: El paquete no contiene el cliente MySQL
Run
Para ejecutar un contenedor de ProxySQL con un archivo de configuración personalizado de ProxySQL:
$ docker run -p 16032:6032 -p 16033:6033 -p 16070:6070 -d -v /ruta/a/proxysql.cnf:/etc/proxysql.cnf proxysql/proxysql
NOTA: Tendrás que definir un segundo par de credenciales de administrador para conectarte desde fuera del contenedor.
Ejemplo de archivo de configuración (es decir, /ruta/a/proxysql.cnf mencionado anteriormente)
El siguiente archivo de configuración básica debería ser suficiente para fines de desarrollo; esta configuración te permitirá conectarte de forma remota a tu contenedor Docker de ProxySQL utilizando el segundo par de credenciales de administrador, por ejemplo:
mysql -h127.0.0.1 -P16032 -uradmin -pradmin --prompt "ProxySQL Admin>"
datadir="/var/lib/proxysql"
admin_variables=
{
admin_credentials="admin:admin;radmin:radmin"
mysql_ifaces="0.0.0.0:6032"
}
mysql_variables=
{
threads=4
max_connections=2048
default_query_delay=0
default_query_timeout=36000000
have_compress=true
poll_timeout=2000
interfaces="0.0.0.0:6033"
default_schema="information_schema"
stacksize=1048576
server_version="5.5.30"
connect_timeout_server=3000
monitor_username="monitor"
monitor_password="monitor"
monitor_history=600000
monitor_connect_interval=60000
monitor_ping_interval=10000
monitor_read_only_interval=1500
tiempo_de_espera_solo_lectura_del_monitor=500
intervalo_de_ping_del_servidor_en_milisegundos=120000
tiempo_de_espera_de_ping_del_servidor=500
estadísticas_de_comandos=true
ordenar_sesiones=true
reintentos_de_conexión_en_caso_de_fallo=10
}
Dockerfile
FROM debian:13
LABEL authors="Miro Stauder <miro@sysown.com>"
ARG VERS
ENV PROXYSQL_VERSION="${VERS}"
RUN [ -z "$VERS" ] && echo -n "\nERROR: Especifica la versión que se va a compilar. Por ejemplo:\ndocker build --build-arg VERS=2.5.1 .\n\n" >&2 && exit 1 || true
RUN cat /etc/os-release
RUN apt-get update && \
apt-get install -y apt-utils
RUN apt-get install -y \
default-mysql-client \
postgresql-client \
wget \
lsb-release \
gnupg \
apt-transport-https \
ca-certificates
RUN wget -nv -O - "https://repo.proxysql.com/ProxySQL/proxysql-${VERS%.*}.x/repo_pub_key" | \
gpg --dearmor > /etc/apt/trusted.gpg.d/proxysql-${VERS%.*}.x-keyring.gpg
RUN echo "deb https://repo.proxysql.com/ProxySQL/proxysql-${VERS%.*}.x/$(lsb_release -sc)/ ./" | \
tee /etc/apt/sources.list.d/proxysql.list && \
apt-get update && \
apt-get install proxysql=${VERS}
# limpiar la caché de apt
RUN apt clean && \
rm -rf /var/cache/apt/* && \
rm -rf /var/lib/apt/lists/*
CMD ["proxysql", "-f", "--idle-threads", "-D", "/var/lib/proxysql"]


Entrada más reciente
0 comments :
Publicar un comentario
Los comentarios pueden ser revisados en cualquier momento por los moderadores.
Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.
Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.