老大叫我改主数据库(MySQL)的时间!!!--UTC问题

由于我公司另外一个运维小伙伴装系统的时候,勾选了UTC这个东东。(会导致慢八个小时的时间误差)结果才有了这一次逗比的经历。


1、系统时间慢八个小时,我发现不对劲后,就改回来了,可参考我的另外一篇博客。

2、数据库慢了八个小时,当时并没有意识到这个问题。

突然在做实验,老大喊我,说MySQL时间不对劲,让我帮忙解决一下。啥?不会吧,当时首先是这个反正,去看看后,果然时间不对,和本地时间比较一下,相差八个小时。我顿时反应就是,又是那UTC惹的祸。好吧,排查吧,毕竟先解决问题才是硬道理啊。

了解:

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;

+--------------------+---------------------+

| @@global.time_zone | @@session.time_zone |

+--------------------+---------------------+

| SYSTEM             | SYSTEM              |

+--------------------+---------------------+

1 row in set (0.00 sec)

mysql>

解决方案;

1、临时解决方案

查看当前数据库时间

mysql> select CURTIME();

+-----------+

| CURTIME() |

+-----------+

| 08:53:05  |

+-----------+

1 row in set (0.00 sec)

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2016-01-31 08:53:08 |

+---------------------+

1 row in set (0.00 sec)

mysql>

修改时区:

mysql> SET time_zone = ‘+8:00‘;  # 此为北京时,我们所在东8区

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec)

mysql> 

这种方法好像只能在终端上使用,退出终端后时间又会变成原来的。

2、永久解决方案

vim /etc/my.cnf

[mysqld]

default-time_zone = ‘+8:00‘

重启mysql服务。

/etc/init.d/mysqld restart


注意:我的环境没报错,因为我自己搭建的有模拟环境,建议先在模拟环境操作,避免版本,环境带来不必要的错误和损失。

其他问题:

数据库如果有主从结构,重启数据库会导致主从不同步。

个人建议的方法:

1、先停止slave (stop slave;)然后先修改slave的时区(很不幸,系统不是自己装的),等到服务器重启后,查看slave同步binlog的位置,然后修改Master的时区,重启后查看当前master的位置,重新授权,salve重新学习(可从slave重启后查看的位置学习),最后再start slave;不出意外,这样是可行的,毕竟我是这样操作。


2、如果不行失败,那就等master和slave时区都改好后,查看master当前位置,然后slave导入最新数据库,然后重新学习。


3、我尝试过slave不导入最新数据,从一开始从master的binglog位置学习,但是实验报错了。后来有从新导入最新数据,然后学习的。(具体为什么失败,并不清楚,网上关于重启数据库,主从不同步的原因有很多。)

个人总结:

1、涉及到数据库的问题,最好先在实验环境模拟真实环境,操作无误再在生产环境执行,避免不必要的错误。如果问题比较大,记得先做好备份,备份才是王道。

2、遇到问题,先冷静,仔细排查。不要抱怨,先解决问题,再建议。

3、不要忽略一些不必要的问题。一个小小的UTC,居然带来了这么多的小弯路。



上面是个人在生产环境碰到的一些小问题,分享给大家,希望和大家互相分享,共同进步。

QQ:1145507435

邮箱:[email protected]

时间: 2024-08-26 04:21:01

老大叫我改主数据库(MySQL)的时间!!!--UTC问题的相关文章

调整php和mysql的时间 utc转为北京时间

date_default_timezone_set('PRC') or die('时区设置失败,请联系管理员!'); //设置php的时区,例如使用time函数 mysql_query("SET time_zone = '+8:00'") or die('时区设置失败,请联系管理员!'); //设置mysql的时区,例如使用now函数 调整php和mysql的时间 utc转为北京时间

趁一切还来得及【六】数据库MySQL读写分离与主主同步

相思相见知何日?此时此夜难为情.                                                      --[唐]李白 第一章 数据库MySQL主从复制读写分离授权 1.1 主从复制读写分离方案简单分析 ①数据库主从复制搭建之后,因为数据是单向的,因此默认规则就是所有的数据(主从相关收据)写入和更新都在主库上进行操作,避免主从同步的时候造成冲突. ②严格上来讲,从库上的非同步的库写入数据,只要和主库没有关系,也是可以写入的(或者作为主库),但是如果主从都想其中

MM(主主数据库)+keepalived主备高可用集群

博客分享的第一篇技术文章: 项目主要搭建:主主数据库高可用集群搭建. 数据库互为主备,应用技术:MM+keepalived 使用的是虚拟机搭建的实验向大家展示: 数据库1:192.168.4.7 数据库2:192.168.4.77 VIP:192.168.4.68 web1:192.168.4.69 web2:192.168.4.70 一.安装mysql,部署主主同步结构. 直接yum安装 配置主主同步: 由于主数据库192.168.4.7里面存放着数据,所以需要先导出数据,方法很多,我们采取m

趁一切还来得及【一】数据库MySQL基础知识及编译安装

此情更待成追忆,只是当时已惘然.                                        --[唐]李商隐 第一章 数据库概述及分类特点应用 1.1 数据库种类.语言处理.典型产品 ①数据库的理解:就是一个存放数据的仓库,这个仓库是按照一定的数据结构,来组织和存储的.可以通过数据库提供的多种方法来管理数据库. ②数据库的种类:按照早期的数据库理论分为层次数据库.网络式数据库.和关系型数据库.当今互联网最常用的就是关系型数据库和非关系型数据库(NOSQL). ③关系型数据库:

趁一切还来得及【五】数据库MySQL主从同步的实践部署

自笑栖迟淮海客,十年心事一灯前.                                           --[元]萨都拉 第二章 数据库MySQL主从同步部署操作实践 2.1 数据同步相关应用基础 ①MySQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的部署管理也就显得非常重要. ②MySQL主从同步的作用:(1) 数据分布,(2) 负载平衡(load balancing),(3) 备份,(4) 高可用性(high availability

数据库 : Mysql 1 - 日常应用

#登录MYSQL数据库 MYSQL -u root -p #显示所有数据库 SHOW databases; #显示当前数据库与应用程序间进行了多少条连接 SHOW processlist; #使用某一数据库 USE database; #显示所有表 SHOW tables; #表结构描述 describe DESC table; #筛选表数据 #选择哪些列 SELECT prod_name, prod_price #从哪个表选 FROM products #选择的列做出什么筛选匹配 WHERE

【传智播客郑州校区】数据库MYSQL笔记详解

第1章 数据库1.1 数据库概述l 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作.l 什么是数据库管理系统数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中表内的数据.l 常见的数据库管理系统MYSQL :开源

数据库mysql的常规操作

1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据进行新增.截取.更新.删除等操作. 严格来说,数据库是长期储存在计算机内.有组织的.可共享的数据集合.数据库中的数据指的是以一定的数据模型组织.描述和储存在一起.具有尽可能小的冗余度.较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享. 2.  为什么需要使用数据库? 假设这样一个场景,需

数据库MYSQL学习系列一

一.MYSQL数据库基础 1.1-认识MYSQL 什么是数据库   计算机处理和存储的一切信息都是数据 计算机系统中一种用于存取数据的程序 一种: 计算机系统中有很多种能够存取数据的程序 它们各有特征和长处,有自己的使用范围 存取: 能够保存数据避免丢失 能够按照需求找到符合条件的数据 为什么要使用数据库 数据库帮助我们解决一下数据存取难题: 较大数据量 网络控制 并发访问 高性能要求 事务控制 持久化和和数据安全 查询数据需求逻辑复制 数据库分类 关系型数据库 MYSQL Oracle SQL