MySQL 5.6.26
尝试将查询记录到标准输出在下面不起作用,
$ mysqld --general_log=1 --general_log_file=/dev/stdout
Run Code Online (Sandbox Code Playgroud)
我很惊讶在 MySQL 和 PostgreSQL 中做到这一点是多么困难。
下面的配置允许我将所有 MySQL 日志发送到 Docker 容器的标准输出。
内容docker-compose.yml:
---
version: "3.9"
services:
your_db:
image: mysql:5.7-debian
command:
- /usr/local/bin/mysqld.sh
environment:
MYSQL_DATABASE: "$your_db"
MYSQL_PASSWORD: "$your_pass"
MYSQL_ROOT_PASSWORD: "$root_pass"
MYSQL_USER: "$your_user"
volumes:
- ./my.cnf:/etc/mysql/conf.d/my.cnf:ro
- ./mysqld.sh:/usr/local/bin/mysqld.sh:ro
networks:
- your_net
Run Code Online (Sandbox Code Playgroud)
内容my.cnf:
[mysqld]
# Log General
general_log = 1
general_log_file = /var/log/mysql_general.log
# Log Error
log_error = /var/log/mysql_error.log
# Log Slow
slow_query_log = 1
slow_query_log_file = /var/log/mysql_slow_query.log
long_query_time = 0 # 0 has the effect of logging all queries
log_queries_not_using_indexes = 1
Run Code Online (Sandbox Code Playgroud)
内容mysqld.sh:
#!/usr/bin/env bash
set -euo pipefail
##
# This script exists to work-around the fact that
# mysql does not support logging to stdout
#
# This will tail the file logs configured in ./my.cnf
##
LOG_PATHS=(
'/var/log/mysql_general.log'
'/var/log/mysql_error.log'
'/var/log/mysql_slow_query.log'
)
for LOG_PATH in "${LOG_PATHS[@]}"; do
# https://serverfault.com/a/599209
( umask 0 && truncate -s0 "$LOG_PATH" )
tail --pid $$ -n0 -F "$LOG_PATH" &
done
docker-entrypoint.sh mysqld
Run Code Online (Sandbox Code Playgroud)
你不能,不能直接。查询日志仅到达文件、表或无处。他们似乎不参加/dev/stdout也不遵守大会-。别担心,还有更好的方法。
如果您只想查看查询日志,则可以使用各种 Unix 实用程序流式传输日志文件。tail -f是一种选择。
tail -f /path/to/query.log
Run Code Online (Sandbox Code Playgroud)
less我更喜欢使用命令打开日志并F在添加文件时继续阅读。就像tail -f,但您也可以滚动并搜索文件。
$ less /path/to/query.log
~
~
/opt/local/lib/mysql56/bin/mysqld, Version: 5.6.27-log (Source distribution). started with:
Tcp port: 0 Unix socket: (null)
Time Id Command Argument
151004 16:10:51 1 Connect schwern@localhost as on
1 Query select @@version_comment limit 1
151004 16:10:53 1 Query select 1
151004 16:10:54 1 Quit
Waiting for data... (interrupt to abort)
Run Code Online (Sandbox Code Playgroud)