Docker Basic Proxysql с mysql, который регистрирует все запросы - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу настроить proxysql и mysql локально с помощью Docker, чтобы я мог транслировать все исходящие журналы (включая журналы с ошибками) с чем-то вроде

docker logs -f proxysql

Это так, чтобы я мог отлаживать запросы и т. Д. У меня естьдобился хорошего прогресса.Мой составной файл Docker выглядит следующим образом

services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: password
    ports:
      - 33060:33060
      - 3306:3306
  proxysql:
    build:
       context: ./proxysql
    image: ubuntu
    container_name: proxysql
    command: tail -F anything
    ports:
      - 6032:6032
    depends_on:
      - db

Мой sqlproxy Dockerfile выглядит следующим образом

FROM ubuntu:18.04

RUN \
  apt-get -y update && \
  apt-get -y install mysql-client wget gdebi && \ 
  wget https://github.com/sysown/proxysql/releases/download/v2.0.2/proxysql_2.0.2-ubuntu18_amd64.deb && \
  gdebi -n proxysql_2.0.2-ubuntu18_amd64.deb

Таким образом, я могу ssh войти в контейнер proxysql и убедиться, чтоЯ могу подключиться к контейнеру db изнутри контейнера proxysql.

, выполнив эту команду.Обратите внимание, что db - это имя контейнера mysql

mysql -uroot -hdb -ppassword

. Я могу вызвать proxysql, выполнив следующую команду

proxysql -f

Прямо с этим до моего вопроса,


1) Как подключиться к базе данных через прокси с моей локальной машины?Мои мысли это что-то вроде?

mysql -uadmin -padmin -h127.0.0.1 -P6032

2) Как мне настроить sqlproxy в контейнере proxysql?Я посмотрел на файлы по умолчанию /etc/proxysql.cnf, и это где я немного запутался?Я скопировал конфигурацию здесь с тем, что я думаю, значения должны быть?

admin_variables=
{
    admin_credentials="admin:admin"
    mysql_ifaces="0.0.0.0:6032"
}

mysql_variables=
{
    threads=4
    max_connections=2048
    default_query_delay=0
    default_query_timeout=36000000
    have_compress=true
    poll_timeout=2000
#   interfaces="0.0.0.0:6033;/tmp/proxysql.sock"
    interfaces="0.0.0.0:6033"
    default_schema="information_schema"
    stacksize=1048576
    server_version="5.5.30"
    connect_timeout_server=3000
# make sure to configure monitor username and password
# https://github.com/sysown/proxysql/wiki/Global-variables#mysql-monitor_username-mysql-monitor_password
    monitor_username="monitor"
    monitor_password="monitor"
    monitor_history=600000
    monitor_connect_interval=60000
    monitor_ping_interval=10000
    monitor_read_only_interval=1500
    monitor_read_only_timeout=500
    ping_interval_server_msec=120000
    ping_timeout_server=500
    commands_stats=true
    sessions_sort=true
    connect_retries_on_failure=10
}


# defines all the MySQL servers
mysql_servers =
(
    {
        address = "db" # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
        port = 3306           # no default, required . If port is 0 , address is interpred as a Unix Socket Domain
#       hostgroup = 0           # no default, required
#       status = "ONLINE"     # default: ONLINE
#       weight = 1            # default: 1
#       compression = 0       # default: 0
#   max_replication_lag = 10  # default 0 . If greater than 0 and replication lag passes such threshold, the server is shunned
    }
)


# defines all the MySQL users
mysql_users:
(
    {
        username = "root" # no default , required
        password = "password" # default: ''
        default_hostgroup = 0 # default: 0
        active = 1            # default: 1
    }
)


#defines MySQL Query Rules
mysql_query_rules:
(
)

scheduler=
(
#  {
#    id=1
#    active=0
#    interval_ms=10000
#    filename="/var/lib/proxysql/proxysql_galera_checker.sh"
#    arg1="0"
#    arg2="0"
#    arg3="0"
#    arg4="1"
#    arg5="/var/lib/proxysql/proxysql_galera_checker.log"
#  }
)


mysql_replication_hostgroups=
(
#        {
#                writer_hostgroup=30
#                reader_hostgroup=40
#                comment="test repl 1"
#       },
#       {
#                writer_hostgroup=50
#                reader_hostgroup=60
#                comment="test repl 2"
#        }
)

1 Ответ

0 голосов
/ 13 мая 2019

Здесь кто-то создал контейнер -> https://github.com/Plopix/docker-mysqlproxyprofiler. Этот контейнер выполняет прокси-обработку всех ваших запросов в существующем контейнере базы данных и регистрирует отладку всех запросов, используя скрипт .lua из https://github.com/patrickallaert/MySQL-Proxy-scripts-for-devs. Надеюсь, это поможет.

...