0

根据 MySQL 文档,全局变量 Uptime 定义为“服务器已启动的秒数。 ”。

但是,有人可以向我解释一下这个值是如何计算的吗?它使用什么作为参考,系统时间?

我问这个问题是因为我遇到了一个奇怪的情况:当使用 MySQL 重新启动 VM 时,ntpd 服务终止,并且在启动时(因为不在 chkconfig 上),时间转移了 +8 小时,如您所见下列的 :

15:01:00 hostname shutdown[30383]: shutting down for system reboot
15:01:00 hostname init: Switching to runlevel: 6
...
15:01:06 hostname ntpd[27553]: ntpd exiting on signal 15
15:01:06 hostname syslog-ng[27399]: Termination requested via signal, terminating;
...
23:04:03 hostname kernel: Bootdata ok 

MySQL 错误日志中记录了相同的转变:

15:01:03  InnoDB: Starting shutdown...
15:01:05  InnoDB: Shutdown completed; log sequence number 2746293826
15:01:06 [Note] /usr/sbin/mysqld: Shutdown complete          

15:01:06 mysqld_safe mysqld from pid file /var/lib/mysql/data/hostname.pid ended
23:04:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql/data

在我们通过启动 ntpd 来确定时间之后,正常运行时间似乎发生了变化:

mysql> show global status like 'Uptime';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 18005 |
+---------------+-------+

1 row in set (0.00 sec)

mysql> show global status like 'Uptime_since_flush_status';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| Uptime_since_flush_status | 18007 |
+---------------------------+-------+

这种行为是否可能,或者可能与其他因素有关?

感谢您的耐心和理解。

4

1 回答 1

0

应该很简单。应用程序将从启动时创建一个时间戳,并将其与当前时间进行比较。这些时间是从系统时间给出的。

所以如果你修改系统时间,它不会调整初始时间戳。它将时间变化视为当前时间,并将其作为比较。

于 2014-05-28T16:17:44.713 回答