確認 MySQL 啟動時間、運行時長,是排查意外重啟、升級窗口、故障時間線的基礎動作。本文整理三種查看方式:SQL 標準查詢、Linux 進程啟動時間、phpMyAdmin 視覺化介面,並提供換算公式與自動化建議。
mysql> SHOW GLOBAL STATUS LIKE 'Uptime';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime | 3661 |
+---------------+-------+
Value = 運行秒數。換算:
反推啟動時間:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP() - @@global.uptime) AS start_time;
-- 或高精度
SELECT DATE_SUB(NOW(6), INTERVAL @@global.uptime SECOND) AS start_time;
# 簡易版(顯示日期)
ps aux | grep mysqld
# mysql 12345 0.5 12.3 ... Oct15 12:34 /usr/sbin/mysqld ...
# 完整啟動時間
ps -eo pid,lstart,cmd | grep mysqld
# 12345 Sun Oct 15 08:30:12 2023 /usr/sbin/mysqld ...
優勢:即使 MySQL 掛了、無法登入,也能查到最後啟動時間;可見系統層面重啟(如 OOM Killer、系統重啟)。
登入 phpMyAdmin → 首頁/狀態標籤 → 顯示:
這台 MySQL 服務器已經運行了 0 天 6 小時 30 分 16 秒,啟動時間為 2014 年 01 月 02 日 08:39。
| 方法 | 精確度 | 自動化 | 依賴 | 適用場景 |
|---|---|---|---|---|
| SHOW GLOBAL STATUS | 秒級 | ✅ 極佳(Prometheus/Zabbix/腳本) | DB 連線 | 監控、日常巡檢、故障時間線 |
| ps 命令 | 秒級(進程) | ✅ 佳(SSH/Ansible) | 系統登入 | 服務異常、排查系統重啟、無 DB 連線時 |
| phpMyAdmin | 秒級 | ❌ | Web 介面 | 臨時查看、非技術人員、無 SSH 權限 |
MySQL 5.7+ performance_schema 記錄服務啟動各階段耗時:
SELECT EVENT_NAME, TIMER_START, TIMER_END, TIMER_WAIT
FROM performance_schema.events_stages_history_long
WHERE NESTING_EVENT_ID IS NULL
ORDER BY TIMER_START;
可見「初始化儲存引擎、載入插件、開啟端口、啟動複制線程」等詳細啟動流程耗時。
**日常運維用 SHOW GLOBAL STATUS LIKE 'Uptime' 接入監控體系**;故障現場無 DB 連線時用 ps -eo pid,lstart,cmd | grep mysqld;臨時人工查看用 phpMyAdmin。三者互補,構建完整的「啟動時間可觀測性」。