ProxySQL ist ein leistungsstarker, hochverfügbarer und protokollbewusster Proxy für MySQL und Forks (wie Percona Server und MariaDB). Und das alles, während Sie die unbegrenzte Freiheit genießen, die eine GPL-Lizenz mit sich bringt.
Seine Entwicklung wird durch den Mangel an Open-Source-Proxys vorangetrieben, die eine hohe Leistung bieten.
Veröffentlichte Pakete finden Sie hier: https://github.com/sysown/proxysql/releases
Laden Sie einfach ein Paket herunter und installieren Sie es mit dem Paketmanager Ihres Systems:
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
Alternativ können Sie auch die verfügbaren Repositories nutzen:
Repository hinzufügen:
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
Installieren:
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
Repository hinzufügen:
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
Installieren:
yum install proxysql OR yum install proxysql-version
Repository hinzufügen:
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
Installieren:
yum install proxysql OR yum install proxysql-version
Repository hinzufügen:
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
Installieren:
yum install proxysql OR yum install proxysql-version
Repository hinzufügen:
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
oder
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
Installieren:
yum install proxysql OR yum install proxysql-version
Installieren (per Paket):
pkg install proxysql
Installieren (über Ports):
cd /usr/ports/databases/proxysql/ && make install clean
Sobald die Software installiert ist, können Sie den Vorgang mit dem service
-Befehl steuern:
service proxysql start
service proxysql stop
Oder alternativ über die Admin-Oberfläche:
$ 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
Oder alternativ über die Admin-Oberfläche:
$ 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
Installieren Sie einfach das neue Paket und starten Sie ProxySQL neu:
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
Eine Debug-Version hat _DEBUG
in ihrer Versionszeichenfolge. Sie ist langsamer als die Nicht-Debug-Version, aber bei Fehlern einfacher zu debuggen.
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
konfigurierenBedenken Sie zunächst, dass ProxySQL am besten über die Admin-Oberfläche konfiguriert werden kann. Dies bietet sich für die Online-Konfiguration (ohne Neustart des Proxys) über SQL-Abfragen an seine Admin-Datenbank an. Dies ist eine effektive Möglichkeit, es sowohl manuell als auch automatisiert zu konfigurieren.
Als sekundäre Möglichkeit zur Konfiguration steht uns die Konfigurationsdatei zur Verfügung.
Um sich bei der Admin-Schnittstelle anzumelden (mit den Standardanmeldeinformationen), verwenden Sie einen MySQL-Client und stellen Sie eine Verbindung mit den folgenden admin
Anmeldeinformationen lokal auf Port (6032) her:
$ 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 >
Hinweis: Wenn Ihre MySQL-Client-Version Version 8.04 oder höher ist, fügen Sie --default-auth=mysql_native_password
zum obigen Befehl hinzu, um eine Verbindung zur Admin-Schnittstelle herzustellen.
Sobald Sie mit der Admin-Oberfläche verbunden sind, steht Ihnen eine Liste von Datenbanken und Tabellen zur Verfügung, die mit der SQL-Sprache abgefragt werden können:
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)
Auf diese Weise können Sie die Liste der Backend-Server, die Art und Weise, wie der Datenverkehr an sie weitergeleitet wird, sowie andere wichtige Einstellungen (z. B. Caching, Zugriffskontrolle usw.) steuern. Sobald Sie Änderungen an der In-Memory-Datenstruktur vorgenommen haben, müssen Sie die neue Konfiguration in die Laufzeit laden oder die neuen Einstellungen auf der Festplatte speichern (damit sie nach einem Neustart des Proxys noch vorhanden sind). Eine ausführliche Anleitung zur Konfiguration von ProxySQL über die Admin-Oberfläche finden Sie hier.
Auch wenn die Konfigurationsdatei nur als sekundäre Möglichkeit zur Konfiguration des Proxys betrachtet werden sollte, dürfen wir ihren Wert nicht als gültige Möglichkeit zum Bootstrap einer neuen ProxySQL-Installation verwerfen.
Lassen Sie uns kurz die Hauptabschnitte der Konfigurationsdatei durchgehen (diese Übersicht dient als sehr allgemeiner Überblick über die ProxySQL-Konfiguration).
Abschnitte der obersten Ebene:
admin_variables
: enthält globale Variablen, die die Funktionalität der Admin-Schnittstelle steuern.
mysql_variables
: enthält globale Variablen, die die Funktionalität zur Verarbeitung des eingehenden MySQL-Verkehrs steuern.
mysql_servers
: enthält Zeilen für die Tabelle mysql_servers
aus der Admin-Schnittstelle. Im Wesentlichen definieren diese die Backend-Server, an die der eingehende MySQL-Verkehr weitergeleitet wird. Zeilen werden gemäß dem Dateiformat .cfg
codiert. Hier ist ein Beispiel:
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: enthält Zeilen für die Tabelle mysql_users
aus der Admin-Schnittstelle. Im Wesentlichen definieren diese die Benutzer, die sich mit dem Proxy verbinden können, und die Benutzer, mit denen der Proxy eine Verbindung zu den Backend-Servern herstellen kann. Zeilen werden gemäß dem Dateiformat .cfg
codiert. Hier ist ein Beispiel:
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: enthält Zeilen für die Tabelle mysql_query_rules
aus der Admin-Oberfläche. Im Wesentlichen definieren diese die Regeln, die zur Klassifizierung und Weiterleitung des eingehenden MySQL-Verkehrs nach verschiedenen Kriterien (übereinstimmende Muster, zum Ausführen der Abfrage verwendeter Benutzer usw.) verwendet werden. Zeilen werden gemäß dem .cfg
Dateiformat codiert. Hier ist ein Beispiel (Hinweis: Das Beispiel ist eine sehr generische Abfrage-Routing-Regel und es wird empfohlen, spezifische Regeln für Abfragen zu erstellen, anstatt eine generische Regel wie diese zu verwenden):
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
}
)
Konfigurationselement der obersten Ebene: datadir
als Zeichenfolge, um auf das Datenverzeichnis zu verweisen.