ProxySQL — это высокопроизводительный, высокодоступный прокси-сервер с поддержкой протоколов для MySQL и его форков (таких как Percona Server и MariaDB). При этом получая неограниченную свободу, предоставляемую лицензией GPL.
Его развитие обусловлено отсутствием прокси с открытым исходным кодом, обеспечивающих высокую производительность.
Выпущенные пакеты можно найти здесь: https://github.com/sysown/proxysql/releases.
Просто загрузите пакет и используйте менеджер пакетов вашей системы, чтобы установить его:
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
Альтернативно вы также можете использовать доступные репозитории:
Добавляем репозиторий:
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
Установка:
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
Добавляем репозиторий:
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
Установка:
yum install proxysql OR yum install proxysql-version
Добавляем репозиторий:
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
Установка:
yum install proxysql OR yum install proxysql-version
Добавляем репозиторий:
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
Установка:
yum install proxysql OR yum install proxysql-version
Добавляем репозиторий:
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
или
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
Установка:
yum install proxysql OR yum install proxysql-version
Установка (через pkg):
pkg install proxysql
Установка (через порты):
cd /usr/ports/databases/proxysql/ && make install clean
После установки программного обеспечения вы можете использовать service
команду для управления процессом:
service proxysql start
service proxysql stop
Или альтернативно через интерфейс администратора:
$ 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
Или альтернативно через интерфейс администратора:
$ 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
Просто установите новый пакет и перезапустите 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
Отладочная версия имеет _DEBUG
в строке версии. Это медленнее, чем неотладочная версия, но ее легче отлаживать в случае сбоев.
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
Прежде всего, имейте в виду, что лучший способ настройки ProxySQL — через интерфейс администратора. Это позволяет выполнить онлайн-конфигурацию (без перезапуска прокси-сервера) с помощью SQL-запросов к базе данных администратора. Это эффективный способ настроить его как вручную, так и автоматически.
В качестве дополнительного способа его настройки у нас есть файл конфигурации.
Чтобы войти в интерфейс администратора (с учетными данными по умолчанию), используйте клиент MySQL и подключитесь, используя следующие учетные данные admin
локально через порт (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 >
Примечание. Если ваша версия клиента MySQL – 8.04 или выше, добавьте --default-auth=mysql_native_password
к приведенной выше команде, чтобы подключиться к интерфейсу администратора.
После подключения к интерфейсу администратора в вашем распоряжении будет список баз данных и таблиц, к которым можно обращаться с помощью языка 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)
Это позволит вам контролировать список внутренних серверов, способ маршрутизации трафика на них и другие важные настройки (такие как кэширование, контроль доступа и т. д.). После внесения изменений в структуру данных в памяти необходимо загрузить новую конфигурацию в среду выполнения или сохранить новые настройки на диске (чтобы они оставались там после перезапуска прокси-сервера). Подробное руководство по настройке ProxySQL через интерфейс администратора доступно здесь.
Несмотря на то, что файл конфигурации следует рассматривать только как дополнительный способ настройки прокси-сервера, мы не должны отбрасывать его значение как действительный способ загрузки новой установки ProxySQL.
Давайте быстро пробежимся по основным разделам файла конфигурации (этот обзор представляет собой очень общий обзор конфигурации ProxySQL).
Разделы верхнего уровня:
admin_variables
: содержит глобальные переменные, которые управляют функциональностью интерфейса администратора.
mysql_variables
: содержит глобальные переменные, которые управляют функциями обработки входящего трафика MySQL.
mysql_servers
: содержит строки для таблицы mysql_servers
из интерфейса администратора. По сути, они определяют внутренние серверы, на которые направляется входящий трафик MySQL. Строки кодируются в формате файла .cfg
, вот пример:
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: содержит строки для таблицы mysql_users
из интерфейса администратора. По сути, они определяют пользователей, которые могут подключаться к прокси-серверу, и пользователей, с которыми прокси-сервер может подключаться к внутренним серверам. Строки кодируются в формате файла .cfg
, вот пример:
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: содержит строки для таблицы mysql_query_rules
из интерфейса администратора. По сути, они определяют правила, используемые для классификации и маршрутизации входящего трафика MySQL в соответствии с различными критериями (совпадающие шаблоны, пользователь, используемый для запуска запроса и т. д.). Строки кодируются в формате файла .cfg
, вот пример (Примечание: пример представляет собой очень общее правило маршрутизации запросов, и рекомендуется создавать конкретные правила для запросов, а не использовать общее правило, такое как это):
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
}
)
элемент конфигурации верхнего уровня: datadir
в виде строки, указывающей на каталог данных.