確認 MySQL 服務啟動時間、運行時長,是運維排查重啟、升級、故障恢復時間線的基礎動作。本文介紹三種查看方式:SQL 查詢 Uptime、Linux 進程啟動時間、phpMyAdmin 狀態頁,並說明各自優缺點與適用場景。
SHOW GLOBAL STATUS LIKE 'Uptime';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime | 3661 |
+---------------+-------+
Value 為**秒數**。換算:
優點:精確、無需系統權限、可納入監控腳本(Zabbix/Prometheus/自研)。
ps aux | grep mysqld
# 輸出範例
mysql 12345 0.5 12.3 4567890 123456 ? Sl Oct15 12:34 /usr/sbin/mysqld --daemonize ...
Oct15 表示進程於 10 月 15 日啟動(若超過一年會顯示年份)。結合 ps -eo pid,lstart,cmd | grep mysqld 可見完整啟動時間:
ps -eo pid,lstart,cmd | grep mysqld
# 12345 Sun Oct 15 08:30:12 2023 /usr/sbin/mysqld ...
優點:不依賴 MySQL 服務存活(即使掛了也能查到最後啟動時間)、可見系統層面重啟紀錄。
登入 phpMyAdmin → 首頁/狀態標籤 → 「這台 MySQL 服務器已經運行了 X 天 Y 小時 Z 分 W 秒,啟動時間為 YYYY-MM-DD HH:MM:SS」。
優點:直觀、人類可讀、無需記指令。
缺點:需安裝 phpMyAdmin、需網頁訪問權限、不適合自動化。
MySQL 無內建「啟動時間」變數,但可反推:
SELECT DATE_SUB(NOW(), INTERVAL (SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME='Uptime') SECOND) AS start_time;
-- 或簡易版(秒數較小誤差可忽略)
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP() - @@global.uptime) AS start_time;
| 方法 | 精確度 | 自動化友好 | 需求權限 | 適用場景 |
|---|---|---|---|---|
| SHOW GLOBAL STATUS | 秒級 | ✅ 極佳 | DB 連線權限 | 監控、腳本、日常運維 |
| ps 命令 | 秒級(進程啟動) | ✅ 佳 | SSH/系統登入 | 服務掛了、排查系統重啟 |
| phpMyAdmin | 秒級 | ❌ | Web 介面權限 | 臨時查看、非技術人員 |