根据MySQL文档,全局变量Uptime定义为" 服务器启动的秒数。"。
但是,有人可以向我解释这个值实际上是计算的吗?什么用作参考,系统时间?
我问这个问题是因为我遇到了一个奇怪的情况:当用MySQL重启虚拟机时,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来修复时间之后,似乎Uptime已经转移了:
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 |
+---------------------------+-------+
这种行为是否可行,或者可能与其他因素有关?
感谢您的耐心和理解。
答案 0 :(得分:0)
应该很简单。应用程序将从启动时创建时间戳,并将其与当前时间进行比较。这些时间是从系统时间给出的。
因此,如果您修改系统时间,则不会调整初始时间戳。它会将时间变化视为当前时间并将其作为其比较进行中继。