日期差8个小时有两种情况
首先先保证系统的时区是正确的。
在Linux系统中,你可以使用以下命令来查看当前系统时区:
timedatectl如果需要更改系统时区,你可以使用以下命令:
sudo timedatectl set-timezone Asia/Shanghai在MySQL中设置了慢查询日志,但是日志中的时间都慢了8小时,怀疑是时区的问题。
慢查询日志差8个小时
show variables like '%log_time%';需要在MySQL的配置文件my.cnf中添加以下行:
[mysqld]
log_timestamps=SYSTEM更改了时区设置后,可能需要重新启动MySQL服务才能使更改生效。
service mysqld restart查询当前时间
select now();如果获取的时间正确,则无需修改,如果不对的化进行如下修改。
确保MySQL服务器的时区设置正确。
你可以使用以下SQL语句来查看当前时区设置:
SELECT @@global.time_zone, @@session.time_zone;结果

注意
默认是使用系统的时区,如果系统的时区设置时没有问题的则无需修改。
如果不想修改系统的时区,只修改MYSQL服务的时区,可以使用以下命令来更改它:
SET GLOBAL time_zone = '+08:00';
SET time_zone = '+08:00';这时再查看

如需要注意的是,以上修改时区的操作只对当前会话有效。
果您需要在全局范围内修改默认时区,需要在MySQL的配置文件my.cnf中添加以下行:
[mysqld]
default_time_zone = "+08:00"更改了时区设置后,可能需要重新启动MySQL服务才能使更改生效。
service mysqld restart查询Mysql版本
select version();或者
mysql --version获取现在的配置
show variables like '%slow%';
show variables like 'long_query_time';开启
set global long_query_time=3;
set global slow_query_log=1;关闭
set global slow_query_log=0;创建文件
cd /var/log/
mkdir mysql
cd mysql
vi mysql-slow.log设置权限
chmod a+w /var/log/mysql/mysql-slow.log打开配置文件
vi /etc/my.cnf找到[mysqld]下面加上
slow_query_log = 1
slow-query-log-file = /var/log/mysql/mysql-slow.log
long_query_time = 3其中
long_query_time = 3中的3表示查询超过3秒才记录;
清空日志后慢查询就不会继续写入了,
要想在不重启数据库的前提下能写入,可以重新设置下变量才能继续写入
set global slow_query_log=0;
set global slow_query_log=1;慢查询分析
mysqldumpslow /var/log/mysql/mysql-slow.log结果会把出现的次数,总用时、平均用时都显示出来

查看是否记录未使用索引的查询
show variables like 'log_queries_not_using_indexes';配置
SET GLOBAL log_queries_not_using_indexes=1在完成设置后,请使用命令
FLUSH LOGS;刷新MySQL日志,以便将更改保存到磁盘上的日志文件中。
注意
未使用索引的日志建议关闭,因为无论查询时间多长的sql,都会记录在日志中。 这个配置和慢查询的配置是并集的关系,即如果两个都开启,所有的慢查询和未使用索引的SQL都将会被记录。
关闭
SET GLOBAL log_queries_not_using_indexes=0