日期差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