gpt4 book ai didi

mysql - 在 docker mysql 容器中启用日志记录

转载 作者:IT老高 更新时间:2023-10-28 21:22:25 27 4
gpt4 key购买 nike

我正在尝试熟悉 docker 生态系统并尝试设置一个 mysql 数据库容器。使用 docker-compose 这看起来像:

version: '2'
services:
db:
image: mysql:5.6.33@sha256:31ad2efd094a1336ef1f8efaf40b88a5019778e7d9b8a8579a4f95a6be88eaba
volumes:
- "./db/data:/var/lib/mysql"
- "./db/log:/var/log/mysql"
- "./db/conf:/etc/mysql/conf.d"
restart: "yes"
environment:
MYSQL_ROOT_PASSWORD: rootpw
MYSQL_DATABASE: db
MYSQL_USER: db
MYSQL_PASSWORD: dbpw

我的 conf 目录包含一个文件:

[mysqld]
log_error =/var/log/mysql/mysql_error.log
general_log_file=/var/log/mysql/mysql.log
general_log =1
slow_query_log =1
slow_query_log_file=/var/log/mysql/mysql_slow.log
long_query_time =2
log_queries_not_using_indexes = 1

不幸的是,我没有以这种方式获得任何日志文件。设置本身是正确的,并且使用了 cnf 文件。连接到容器并创建 3 个文件后,将它们 chownmysql 并重新启动容器,日志记录按预期工作。

我很确定这是一种常见的情况,而我目前的运行方式似乎非常愚蠢。 正确的做法是什么?

我可以通过在 Dockerfile 中移动所有这些东西来改进我的方法,但这对我来说仍然很奇怪。

最佳答案

我一直在寻找完全相同的东西,现在,有更好的方法来做到这一点。

docker mysql写道:

Many configuration options can be passed as flags to mysqld. This willgive you the flexibility to customize the container without needing acnf file. For example, if you want to change the default encoding andcollation for all tables to use UTF-8 (utf8mb4) just run thefollowing:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

docker-compose 中世界,人们可以通过 "command" 传递这些论点。服务部分:

command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

在我的用例中,我只想打开日志并指定日志文件的路径:

 command: mysqld --general-log=1 --general-log-file=/var/lib/mysql/general-log.log

有了足够的卷(例如 - ./logs/mysql.log:/var/lib/mysql/general-log.log),就可以轻松访问它们。

这很简单,避免处理本地配置。它适用于任何 MySQL Docker images并将保持 my.cnf 与图像一起发送。

编辑:将路径从 /var/log/mysql/ 更改为 /var/lib/mysql/ 以确保 MySQL 可写文件夹。

关于mysql - 在 docker mysql 容器中启用日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39708213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com