ProxySQL es un proxy de alto rendimiento, alta disponibilidad y compatible con protocolos para MySQL y bifurcaciones (como Percona Server y MariaDB). Al mismo tiempo, obtiene la libertad ilimitada que viene con una licencia GPL.
Su desarrollo está impulsado por la falta de servidores proxy de código abierto que proporcionen un alto rendimiento.
Los paquetes publicados se pueden encontrar aquí: https://github.com/sysown/proxysql/releases
Simplemente descargue un paquete y use el administrador de paquetes de su sistema para instalarlo:
wget https://github.com/sysown/proxysql/releases/download/v2.4.2/proxysql_2.4.2-ubuntu20_amd64.deb
dpkg -i proxysql_2.4.2-ubuntu20_amd64.deb
Alternativamente también puedes utilizar los repositorios disponibles:
Agregar repositorio:
apt-get update && apt-get install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates
wget -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
Instalación:
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
Agregar repositorio:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/ $ releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
Instalación:
yum install proxysql OR yum install proxysql-version
Agregar repositorio:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/8
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
Instalación:
yum install proxysql OR yum install proxysql-version
Agregar repositorio:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/almalinux/ $ releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
Instalación:
yum install proxysql OR yum install proxysql-version
Agregar repositorio:
cat > /etc/zypp/repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL Zypper repository
enabled=1
autorefresh=0
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/ $ releasever_major
gpgcheck=1
EOF
o
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
Instalación:
yum install proxysql OR yum install proxysql-version
Instalación (a través del paquete):
pkg install proxysql
Instalación (a través de puertos):
cd /usr/ports/databases/proxysql/ && make install clean
Una vez instalado el software, puede utilizar el comando service
para controlar el proceso:
service proxysql start
service proxysql stop
O alternativamente a través de la interfaz de administración:
$ 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> proxysql stop
service proxysql restart
O alternativamente a través de la interfaz de administración:
$ 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> proxysql restart
# If you are using the init script run:
/etc/init.d/proxysql initial
# or
service proxysql initial
# If you are using the systemd unit file run:
systemctl start proxysql-initial
# or
service proxysql-initial start
Simplemente instale el nuevo paquete y reinicie ProxySQL:
wget https://github.com/sysown/proxysql/releases/download/v2.1.0/proxysql_2.1.0-ubuntu16_amd64.deb
dpkg -i proxysql_2.1.0-ubuntu16_amd64.deb
service proxysql restart
$ proxysql --version
ProxySQL version 2.1.0-544-g17a4b4a7, codename Truls
Una versión de depuración tiene _DEBUG
en su cadena de versión. Es más lenta que la versión sin depuración, pero más fácil de depurar en caso de fallas.
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
En primer lugar, ten en cuenta que la mejor forma de configurar ProxySQL es a través de su interfaz de administración. Esto se presta para la 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 forma manual como automatizada.
Como forma secundaria de configurarlo tenemos el archivo de configuración.
Para iniciar sesión en la interfaz de administración (con las credenciales predeterminadas), use un cliente mysql y conéctese usando las siguientes credenciales 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.
Una vez conectado a la interfaz de administración, tendrá una lista de bases de datos y tablas a su disposición 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 dirige el tráfico a ellos y otras configuraciones importantes (como almacenamiento en caché, control de acceso, etc.). Una vez que haya realizado modificaciones en la estructura de datos en la memoria, debe cargar la nueva configuración en el tiempo de ejecución o conservar la nueva configuración 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 administración está disponible aquí.
Aunque el archivo de configuración sólo debe considerarse como una forma secundaria de configurar el proxy, no debemos descartar su valor como una forma válida de iniciar una nueva instalación de ProxySQL.
Repasemos rápidamente las secciones principales del archivo de configuración (esta descripción general sirve como una descripción general de muy 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, estos definen los servidores backend hacia los cuales se enruta el tráfico entrante de MySQL. Las filas están codificadas según el formato de archivo .cfg
; aquí hay un ejemplo:
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: contiene filas para la tabla mysql_users
de la interfaz de administración. Básicamente, definen los usuarios que pueden conectarse al proxy y los usuarios con los que el proxy puede conectarse a los servidores backend. Las filas están codificadas según el formato de archivo .cfg
; aquí hay un ejemplo:
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: contiene filas para la tabla mysql_query_rules
de la interfaz de administración. Básicamente, 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 están codificadas según el formato del 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=1
active=1
match_pattern= " ^SELECT .* FOR UPDATE$ "
destination_hostgroup=0
apply=1
},
{
rule_id=2
active=1
match_pattern= " ^SELECT "
destination_hostgroup=1
apply=1
}
)
elemento de configuración de nivel superior: datadir
, como una cadena, para apuntar al directorio de datos.