0

MySQL Documentation によると、グローバル変数 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 に答える