Mysql

獲取 MySQL 啟動和關閉時間

  • October 19, 2019

如何在MySQL 5.7中編寫一個在數據庫啟動關閉之前更新表的觸發器?

有什麼對我們有幫助的建議嗎?

啟動時間

對於所有執行 MySQL 5.7 的人

SELECT NOW() - INTERVAL variable_value SECOND MySQL_Started
FROM performance_schema.global_status
WHERE variable_name='Uptime';

對於任何執行 MySQL 5.6 及之前版本或MySQL 5.6 兼容模式下的 MySQL 5.7 的使用者

SELECT NOW() - INTERVAL variable_value SECOND MySQL_Started
FROM information_schema.global_status
WHERE variable_name='Uptime';

三 (3) 天前剛剛提到過這個(讓 MySQL 在每次啟動時列印一個時間戳

停機時間

獲取關機時間的四種方法

方法#1:搜尋錯誤日誌

如果呼叫了錯誤日誌error.log,請執行此

grep "Shutdown complete$" error.log | tail -1 | awk '{print $1,$2}'

這將產生日期 ( YYMMDD) 和時間 ( HH:MM:SS)

方法 #2:InnoDB 緩衝池

如果您配置了innodb_buffer_pool_dump_at_shutdown,請查找已寫入文件的時間戳。預設文件ib_buffer_pool名是. 前面提到過Dec 06, 2017Control InnoDB buffer pool allocation in MySQL (5.7+).Since) ib_buffer_pool通常寫在文件夾 set bydatadir中,關機後可以執行以下命令:

cd /var/lib/mysql
ls -l --time-style=+"%Y-%m-%d %H:%M:%S" ib_buffer_pool | awk '{print $6,$7}'

方法#3:二進制日誌

如果mysql啟用了二進制日誌,則獲取關閉後最後一個二進制日誌的時間戳。

方法#4:錯誤日誌

您可能會說,“我不想查看錯誤日誌!!!”

你不必。只需在關機完成後獲取錯誤日誌的時間戳即可。

關機警告

如果 mysqld 崩潰,方法 #1 對您沒有任何好處。

其他三 (3) 種方法將簡單地告訴您 mysqld 上次執行任何類型的寫入,無論是完全關閉還是崩潰。

您的實際問題

首先,不需要觸發器,也不會在關機時觸發。

當 mysqld 關閉時,您不能將關閉時間寫入表。

我可以建議的最好方法是使用上述四 (4) 種方法之一擷取關閉日期時間並將其寫入腳本。您可以按如下方式執行該腳本:

創建一個名為/var/lib/mysql/startup_stuff.sql

chown mysql:mysql /var/lib/mysql/startup_stuff.sql

以將日期時間寫入表的方式在該腳本中寫入

將此行添加到(請參閱有關init-file 的/etc/my.cnfMySQL 文件)

init-file=`/var/lib/mysql/startup_stuff.sql

使用啟動mysqlservice mysqld start

“之前”啟動——嗯,TRIGGERs顯然不能在MySQL執行之前執行。

關機前——好吧,如果伺服器崩潰(由於錯誤或電源故障),則無法啟動任何程式碼。

在任何時候,您都可以通過NOW()從啟動中獲取並減去秒數來獲得“啟動”時間: SHOW STATUS LIKE 'Uptime';.

mysql> SELECT NOW() - INTERVAL variable_value SECOND
               FROM information_schema.GLOBAL_STATUS
               WHERE variable_name = 'Uptime';
+----------------------------------------+
| NOW() - INTERVAL variable_value SECOND |
+----------------------------------------+
| 2018-03-21 05:36:50.000000             |
+----------------------------------------+
1 row in set (0.00 sec)

(您的標題和描述提出了不同的問題!)

引用自:https://dba.stackexchange.com/questions/201759