分类 标签 存档 黑客派 订阅 搜索

Docker 开发环境中使用 MySQL general_log

1794 浏览0 评论

有了 docker 可以快速的创建一个 mysql 实例,

db:
        image: mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: iampassword
        ports:
            - 3306:3306
        volumes:
            - ./env/mysql/data:/var/lib/mysql
            - ./env/mysql/conf:/etc/mysql/conf.d

因为是开发环境, 所以我希望 MySQL 能尽可能多的告诉我更多的信息, 也就是能记录详细的日志, 可以在 mysql 控制台执行以下语句:

SET global log_output = 'file';
SET global general_log_file='/var/log/mysql/query.log'; 
SET global general_log = on;

这样, 日志就打印到了容器中/var/log/mysql/query.log中, 至于你想到容器中查看日志还是在本地查看, 完全看你喜好. 如果想在容器中看

docker exec -it centos_db_1 tail -f /var/log/mysql/query.log

如果想在本地看, 就在 docker-compose.yml中, 把上面db段修改成

db:
        image: mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: iampassword
        ports:
            - 3306:3306
        volumes:
            - ./env/mysql/data:/var/lib/mysql
            - ./env/mysql/conf:/etc/mysql/conf.d
            - ./env/log/mysql:/var/log/mysql

这样一个不好的地方是当容器重启后上面的三个SET语句都会失效, 如果想永久的改变配置, 就需要把这段配置放在 my.cnf

[mysqld]
log_output = file
general_log_file = /var/log/mysql/query.log
general_log      = 1

这样既不用提交镜像, 又能保存配置咯.

评论  
留下你的脚步
推荐阅读