MySQL, ProxySQL · 9 min read · Sep 26, 2025

Как установить сервер MySQL с балансировкой нагрузки с ProxySQL на Debian 11

ProxySQL — это высокопроизводительный прокси для MySQL с небольшим объемом, который можно установить в различных средах, таких как ВМ, K8s, bare-metal и контейнеры Docker. ProxySQL — это решение с открытым исходным кодом, которое обеспечивает высокую доступность для вашего кластера MySQL с поддержкой мультиплексирования соединений, предоставляет правила запросов для маршрутизации записей к основным серверам и распределяет чтения между репликами.

ProxySQL поддерживает как AMD64 (x86_64), так и ARM64. Он предоставляет прокси на уровне приложения для вашего приложения и также предоставляет расширенные запросы с обнаружением отказов.

В этом руководстве вы установите и настроите балансировку нагрузки кластера MySQL через ProxySQL на сервере Debian 11. Вы установите ProxySQL v2 с клиентом Percona XtraDB, затем добавите кластер Percona XtraDB в ProxySQL, настроите пользователя мониторинга ProxySQL, затем добавите базу данных и пользователя, которые будут использоваться для ваших приложений.

Предварительные требования

Чтобы начать с этого руководства, у вас должны быть следующие требования:

  • Сервер Linux с работающей системой Debian 11 — в этом примере используется сервер Debian с именем хоста ‘proxysql-deb‘.
  • Пользователь, не являющийся root, с правами администратора sudo/root.
  • Полностью настроенный кластер MySQL или кластер Percona XtraDB.

Вот и все. Когда все требования будут готовы, вы можете начать установку ProxySQL.

Настройка репозиториев

Первый шаг, который вы должны сделать для этого руководства, — это добавить репозитории ProxySQL и Percona XtraDB на ваш сервер. Репозиторий Percona XtraDB будет использоваться для установки пакета ‘percona-xtradb-cluster-client‘, который требуется ProxySQL.

Для начала установите некоторые основные зависимости, введя следующую команду apt. Введите y, когда будет предложено, и нажмите ENTER, чтобы продолжить.

sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates

установка основных зависимостей

Затем загрузите файл репозитория для Percona XtraDB и установите его с помощью команды ‘dpkg‘ ниже.

wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb  
sudo dpkg -i percona-release_latest.generic_all.deb

установка репозитория percona

Теперь обновите и обновите индекс пакетов Debian, используя следующую команду apt ниже. Вы должны увидеть, что новый репозиторий Percona XtraDB был добавлен.

sudo apt update

Затем введите команду ‘percona-release‘, чтобы включить репозиторий кластера Percona XtraDB 8.0.

sudo percona-release setup pxc80

включить репозиторий percona

С добавленным репозиторием Percona XtraDB теперь выполните следующую команду, чтобы добавить ключ GPG и репозиторий для ProxySQL.

wget -q -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

Обновите и обновите индекс пакетов Debian еще раз, чтобы применить новый репозиторий.

sudo apt update

добавить репозиторий proxysql

С добавленными репозиториями Percona XtraDB и ProxySQL вы можете установить пакеты ProxySQL и клиента Percona XtraDB.

Установка ProxySQL и клиента кластера Percona XtraDB

В этом разделе вы установите пакет ProxySQL v2 с пакетом клиента Percona XtraDB. Введите следующую команду apt, чтобы установить как ProxySQL, так и пакеты клиента Percona XtraDB.

sudo apt install proxysql2 percona-xtradb-cluster-client

Когда будет предложено, введите y для подтверждения и нажмите ENTER, чтобы продолжить.

установка proxysql

После установки ProxySQL он автоматически запустится и будет запущен автоматически при запуске системы. Введите следующую команду systemctl, чтобы проверить статус службы ProxySQL.

sudo systemctl is-enabled proxysql  
sudo systemctl start proxysql

Вывод ‘enabled‘ подтверждает, что ProxySQL будет запускаться автоматически при загрузке системы. А вывод ‘active (running)‘ подтверждает, что ProxySQL работает.

статус proxysql

Затем введите следующую команду mysql, чтобы войти на сервер ProxySQL с помощью имени пользователя и пароля по умолчанию ‘admin‘.

mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '

После успешного входа вы должны получить оболочку ProxySQL, как показано ниже. Вы подключились к модулю администрирования ProxySQL через клиент Percona XtraDB.

вход в percona xtradb

Теперь введите следующий запрос, чтобы получить список баз данных на сервере ProxySQL. Вы должны увидеть несколько баз данных, доступных на сервере ProxySQL.

SHOW DATABASES;

список баз данных

С установленным сервером ProxySQL и клиентом кластера Percona XtraDB вы готовы добавить MySQL или кластер Percona XtraDB на сервер ProxySQL и настроить балансировку нагрузки.

Добавление кластера MySQL/кластера Percona XtraDB в ProxySQL

Первый шаг, который вы должны сделать после установки сервера ProxySQL, — это добавить ваш MySQL или кластер Percona XtraDB на сервер ProxySQL. И это можно сделать через оболочку ProxySQL. В этом примере используется кластер Percona XtraDB со следующими данными:

Hostname    IP Address      Port  
---------------------------------  
pxc01       192.168.5.15    3306  
pxc02       192.168.5.16    3306  
pxc03       192.168.5.17    3306

Перед тем как начать, убедитесь, что вы вошли в оболочку ProxySQL. Затем введите следующие запросы, чтобы добавить ваши серверы MySQL в ProxySQL. Обязательно измените данные IP-адресов и портов на данные вашего кластера MySQL.

INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);  
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);  
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);

Вывод ‘Query OK, 1 row affected‘ подтверждает, что сервер MySQL добавлен на сервер ProxySQL.

добавить сервер mysql в proxysql

Введите следующий запрос, чтобы проверить список серверов MySQL, доступных на ProxySQL. Вы должны увидеть три сервера MySQL, добавленных на сервер ProxySQL.

SELECT * FROM mysql_servers;

С добавленным MySQL или кластером Percona XtraDB вам необходимо настроить мониторинг кластера Percona XtraDB на ProxySQL.

Настройка пользователя мониторинга ProxySQL

Чтобы убедиться, что MySQL или кластер Percona XtraDB работает исправно, ProxySQL будет постоянно мониторить все доступные серверы MySQL. Для этого вам необходимо создать нового пользователя на вашем кластере Percona XtraDB, а затем определить пользователя мониторинга на сервере ProxySQL.

Войдите на сервер кластера Percona XtraDB, получите доступ к оболочке MySQL через команду ‘mysql’, затем выполните следующие запросы MySQL, чтобы создать нового пользователя ‘monitor’ с паролем ‘monitor’.

CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';  
GRANT USAGE ON *.* TO 'monitor'@'%';  
FLUSH PRIVILEGES;
SELECT USER,host FROM mysql.user;  
SHOW GRANTS FOR 'monitor'@'%';

Затем перейдите на сервер ProxySQL и выполните следующий запрос, чтобы определить пользователя, который будет использоваться для мониторинга кластера Percona XtraDB. Это изменит переменную по умолчанию ‘mysql-monitor_username‘ на пользователя ‘monitor’ и переменную ‘mysql-monitor_password‘ для пароля ‘monitor’.

UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';  
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';

Введите следующий запрос, чтобы обновить некоторые дополнительные параметры для мониторинга кластера Percona XtraDB на сервере ProxySQL.

UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');

Сохраните изменения, которые вы внесли в ‘global_variables‘ на сервере ProxySQL, выполнив следующие запросы.

LOAD MYSQL VARIABLES TO RUNTIME;  
SAVE MYSQL VARIABLES TO DISK;

Вы должны получить вывод, похожий на этот.

Теперь выполните следующий запрос, чтобы проверить список ‘global_variables‘ для ‘mysql-monitor_‘ на сервере ProxySQL.

SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';

Вы должны получить вывод, похожий на следующий скриншот — переменная ‘mysql-monitor_username’ должна иметь значение пользователя ‘monitor’, а переменная ‘mysql-monitor_password’ для пароля — ‘monitor’. Также вы можете увидеть, что значение переменных ‘mysql-monitor_connect_interval’,’mysql-monitor_ping_interval’,’mysql-monitor_read_only_interval’ изменено на ‘2000‘.

проверка мониторинга proxysql

Наконец, введите следующие запросы, чтобы проверить статус мониторинга кластера Percona XtraDB на сервере ProxySQL. Это покажет вам журналы последнего статуса журнала и последнего пинга от сервера ProxySQL ко всем доступным серверам кластера Percona XtraDB.

SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;  
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;

При успешном выполнении вы должны получить вывод, похожий на этот.

Последние журналы подключения сервера ProxySQL к кластеру Percona XtraDB.

последнее подключение

Последние журналы пинга сервера ProxySQL к кластеру Percona XtraDB.

пинг proxysql

С кластером MySQL или Percona XtraDB, мониторинг которого осуществляется сервером ProxySQL, вы теперь готовы настроить нового пользователя, который будет использоваться вашими приложениями.

Настройка пользователя базы данных для приложений

С установленным и настроенным сервером ProxySQL и добавленным кластером MySQL или Percona XtraDB в качестве бэкенда базы данных, теперь вы настроите нового пользователя, который будет использоваться вашими приложениями. Таким образом, вместо подключения к серверу MySQL напрямую ваши приложения должны подключаться к серверу ProxySQL, который по умолчанию работает на порту ‘6033‘.

Чтобы настроить нового пользователя для ваших приложений, вам необходимо выполнить следующие шаги:

  • Создать нового пользователя на кластере MySQL или кластере Percona XtraDB и настроить привилегии.
  • Добавить пользователя кластера Percona XtraDB на сервер ProxySQL — вставить в таблицу ‘mysql_users‘.

Для начала вернитесь на сервер кластера Percona XtraDB и войдите в оболочку MySQL через пользователя root. Затем создайте нового пользователя MySQL и предоставьте пользователю привилегии для доступа ко всем базам данных, введя следующие запросы. В этом примере вы создадите нового пользователя ‘sbuser‘ с паролем ‘sbpass‘. Также убедитесь, что вы изменили IP-адрес ‘192.168.5.85‘ на IP-адрес сервера ProxySQL.

CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';  
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';  
FLUSH PRIVILEGES;

Затем вернитесь на сервер ProxySQL и выполните следующий запрос, чтобы добавить вашего нового пользователя MySQL на сервер ProxySQL. Ваши пользователи MySQL должны быть добавлены в таблицу ‘mysql_users‘ на сервере ProxySQL. Также на момент написания этой статьи сервер ProxySQL еще не поддерживает зашифрованный пароль.

INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');

Теперь введите следующие запросы, чтобы подтвердить и сохранить изменения на вашем сервере ProxySQL. С этим ваш новый пользователь готов, и вы можете использовать этого пользователя MySQL для ваших приложений.

LOAD MYSQL USERS TO RUNTIME;  
SAVE MYSQL USERS TO DISK;

создать пользователя proxysql

С этим ваши приложения теперь должны подключаться к серверу ProxySQL с пользователем ‘sbuser‘ и паролем ‘sbpass‘ на порту 6033.

Проверка базы данных и пользователя

В этом разделе вы проверите установку ProxySQL, подключившись к серверу ProxySQL с использованием созданного вами пользователя и пароля.

Введите следующую команду ‘mysql’, чтобы войти на сервер ProxySQL с новым пользователем ‘sbuser’ и паролем ‘sbpass’. При успешном выполнении вы должны увидеть оболочку сервера ProxySQL.

mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '

подключение к proxysql с новым пользователем

Введите следующий запрос, чтобы проверить список баз данных на кластере Percona XtraDB. В этом примере на кластере Percona XtraDB есть одна база данных ‘percona‘.

show databases;

Переключитесь на базу данных ‘percona‘ с помощью запроса ‘USE‘ ниже.

use percona

показать список баз данных

Затем введите следующие запросы, чтобы проверить список таблиц в базе данных ‘percona‘. Затем получите доступные данные в текущей базе данных, с которой вы работаете.

show tables;  
select * from example;

Вы должны получить вывод, похожий на этот — базы данных, которые хранятся на кластере Percona XtraDB, доступны с сервера ProxySQL. Это означает, что ваша установка ProxySQL в качестве балансировщика нагрузки для кластера Percona XtraDB была успешной.

показать таблицы и данные

Затем введите следующие запросы, чтобы вставить новые данные в базу данных ‘percona‘ и таблицу ‘example‘.

INSERT INTO percona.example VALUES (4, 'pxc04');  
INSERT INTO percona.example VALUES (5, 'pxc05');

Затем снова проверьте новые обновленные данные с помощью следующего запроса. Если все прошло успешно, вы должны получить новые данные, доступные в таблице ‘example‘. Это подтверждает, что ваш пользователь может читать и записывать в базы данных на кластере Percona XtraDB.

select * from example;

вставить новые данные

Наконец, чтобы убедиться, что ваши новые данные обновлены на кластере Percona XtraDB, вам необходимо проверить это непосредственно с сервера кластера Percona XtraDB.

Войдите на сервер кластера Percona XtraDB, получите доступ к оболочке MySQL через пользователя root, затем выполните следующий запрос, чтобы получить данные из базы данных ‘percona‘ таблицы ‘example‘.

select * from percona.example;

При успешном выполнении вы должны получить новые данные, которые вы добавили через сервер ProxySQL.

проверить обновленные данные

С этим в виду, ваша установка сервера ProxySQL в качестве балансировщика нагрузки для кластера MySQL или кластера Percona XtraDB успешна.

Заключение

В этом руководстве вы настроили балансировку нагрузки кластера MySQL или кластера Percona XtraDB через ProxySQL на сервере Debian 11. Вы установили ProxySQLv2, добавили кластер Percona XtraDB в ProxySQL и настроили мониторинг кластера Percona XtraDB на ProxySQL.

Кроме того, вы также создали и настроили пользователей MySQL или Percona XtraDB, которые могут использоваться для ваших приложений. Вы также проверили балансировку нагрузки кластера MySQL или кластера Percona XtraDB через ProxySQL, что обеспечивает высокую доступность и отказоустойчивость вашего сервера базы данных и ваших приложений.

С этим вы теперь можете добавить больше узлов кластера Percona XtraDB на ваш сервер базы данных с балансировкой нагрузки. Также вы можете настроить разделение чтения/записи через ProxySQL, настроить шардирование ProxySQL и настроить SSL-соединение от ProxySQL к кластеру Percona XtraDB. Чтобы узнать больше о ProxySQL, посетите официальную документацию ProxySQL.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.