[英]How to log queries to stdout on MySQL?
MySQL 5.6.26
嘗試將查詢記錄到標准輸出在下面不起作用,
$ mysqld --general_log=1 --general_log_file=/dev/stdout
我很驚訝在 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
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
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
你不能,不能直接。 查詢日志僅轉到文件,表或任何地方 。 他們似乎沒有去/dev/stdout
也沒有遵守-
慣例 。 別擔心,有一個更好的方法。
如果你想要做的就是查看日志中的查詢日志,你可以使用各種Unix實用程序來傳輸日志文件。 tail -f
是一種選擇。
tail -f /path/to/query.log
我更喜歡用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.