在我的机器上,我有一个服务来同步系统时间(包括时区),并且希望DB偶尔与机器时间同步。
当我更改系统时间时,MySQL一直给我使用CURRENT_TIMESTAMP时的旧时间,只有当我重新启动MySQL服务时,它才会同步。
我想问:通过更新某个系统变量或其他任何东西,是否可以将DB时间设置为等于系统时间或任何其他时间,而无需重新启动服务?
我根本不想阻止DB。我认为,也许可以设置一个偶尔运行的侦察任务,但它应该做什么呢?
要接受答案,它必须通过以下测试:
# 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‘用户,第一次和最后一次选择都给了我相同的非同步结果。
例如,请参阅以下图片:

System time = 2:07
CURRENT_TIMESTAMP = 11:37发布于 2017-10-26 09:52:20
这个解决方案对我有效,我希望它也能对你有效:
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特权来在运行时设置此配置值,以避免系统重新启动。
https://dba.stackexchange.com/questions/189368
复制相似问题