项目场景:
提示:这里简述项目相关背景:
通过mycat2连接的数据库集群,发现数据库时间不对,比真实事件晚了8个小时。由于关于mycat实际使用场景中资料比较少,这里记录一下。
问题描述
提示:这里描述项目中遇到的问题:
由于时间不对,造成数据查询的时候,某些数据查不到或者不正确,因此进行时间校准处理。
原因分析:
提示:这里填写问题的分析:
可以通过MySQL客户端连接mycat
mysql -u xxx -p -P8066
连接到mycat后,查询时间,可以使用MySQL的查询语句:
select sysdate();
因此,实际时间应该还是真实数据库的时间,检查发现真实节点数据库的时间也确实不对。
没尝试,是否可以直接通过mycat设置时区,我是一个节点一个节点,修改的时区,且修改时区,不会影响MySQL的主从配置。执行步骤和解决方法如下
解决方案:
提示:这里填写该问题的具体解决方案:
1、连接真实数据库shell终端,检查服务器时间
# 查看系统时间:
date
# 发现系统时区不对,通过下面命令修改系统时区
#centos7 系统设置时区:
timedatectl set-timezone Asia/Shanghai
#重新检查系统时间:
date
2、服务器系统时间校准正确之后,连接真实数据库节点,修改时区:
#MySQL设置时区:
#第一步:查看系统时区
show variables like "%time_zone%";
# 第二步:修改时区,并生效
# 修改系统时区
set global time_zone = '+08:00';
# 修改当前会话时区
set time_zone = '+8:00';
# 立马生效
flush privileges;
# 修改后再次查看
show variables like "%time_zone%";
# 第三步:修改后再查看系统时间显示
select sysdate();
3、通过上面的步骤依次校准所有节点的数据库时间
通过mycat查询时间(select sysdate();)
,发现时间依然不对,但是每个真实节点的时间是正确的,所有问题就出在mycat本身了。
解决方法很简单,重启即可:
/mycat/bin/mycat restart
再次查询,时间终于正确了。