Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Оцените статью

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик и cейчас я его и настрою.

Обновим систему

# apt update
# apt upgrade -y

Установка ProxySQL

Добавляем репозитарий и устанавливаем пакет.

# curl -fsSL https://repo.proxysql.com/ProxySQL/repo_pub_key | sudo gpg --dearmor -o /usr/share/keyrings/proxysql-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/proxysql-archive-keyring.gpg] https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/$(lsb_release -sc)/ ./" | sudo tee /etc/apt/sources.list.d/proxysql.list
# apt-get update
# apt-get install proxysql

Проверка установки

Убедитесь, что ProxySQL установлен и работает:

# systemctl status proxysql

Если сервис не запущен, запустите его и настройте автозапуск:

# systemctl start proxysql
# systemctl enable proxysql

Подключение к интерфейсу администрирования ProxySQL

ProxySQL имеет два интерфейса:

  • Admin interface (по умолчанию порт 6032) — для настройки;
  • MySQL interface (по умолчанию порт 6033) — для клиентских подключений.

Подключитесь к интерфейсу администрирования:

# mysql -u admin -p -h 127.0.0.1 -P 6032

Пароль по умолчанию — admin.

Настройка backend-серверов MySQL

Внутри интерфейса администрирования добавьте серверы MySQL, к которым будет проксировать запросы.

Посмотрите текущие серверы (по умолчанию там ничего нет):

    SELECT * FROM mysql_servers;

    Добавьте ваш MySQL-сервер:

      INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections) VALUES (1, '127.0.0.1', 3306, 1000);

      Примените изменения:

        LOAD MYSQL SERVERS TO RUNTIME;
        SAVE MYSQL SERVERS TO DISK;

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

        Добавьте пользователя, который будет использоваться для подключения к MySQL через ProxySQL:

        INSERT INTO mysql_users (username, password, default_hostgroup, active) VALUES ('proxy_user', 'proxy_password', 1, 1);

        Аналогично добавляем и все прочих пользователей которые будут подключаться с использованием ProxySQL.

        Сменим прароль для пользователя admin:

        UPDATE global_variables SET variable_value='admin:secret_password' WHERE variable_name='admin-admin_credentials';

        В базе данных создаем пользователя для мониторинга состояния кластера:

        CREATE USER 'monitor'@'%' IDENTIFIED BY 'monitor_password';
        GRANT USAGE, REPLICATION CLIENT ON *.* TO 'monitor'@'%';
        FLUSH PRIVILEGES;

        Настраиваем параметры для мониторинга состояния кластера:

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

        Сохраняем изменения:

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

        Настройка маршрутизации запросов (опционально)

        ProxySQL позволяет маршрутизировать запросы на разные серверы в зависимости от правил.

        Добавьте правила маршрутизации:

          INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (1, 1, '^SELECT.*FOR UPDATE$', 1, 1);

          Примените изменения:

            LOAD MYSQL QUERY RULES TO RUNTIME;
            SAVE MYSQL QUERY RULES TO DISK;

            Настройка MySQL-сервера для работы с ProxySQL

            Подключитесь к MySQL естественно на мастере:

              # mysql -u root -p

              Создайте пользователя для ProxySQL (если ещё не создан):

                CREATE USER 'proxy_user'@'%' IDENTIFIED BY 'proxy_password';
                GRANT ALL PRIVILEGES ON *.* TO 'proxy_user'@'%';
                FLUSH PRIVILEGES;
                EXIT;

                Важно: ограничьте права пользователя в соответствии с требованиями безопасности.

                Тестирование подключения через ProxySQL

                Попробуйте подключиться через ProxySQL:

                  # mysql -u proxy_user -p -h 127.0.0.1 -P 6033

                  Выполните тестовый запрос:

                    SELECT VERSION();

                    Мониторинг и анализ работы ProxySQL

                    Проверьте статус серверов:

                      SELECT * FROM runtime.mysql_servers;
                      1. Посмотрите статистику запросов:
                      SELECT * FROM stats.mysql_query_digest;
                      1. Проверьте активные сессии:
                      SELECT * FROM stats.mysql_connections;

                      Настройка firewall (если используется)

                      Если используется firewall, разрешите подключения к портам ProxySQL:

                      # ufw allow 6032/tcp
                      # ufw allow 6033/tcp
                      # ufw reload

                      Настройка дополнительных параметров (опционально)

                      Изменение портов по умолчанию.

                      Отредактируйте конфигурационный файл /etc/proxysql.cnf, чтобы изменить порты или другие параметры.

                      Или измените порт по умолчанию запросом:

                      SET mysql-interfaces='0.0.0.0:3306';
                      SAVE MYSQL VARIABLES TO DISK;

                      Настройка балансировки нагрузки.

                      Распределите нагрузку между несколькими серверами, добавив их в одну hostgroup:

                        INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections)
                        VALUES (1, '192.168.1.10', 3306, 1000),
                               (1, '192.168.1.11', 3306, 1000);
                        LOAD MYSQL SERVERS TO RUNTIME;
                        SAVE MYSQL SERVERS TO DISK;

                        Настройка мониторинга и автоматического переключения.

                        ProxySQL поддерживает мониторинг состояния серверов и автоматическое переключение при отказе.

                          Настройка резервного копирования конфигурации

                          Регулярно сохраняйте конфигурацию ProxySQL:

                          sudo cp /etc/proxysql.cnf /backup/proxysql.cnf.backup
                          sudo cp /var/lib/proxysql/proxysql.db /backup/proxysql.db.backup

                          Важные замечания

                          1. Безопасность: не используйте учётную запись root для подключения через ProxySQL. Создайте отдельного пользователя с ограниченными правами.
                          2. Производительность: ProxySQL оптимизирован для высокой производительности, но следите за нагрузкой на сервер.
                          3. Обновления: регулярно проверяйте наличие обновлений ProxySQL.
                          4. Резервное копирование: перед изменениями делайте резервные копии конфигурационных файлов и базы данных ProxySQL.
                          5. Мониторинг: используйте встроенные инструменты мониторинга ProxySQL для отслеживания состояния системы.

                          Полезные команды для администрирования

                          • Просмотр текущих настроек:
                            SELECT * FROM runtime.*;
                          • Применение изменений из конфигурации в runtime:
                            LOAD * TO RUNTIME;
                          • Сохранение изменений в диск:
                            SAVE * TO DISK;

                          Похожие записи

                          Конфигурация MySQL для микро-vps (минимизация потребления памяти)

                          Давайте немного поэкспериментируем с Микро-VPS. Из коробки MySQL сконфигурирован для автоматической подстройки под окружение, но на совсем ограниченных ресурсах я стабильно ловлю OOM-Killer и мне это не нравится, а переплачивать…

                          Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

                          Nextcloud — это бесплатное и открытое программное обеспечение для создания собственного облачного хранилища данных. Оно позволяет пользователям хранить файлы, синхронизировать их между устройствами, делиться ими с другими пользователями, а также…

                          Добавить комментарий

                          Ваш адрес email не будет опубликован. Обязательные поля помечены *

                          Читать еще статьи

                          Конфигурация MySQL для микро-vps (минимизация потребления памяти)

                          Конфигурация MySQL для микро-vps (минимизация потребления памяти)

                          Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

                          Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

                          Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

                          Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

                          Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

                          Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

                          Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

                          Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

                          Немного о настройке UFW в Ubuntu: от основ до продвинутых правил

                          Немного о настройке UFW в Ubuntu: от основ до продвинутых правил