圖文結合帶你搞懂MySQL日誌之Error Log(錯誤日誌)

来源:https://www.cnblogs.com/greatsql/archive/2022/12/22/16999319.html
-Advertisement-
Play Games

GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:KAiTO 文章來源:社區原創 往期回顧: 圖文結合帶你搞懂MySQL日誌之Redo Log(重做日誌) 圖文結合帶你搞懂InnoDB MVCC ...


  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。
  • GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。
  • 作者:KAiTO
  • 文章來源:社區原創

往期回顧:


什麼是錯誤日誌

錯誤日誌(Error Log) 是 MySQL 中最常用的一種日誌,主要記錄 MySQL 伺服器啟動和停止過程中的信息、伺服器在運行過程中發生的故障和異常情況等。

錯誤日誌記錄了啥

錯誤日誌包含 mysqld 啟動和關閉的時間信息,還包含診斷消息,如伺服器啟動和關閉期間以及伺服器運行時出現的錯誤、警告和其他需要註意的信息。

例如:如果 mysqld 檢測到某個表需要檢查或修複,會寫入錯誤日誌。

根據錯誤日誌配置,錯誤消息還可能填充 performance_schema.error_log 表,以便為日誌提供 SQL 介面,使錯誤日誌能夠查詢。

如果用 mysqld_safe 啟動 mysqld,mysqld_safe 會將消息寫入錯誤日誌。

例如,當 mysqld_safe 註意到 mysqld 異常退出時,它會重新啟動 mysqld,並將 mysqld 重新啟動的消息寫入錯誤日誌。

怎麼啟動錯誤日誌

在MySQL資料庫中,錯誤日誌功能是預設開啟的。而且,錯誤日誌無法被禁止。

預設情況下,錯誤日誌存儲在MySQL資料庫的數據文件夾下,名稱預設為mysqld.log(Linux系統)或hostname.err(mac系統)。如果需要制定文件名,則需要在my.cnf或者my.ini中做如下配置:

[mysqld]
log-error=[path/[filename]] #path為日誌文件所在的目錄路徑,filename為日誌文件名

修改配置項後,需要重啟 MySQL 服務以生效。

查看日誌

MySQL錯誤日誌是以文本文件形式存儲的,可以使用文本編輯器直接查看。
查詢錯誤日誌的存儲路徑:

mysql> show variables like 'log_err%';
+----------------------------+----------------------------------------+
| Variable_name              | Value                                  |
+----------------------------+----------------------------------------+
| log_error                  | /var/log/mysqld.log                    |
| log_error_services         | log_filter_internal; log_sink_internal |
| log_error_suppression_list |                                        |
| log_error_verbosity        | 2                                      |
+----------------------------+----------------------------------------+
4 rows in set (0.00 sec)

參數解析

  • log_error 定義為錯誤日誌文件路徑。
  • log_error_services 控制哪個日誌組件啟用錯誤日誌,該變數可以包含具有0、1或多組件列表;在後一種情況下,組件可以用分號或(從MySQL 8.0.12開始)逗號分隔,另外伺服器按照列出的順序執行組件。
    預設情況下,log_error_services 具有以下值:
mysql> SELECT @@GLOBAL.log_error_services;
+----------------------------------------+
| @@GLOBAL.log_error_services            |
+----------------------------------------+
| log_filter_internal; log_sink_internal |
+----------------------------------------+
1 row in set (0.00 sec)
  • log_error_suppression_list 用於錯誤日誌的事件的抑製作用,有些日誌不希望記錄下來。
  • log_error_verbosity日誌記錄等級:
log_error_verbosity Value Permitted Message Priorities
1 ERROR
2 ERROR, WARNING
3 ERROR, WARNING, INFORMATION
  • 在MGR中建議設置為3可以記錄更多日誌信息,便於跟蹤問題。

log_timestamps控制日誌顯示時間

在MySQL 5.7.2 新增了 log_timestamps 這個參數,該參數主要是控制 error loggenera log,等等記錄日誌的顯示時間參數。
在 5.7.2 之後改參數為預設 UTC 這樣會導致日誌中記錄的時間比中國這邊的慢,導致查看日誌不方便。

mysql> SHOW GLOBAL VARIABLES LIKE 'log_timestamps';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| log_timestamps | UTC   |
+----------------+-------+
1 row in set (0.00 sec)

可以看到使用的時間是UTC時間,UTC是世界公用的一個時間,那麼我們本地時間和UTC時間就必然存在一個換算關係。按北京時間來算,北京時間將比UTC時間快8個小時

修改方法:

  • MySQL5.7修改
1.set global log_timestamps=system;
2.修改後可以在配置文件再添加
  [mysqld]
  log_timestamps=system
  • MySQL8.0修改
1.set global log_timestamps=system;
  • 小節結論
    1.為了國內用戶便於讀取日誌信息,建議將參數寫入到配置文件my.cnf
    2.MySQL 8.0支持參數log_timestamps持久化設置。

刪除\刷新日誌

對於很久以前的錯誤日誌,資料庫管理員查看這些錯誤日誌的可能性不大,可以將這些錯誤日誌刪除,以保證 MySQL 伺服器上的硬碟空間。MySQL 的錯誤日誌是以文本文件的形式存儲在文件系統中的,可以直接刪除。

#刷新日誌
[root@kaito log]# mysqladmin -uroot -p flush-logs
Enter password:
mysqladmin: refresh failed; error: 'Could not open file '/var/log/mysqld.log' for error logging.'

官網提示:

file

補充操作:

install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log

·flush-logs·指令操作:

  • MySQL5.5.7以前的版本,flush-logs將錯誤日誌文件重命名為filename.err_old,並創建新的日誌文件。
  • 從MySQL5.5.7開始,flush-logs只是重新打開日誌文件,並不做日誌備份和創建的操作。
  • 如果日誌文件不存在,MySQL啟動或者執行flush-logs時會自動創建新的日誌文件。重新創建錯誤日誌,大小為0位元組。

參考文章

《MySQL是怎樣運行的--從根兒上理解MySQL》—小孩子4919


Enjoy GreatSQL

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JZ49 醜數 題目 我們先看到題目,把只包含質因數2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因數7。 習慣上我們把1當做是第一個醜數。 方法1:質因數分解(暴力) 思路 演算法實現 一個很朴素的做法 從1~n每次+1,一直枚舉,直到找到地N個醜數為 ...
  • 研發少閑月,九月人倍忙。又到了一年一度的“金九銀十”秋招季,又到了寫簡歷的時節,如果你還在用傳統的Word文檔尋找模板,然後默默耕耘,顯然就有些落後於時代了,本次我們嘗試使用雲平臺flowcv高效打造一份巧如範金、精比琢玉的高品質Golang技術簡歷。 首先來到雲平臺:flowcv.com 點擊 t ...
  • 整理 | 鄭麗媛,出品 | CSDN(ID:CSDNnews) 在近幾年的大環境影響下,線上筆試/面試愈發流行,這也給了部分人“鑽空子”的機會——除了筆試作弊(上網搜代碼),現在連面試都能找“替身”作弊了。 下麵,就例舉幾個真實發生的事件。 面試的人≠入職的人 最近,美國紐約州一家機構的 IT 部門 ...
  • 一、前言 程式猿為什麼如此執著於造輪子?MyBatis-Plus如此強大的工具流行這麼多年了,我為啥還在重覆造這樣的輪子? 1、公司的技術規範不允許使用MyBatis-Plus,咱也不知道什麼原因; 3、以前使用SpringDataJpa慣了,今年第一次用MyBatis,必須把它打造成我想要的樣子; ...
  • 繼我關註很久一位編程的大牛發佈了他的那篇文章——<探究:普通人都是怎麼入門編程>https://www.cnblogs.com/liuyangfirst/p/16991386.html我先去再相關評論里看到了有人說這是AI寫的一樣,不過我對這篇文章的作者稍微有些瞭解,可能就是他寫的,因為有時候你看不 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是恩智浦全系列MCU(包含Kinetis, LPC, i.MXRT, MCX)的GPIO電平中斷設計差異。 在痞子衡舊文 《以i.MXRT1xxx的GPIO模塊為例談談中斷處理函數(IRQHandler)的標準流程》里,痞子衡主要介紹得是 ...
  • 初識 Linux Shell 本書學習的第一步,就是要找到 Linux 終端的所在位置。目前較常見的圖形化終端有 Konsole、Gnome terminal、xterm 等幾種。一般安裝後在各個發行版的菜單中搜索即可找到。Gnome terminal 和 Konsole 基本是當前各大流行 Lin ...
  • 說明 基於微服務項目,產生的的多項目倉庫管理腳本。可直接保存 shell 腳本後酌情修改後試用 目錄結構 xxxx Xxx1Api/ Xxx2Api/ git_clone_api.sh git_branch_dev.sh git_pull_all.sh git_status.sh api-build ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...