MySQL中几个关于时间/时区的变量
2018-01-11 21:10
393 查看
一、log_timestamps
1.1、官方解释
log_timestamps: Log timestamp format. Added in MySQL 5.7.2.
This variable controls the timestamp time zone of error log messages, and of general query log and slow query log messages written to files. It does not affect the time zone of general query log and slow query log messages written to tables.
Permitted log_timestamps values are UTC (the default) and SYSTEM (local system time zone).
This variable controls the timestamp time zone of error log messages, and of general query log and slow query log messages written to files. It does not affect the time zone of general query log and slow query log messages written to tables.
Permitted log_timestamps values are UTC (the default) and SYSTEM (local system time zone).
简单来说log_timestamps变量控制着error log、general log、slow log这些文件中的时间信息。log_timestamps有效的值为UTC(默认)和SYSTEM(本地系统时区)
1.2、使用样例
可以使用下面方式设置log_timestamps# mysqld_safe --timezone shell> /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql3306/my.cnf --timezone=UTC & shell> /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql3308/my.cnf --timezone=MET & 影响的是system_time_zone变量,主从复制,statement格式下,now()复制到从库 2018-01-10 07:41:17->2018-01-10 08:41:17 # mysqld --default-time-zone shell> /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --default-time-zone=+6:00 & shell> /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3308/my.cnf --default-time-zone=+8:00 & 影响的是time_zone变量,主从复制,statement格式下,now()复制到从库 2018-01-10 13:50:33->2018-01-10 13:50:33 原因:mysqld_safe --timezone参数,在从库的binlog可以看到 SET TIMESTAMP=1515570077; SET @@session.time_zone='SYSTEM'; #会根据system_time_zone中的时区去设置 insert ... select now(); mysqld --default-time-zone参数,在从库的binlog可以看到 SET TIMESTAMP=1515570633; SET @@session.time_zone='+06:00'; #直接复制主库,时间不会变化 insert ... select now(); # time_zone、timestamp对now()的影响 mysql> set time_zone='+6:00';set timestamp=1515570633;select now(); mysql> set time_zone='+8:00';set timestamp=1515570633;select now(); # 恢复timestamp mysql> set timestamp=0;select now(); # timezone_name需要手动load mysql> SELECT CONVERT_TZ('2018-01-10 12:00:00','+8:00','+6:00'); mysql> SELECT CONVERT_TZ('2018-01-10 12:00:00','US/Eastern','US/Central'); mysql> SELECT FROM_UNIXTIME(1515570633),UNIX_TIMESTAMP(now());
View Code
可以看出只有主、从设置system_time_zone后,之前的潜在问题才会按我们预期的结果显示~
四、参考文档
MySQL Server Time Zone Support:https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.htmlReplication and System Functions:https://dev.mysql.com/doc/refman/5.7/en/replication-features-functions.html
Replication and Time Zones:https://dev.mysql.com/doc/refman/5.7/en/replication-features-timezone.html
相关文章推荐
- 关于Linux中的几个时间变量atime,ctime,mtime
- 关于 django 的时区设置与MySQL 时间相差8小时
- 项目中 mysql中的内容关于上架时间和下架时间
- 介绍几个C++程序中关于"时间"的函数
- 关于MYSQL group by 分组按时间取最大值的实现方法!
- VC中几个关于时间计算的函数
- 关于使用python3操作Navicat for mysql 插入数据为空的几个情况
- 关于连续定义的几个变量的地址连续问题
- Linux下时间/时区的设置,及MySQL配置时区设置
- 关于时区的时间的详解,比如UTC\GMT等
- 关于mysql时间函数的笔记
- MySQL关于时间小干货
- mysql 关于日期时间的字段类型
- 关于在mysql触发器中变量(prefixed with @)赋值错误的问题
- 关于linux中的时间 时区问题
- 关于awk命令的几个内置变量(NF,NR,FS,FILENAME)
- 关于mysql时间类型datetime与timestamp范围
- MySQL关于orderby主键的时间优化
- 浅谈java基本库中关于时间的那几个类