设为首页 收藏本站
查看: 691|回复: 0

[经验分享] 主数据库(mysql)的时间不对

[复制链接]

尚未签到

发表于 2018-9-30 08:31:26 | 显示全部楼层 |阅读模式
  今天早上领导通知我讲主数据库的时间不对,Linux的系统时间是对的。怎么回事???难道是我以前更改了系统时间造成??怎么解决呢?
  在mysql手册中有下面这段话:
  5.10.8. MySQL服务器时区支持
  MySQL服务器有几个时区设置:
  · 系统时区。服务器启动时便试图确定主机的时区,用它来设置system_time_zone系统变量。
  · 服务器当前的时区。全局系统变量time_zone表示服务器当前使用的时区。初使值为'SYSTEM',说明服务器时区与系统时区相同。可以用--default-time-zone=timezone选项显式指定初使值。如果你有SUPER 权限,可以用下面的语句在运行时设置全局变量值:
  · mysql> SET GLOBAL time_zone = timezone;
  · 每个连接的时区。每个客户端连接有自己的时区设置,用会话time_zone变量给出。其初使值与全局变量time_zone相同,但可以用下面的语句重设:
  · mysql> SET time_zone = timezone;
  可以用下面的方法查询当前的全局变量值和每个连接的时区:
  mysql> SELECT @@global.time_zone, @@session.time_zone;
  timezone值为字符串,表示UTC的偏移量,例如'+10:00'或'-6:00'。如果已经创建并装入mysql数据库中的时区相关表,你还可以使用命名的时区,例如'Europe/Helsinki'、'US/Eastern'或'MET'。值'SYSTEM'说明该时区应与系统时区相同。时区名对大小写不敏感。
  MySQL安装程序在mysql数据库中创建时区表,但不装载。你必须手动装载。(如果你正从以前的版本升级到MySQL 4.1.3或更新版本,你应通过升级mysql数据库来创建表。参见2.10.2节,“升级授权表”中的说明)。
  如果你的系统有自己的时区信息数据库(描述时区的一系列文件),应使用mysql_tzinfo_to_sql程序来填充时区表。示例系统如Linux、FreeBSD、Sun Solaris和Mac OS X。这些文件的可能位置为/usr/share/zoneinfo目录。如果你的系统没有时区信息数据库,可以使用本节后面描述的下载的软件包。
  mysql_tzinfo_to_sql程序用来装载时区表。在命令行中,将时区信息目录路径名传递到mysql_tzinfo_to_sql并输出发送到mysql程序。例如:
  shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
  mysql_tzinfo_to_sql读取系统时区文件并生成SQL语句。mysql处理这些语句并装载时区表。
  mysql_tzinfo_to_sql还可以用来装载单个时区文件,并生成闰秒信息。
  要想装载对应时区tz_name的单个时区文件tz_file,应这样调用mysql_tzinfo_to_sql:
  shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql
  如果你的时区需要计算闰秒,按下面方法初使化闰秒信息,其中tz_file是时区文件名:
  shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql
  如果你的系统没有时区信息数据库 (例如,Windows或HP-UX),你可以从 http://dev.mysql.com/downloads/timezones.html下载预构建时区表软件包。该软件包包含MyISAM时区表所用的.frm、.MYD和.MYI文件。这些表应属于mysql数据库,因此应将这些文件放到MySQL服务器数据目录的mysql子目录。操作时应关闭服务器。
  警告!如果你的系统有时区信息数据库,请不要使用下载的软件包。而应使用mysql_tzinfo_to_sql实用工具!否则,MySQL和系统上其它应用程序处理日期时间的方法会有所不同。
  上面是mysql手册中的内容,以下是我解决办法:
  方法一
  1。在mysql的命令模式下使用
  mysql > select CURTIME();
  或
  mysql > select now();
  看当前时间是否正确,可以看到mysql当前使用的是那一个时区的时间。
  2。在mysql命令行中更改时区
  mysql > SET time_zone = '+8:00'; # 此为北京时,我们所在东8区
  mysql> flush privileges; # 立即生效
  此时mysql时区已更改正确,与系统时区都使用为 Shanghai时间了。
  #### 这种方法好像只能在终端上使用,退出终端后时间又会变成原来的,看来只能重启mysql了。
  3。重启mysql也应没有问题,此时mysql会主动读取系统时间。
  方法二:
  如果mysql数据库可以重启,直接重启,mysql应可以立即主动读取系统时间,如果不行则更改mysql的配置文件(mysql.cnf)
  在my.cnf的 [mysqld]区域中加上
  default-time_zone = '+8:00' #此为北京时。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606452-1-1.html 上篇帖子: Mysql-Oneproxy读写分离+分库分表 下篇帖子: mysql示例employees数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表