Docker+MySql慢查询

  1. 拉取镜像。
docker pull mysql:5.7
  1. 准备这样一个目录
我的目录
  /home/shenyi
        -----mysql
              ---data
              ---conf 
                 --my.cnf  (配置文件放在这)
              ---mylog

my.cnf配置文件

[client]
default-character-set=utf8mb4
[mysql]
 default-character-set=utf8mb4
 
[mysqld]
 datadir=/data
 character-set-server = utf8mb4 
 collation-server = utf8mb4_unicode_ci 
 init_connect='SET NAMES utf8mb4'
 default-storage-engine=INNODB
 log-error=/mylog/error.log
 slow_query_log = on	//开启慢查询
 long_query_time=2		//定义2秒以上为慢查询
 slow-query-log-file =/mylog/slow.log	//慢查询日志路径
  1. 运行docker容器
//实例化docker容器
docker run --name mysql -d -p 3306:3306 -v /home/gin/mysql/data:/data -v  /home/gin/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/gin/mysql/mylog:/mylog -e MYSQL_ROOT_PASSWORD=admin123456 mysql:5.7

这里docker容器启动失败,logs一下查看详情

[gin@gin ~]$ sudo docker logs e3a91d33b7e1
2020-08-10 21:28:22+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
2020-08-10 21:28:22+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-08-10 21:28:22+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
2020-08-10T21:28:22.402914Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicis_for_timestamp server option (see documentation for more details).
2020-08-10T21:28:22.408735Z 0 [Note] mysqld (mysqld 5.7.31-log) starting as process 1 ...
2020-08-10T21:28:22.411244Z 0 [ERROR] Could not open file '/mylog/error.log' for error logging: Permission denied
2020-08-10T21:28:22.411289Z 0 [ERROR] Aborting

2020-08-10T21:28:22.411317Z 0 [Note] Binlog end
2020-08-10T21:28:22.411512Z 0 [Note] mysqld: Shutdown complete

因为容器默认使用的是mysql用户。 因此我们需要把映射的文件夹修改owner:

//1. 首先进入容器
docker exec -it <容器ID> /bin/bas
//2. 查看mysql用户权限
cat /etc/passwd | grep mysql
//结果,mysql权限是999
mysql:x:999:999::/home/mysql:/bin/sh
//3. 快捷键退出(Ctrl+P+Q)
//4. 修改文件权限
chown -R 999 mylog
//5. 重启docker容器
docker restart <容器ID>
  1. 测试
//执行慢查询SQL语句
select sleep(3);
//查看日志
cat mylog/slow.log

结果

mysqld, Version: 5.7.31-log (MySQL Community Server (GPL)). started with:
Tcp port: 0  Unix socket: (null)
Time                 Id Command    Argument
# Time: 2020-08-10T21:41:57.002770Z
# User@Host: root[root] @  [192.168.56.1]  Id:     7
# Query_time: 3.013921  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use swoft2;
SET timestamp=1597095717;
select sleep(3);

猜你喜欢

转载自blog.csdn.net/qq_36453564/article/details/108072951
今日推荐