0

すべての送信ログ (失敗したログを含む) を

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

したがって、proxysql コンテナーに SSH で接続でき、proxysql コンテナー内から db コンテナーに接続できることを確認できます。

このコマンドを実行して。db は mysql コンテナの名前であることに注意してください

mysql -uroot -hdb -ppassword

次のコマンドを実行して、proxysql を起動できます。

proxysql -f

私の質問に至るまで、それで正しいです。


1) ローカル マシンからプロキシ経由でデータベースに接続するにはどうすればよいですか? 私の考えはそのようなものですか?

mysql -uadmin -padmin -h127.0.0.1 -P6032

2) proxysql コンテナーで sqlproxy を構成するにはどうすればよいですか? 私はデフォルトの/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"
#        }
)
4

1 に答える 1

0

ここに誰かが作成したコンテナがあります -> https://github.com/Plopix/docker-mysqlproxyprofilerこのコンテナーが行うことは、すべてのリクエストを既存のデータベース コンテナーにプロキシし、 https://github.com/patrickallaert/MySQL-Proxy-scripts-for-devsの .lua スクリプトを使用してすべてのクエリのデバッグをログに記録することです。お役に立てれば。

于 2019-05-13T11:11:14.780 に答える