Я хочу настроить 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"
# }
)