ProxySQL est un proxy hautes performances, haute disponibilité et prenant en compte le protocole pour MySQL et les forks (comme Percona Server et MariaDB). Tout en bénéficiant de la liberté illimitée offerte par une licence GPL.
Son développement est motivé par le manque de proxys open source offrant des performances élevées.
Les packages publiés peuvent être trouvés ici : https://github.com/sysown/proxysql/releases
Téléchargez simplement un package et utilisez le gestionnaire de packages de votre système pour l'installer :
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
Alternativement, vous pouvez également utiliser les référentiels disponibles :
Ajout d'un référentiel :
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
Installation :
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
Ajout d'un référentiel :
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
Installation :
yum install proxysql OR yum install proxysql-version
Ajout d'un référentiel :
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
Installation :
yum install proxysql OR yum install proxysql-version
Ajout d'un référentiel :
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
Installation :
yum install proxysql OR yum install proxysql-version
Ajout d'un référentiel :
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
ou
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
Installation :
yum install proxysql OR yum install proxysql-version
Installation (via paquet) :
pkg install proxysql
Installation (via les ports) :
cd /usr/ports/databases/proxysql/ && make install clean
Une fois le logiciel installé, vous pouvez utiliser la commande service
pour contrôler le processus :
service proxysql start
service proxysql stop
Ou bien via l'interface Admin :
$ 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
Ou bien via l'interface Admin :
$ 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
Installez simplement le nouveau package et redémarrez 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
Une version de débogage a _DEBUG
dans sa chaîne de version. Elle est plus lente que la version sans débogage, mais plus facile à déboguer en cas d'échec.
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
Tout d’abord, gardez à l’esprit que la meilleure façon de configurer ProxySQL consiste à utiliser son interface d’administration. Cela se prête à la configuration en ligne (sans avoir à redémarrer le proxy) via des requêtes SQL sur sa base de données admin. C'est un moyen efficace de le configurer à la fois manuellement et de manière automatisée.
Comme moyen secondaire de le configurer, nous avons le fichier de configuration.
Pour vous connecter à l'interface d'administration (avec les informations d'identification par défaut), utilisez un client MySQL et connectez-vous en utilisant les informations d'identification admin
suivantes localement sur le port (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 >
Remarque : Si la version de votre client MySQL est la version 8.04 ou supérieure, ajoutez --default-auth=mysql_native_password
à la commande ci-dessus pour vous connecter à l'interface d'administration.
Une fois connecté à l'interface d'administration, vous aurez à votre disposition une liste de bases de données et de tables interrogeables en utilisant le langage 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)
Cela vous permettra de contrôler la liste des serveurs backend, la manière dont le trafic y est acheminé et d'autres paramètres importants (tels que la mise en cache, le contrôle d'accès, etc.). Une fois que vous avez apporté des modifications à la structure des données en mémoire, vous devez charger la nouvelle configuration dans le runtime ou conserver les nouveaux paramètres sur le disque (afin qu'ils soient toujours là après un redémarrage du proxy). Un didacticiel détaillé sur la façon de configurer ProxySQL via l'interface d'administration est disponible ici.
Même si le fichier de configuration ne doit être considéré que comme un moyen secondaire de configurer le proxy, nous ne devons pas ignorer sa valeur en tant que moyen valide d'amorcer une nouvelle installation de ProxySQL.
Passons rapidement en revue les principales sections du fichier de configuration (cet aperçu sert d'aperçu de très haut niveau de la configuration de ProxySQL).
Sections de niveau supérieur :
admin_variables
: contient des variables globales qui contrôlent la fonctionnalité de l'interface d'administration.
mysql_variables
: contient des variables globales qui contrôlent la fonctionnalité de gestion du trafic MySQL entrant.
mysql_servers
: contient les lignes de la table mysql_servers
de l'interface d'administration. Fondamentalement, ceux-ci définissent les serveurs backend vers lesquels le trafic MySQL entrant est acheminé. Les lignes sont codées selon le format de fichier .cfg
, voici un exemple :
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: contient les lignes de la table mysql_users
de l'interface d'administration. Fondamentalement, ceux-ci définissent les utilisateurs qui peuvent se connecter au proxy et les utilisateurs avec lesquels le proxy peut se connecter aux serveurs backend. Les lignes sont codées selon le format de fichier .cfg
, voici un exemple :
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: contient les lignes de la table mysql_query_rules
de l'interface d'administration. Fondamentalement, celles-ci définissent les règles utilisées pour classer et acheminer le trafic MySQL entrant, selon divers critères (modèles correspondants, utilisateur utilisé pour exécuter la requête, etc.). Les lignes sont codées selon le format de fichier .cfg
, voici un exemple (Remarque : l'exemple est une règle de routage de requêtes très générique et il est recommandé de créer des règles spécifiques pour les requêtes plutôt que d'utiliser une règle générique telle que celle-ci) :
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
}
)
élément de configuration de niveau supérieur : datadir
, sous forme de chaîne, pour pointer vers le répertoire de données.