首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不重新启动mysql的情况下同步mysql的时间和系统时间?

如何在不重新启动mysql的情况下同步mysql的时间和系统时间?
EN

Database Administration用户
提问于 2017-10-26 09:35:52
回答 2查看 11.8K关注 0票数 2

在我的机器上,我有一个服务来同步系统时间(包括时区),并且希望DB偶尔与机器时间同步。

当我更改系统时间时,MySQL一直给我使用CURRENT_TIMESTAMP时的旧时间,只有当我重新启动MySQL服务时,它才会同步。

我想问:通过更新某个系统变量或其他任何东西,是否可以将DB时间设置为等于系统时间或任何其他时间,而无需重新启动服务?

我根本不想阻止DB。我认为,也许可以设置一个偶尔运行的侦察任务,但它应该做什么呢?

要接受答案,它必须通过以下测试:

代码语言:javascript
复制
# change system time, date or timezone on the machine
select CURRENT_TIMESTAMP from dual; #--still show old time
call sync_time; #or some sync date + time + timezone commands... 
select CURRENT_TIMESTAMP from dual; #--will show updated time

我只需要sync_time过程,这将导致最后的选择显示机器的日期和本地时间。

@rathishDBA回答根本没有帮助,它只改变了MySQL变量,而不是同步DB时间。我试过作为'root‘用户,第一次和最后一次选择都给了我相同的非同步结果。

例如,请参阅以下图片:

代码语言:javascript
复制
System time = 2:07
CURRENT_TIMESTAMP = 11:37
EN

回答 2

Database Administration用户

发布于 2017-10-26 09:52:20

这个解决方案对我有效,我希望它也能对你有效:

代码语言:javascript
复制
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-10-26 15:13:16 |
+---------------------+
1 row in set (0.07 sec)

mysql> SET GLOBAL time_zone = 'SYSTEM';
Query OK, 0 rows affected (0.07 sec)

mysql> show global variables like '%time_zone%';
+------------------+---------------------+
| Variable_name    | Value               |
+------------------+---------------------+
| system_time_zone | India Standard Time |
| time_zone        | SYSTEM              |
+------------------+---------------------+
2 rows in set (0.18 sec)

mysql>

您需要SUPER特权来在运行时设置此配置值,以避免系统重新启动。

票数 1
EN

Database Administration用户

发布于 2017-10-29 09:05:17

我不确定我是否理解这个问题;您是正确的,您只能在启动时设置时区,但是如果您设置了SYSTEM,那么这意味着任何后续的获取时间的调用都将仅仅是被传递给操作系统。因此,如果您看到MySQL中的时间没有改变,那么无论您在操作系统中做什么来改变它,它都不会在这个级别上应用。

一个快速的浏览源代码显示对gettimeofday()的调用以获得系统时间。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/189368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档