<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MySQL中的日志文件 你全都了解嗎?

          共 8363字,需瀏覽 17分鐘

           ·

          2021-04-22 01:39

          簡(jiǎn)介

          該篇文章對(duì)MySQL中的日志進(jìn)行總結(jié)與簡(jiǎn)單介紹,不會(huì)涉及的太深。主要的目的是為了對(duì)MySQL中的日志文件有一個(gè)體系化的了解。后面會(huì)對(duì)每一種日志文件做具體的分析與總結(jié)。

          日志分類

          MySQL中的日志文件,配置文件、錯(cuò)誤日志文件、二進(jìn)制文件(binary log)、慢查詢?nèi)罩?slow-query-log)、全量日志(genera log)、審計(jì)日志(audit log)、數(shù)據(jù)庫(kù)文件&數(shù)據(jù)表文件、存儲(chǔ)引擎文件、中繼日志(relay log)、進(jìn)程文件(PID)和Socket文件。

          Snipaste_2021-04-20_16-55-53

          參數(shù)文件

          參數(shù)文件就是MySQL中的配置文件,在Linux下的my.cnf文件、Windows下的my.ini文件。文件內(nèi)容主要分為server和client兩個(gè)模塊。server模塊配置的是有關(guān)MySQL的服務(wù)信息,例如慢查詢?nèi)罩尽lient模塊配置的是有關(guān)MySQL客戶端連接信息,例如客戶端連接的端口號(hào)。文件格式大致如下:

          [client]
          port = 3306
          default-character-set = utf8mb4

          [mysqld]
          user = mysql
          port = 3306
          sql_mode = ""
          default-storage-engine = InnoDB
          default-authentication-plugin = mysql_native_password
          character-set-server = utf8mb4
          collation-server = utf8mb4_unicode_ci
          init_connect = 'SET NAMES utf8mb4'
          slow_query_log
          long_query_time = 3
          slow-query-log-file = /var/lib/mysql/mysql.slow.log
          log-error = /var/lib/mysql/mysql.error.log
          default-time-zone = '+8:00'

          錯(cuò)誤日志文件

          錯(cuò)誤日志文件記錄了MySQL從啟動(dòng)、運(yùn)行和關(guān)閉幾個(gè)環(huán)節(jié)中的日志信息。例如連接MySQL連接失敗、查詢命令錯(cuò)誤、SQL執(zhí)行流程等等。對(duì)于定位MySQL錯(cuò)誤有著很大的幫助。文件大致內(nèi)容如下:

          Version: '5.7.28-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
          2021-04-17T21:23:00.865868Z 3 [Note] Aborted connection 3 to db: 'exam_wechat' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)
          2021-04-17T21:23:00.865969Z 2 [Note] Aborted connection 2 to db: 'exam_wechat' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)
          2021-04-19T22:33:24.137143Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 18415ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
          2021-04-20T07:03:21.765208Z 79 [Note] Access denied for user 'root'@'172.18.0.1' (using password: NO)
          2021-04-20T07:03:23.825044Z 81 [Note] Aborted connection 81 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got an error reading communication packets)
          2021-04-20T07:14:25.033983Z 82 [Note] Access denied for user 'root'@'172.18.0.1' (using password: NO)
          2021-04-20T07:14:27.442608Z 84 [Note] Aborted connection 84 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got an error reading communication packets)
          2021-04-20T07:27:13.971644Z 83 [Note] Aborted connection 83 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)
          2021-04-20T07:41:02.916249Z 85 [Note] Aborted connection 85 to db: 'unconnected' user: 'root' host: '172.18.0.1' (Got timeout reading communication packets)

          如何開始錯(cuò)誤日志。只要在MySQL中的配置文件中配置意向log_error即可。

          mysql [email protected]:(none)> show variables like '%log_error%';
          +---------------------+--------------------------------+
          | Variable_name | Value |
          +---------------------+--------------------------------+
          | binlog_error_action | ABORT_SERVER |
          | log_error | /var/lib/mysql/mysql.error.log |
          | log_error_verbosity | 3 |
          +---------------------+--------------------------------+
          3 rows in set
          Time: 0.010s

          全量日志文件

          全量日志文件記錄的是MySQL所有的SQL操作日志記錄。例如增刪改查等操作都會(huì)被記錄下來。

          mmysql [email protected]:(none)> show variables like '%general%';
          Reconnecting...
          +------------------+---------------------------------+
          | Variable_name | Value |
          +------------------+---------------------------------+
          | general_log | OFF |
          | general_log_file | /var/lib/mysql/7fdc5f723ff9.log |
          +------------------+---------------------------------+

          配置項(xiàng)有三種值,table,none和file。配置file則會(huì)記錄在日志文件中,配置none則不會(huì)記錄,配置table則會(huì)在MySQL默認(rèn)的MySQL數(shù)據(jù)中創(chuàng)建一張表(表名叫做general-log)來記錄日志。

          不推薦開啟,記錄的日志文件太多,不僅僅有性能消耗同時(shí)也占用太多無效空間。

          # 日志記錄文件格式
          mysqld, Version: 5.7.28-log (MySQL Community Server (GPL)). started with:
          Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock
          Time Id Command Argument
          2021-04-20T09:16:48.572888Z 88 Connect [email protected] on using TCP/IP
          2021-04-20T09:16:48.574591Z 88 Connect Access denied for user 'root'@'172.18.0.1' (using password: NO)
          2021-04-20T09:16:50.325379Z 89 Connect [email protected] on using TCP/IP
          2021-04-20T09:16:50.329894Z 89 Query select connection_id()
          2021-04-20T09:16:50.335222Z 89 Query SELECT @@VERSION
          2021-04-20T09:16:50.339432Z 90 Connect [email protected] on using TCP/IP
          2021-04-20T09:16:50.339621Z 89 Query SELECT @@VERSION_COMMENT
          2021-04-20T09:16:50.343525Z 90 Query select connection_id()
          2021-04-20T09:16:50.347115Z 90 Query SHOW DATABASES
          2021-04-20T09:16:50.380236Z 90 Query select TABLE_NAME, COLUMN_NAME from information_schema.columns
          where table_schema = 'None'
          order by table_name,ordinal_position
          2021-04-20T09:16:50.391019Z 90 Query SELECT CONCAT("'", user, "'@'",host,"'") FROM mysql.user
          2021-04-20T09:16:50.415062Z 90 Query SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES
          WHERE ROUTINE_TYPE="FUNCTION" AND ROUTINE_SCHEMA = "None"
          2021-04-20T09:16:50.432015Z 90 Query SELECT name from mysql.help_topic WHERE name like "SHOW %"
          2021-04-20T09:16:52.572608Z 89 Query show variables like '%general%'
          2021-04-20T09:17:13.532046Z 89 Query show variables like '%general%'

          慢查詢?nèi)罩?/span>

          慢查詢?nèi)罩臼嵌ㄎ籗QL語句查詢快與慢而記錄的一種日志文件。當(dāng)某一條SQL語句查詢時(shí)間超過一個(gè)固定的閾值,這條SQL語句將被定義為慢查詢的SQL語句,被記錄在慢查詢?nèi)罩疚募小?/p>

          慢查詢的配置主要有如下三個(gè)參數(shù)。

          是否開啟慢查詢與慢查詢?nèi)罩疚募?/p>

          mysql [email protected]:(none)> show variables like '%slow%';
          +---------------------------+-------------------------------+
          | Variable_name | Value |
          +---------------------------+-------------------------------+
          | slow_query_log | ON |
          | slow_query_log_file | /var/lib/mysql/mysql.slow.log |
          +---------------------------+-------------------------------+
          5 rows in set
          Time: 0.014s

          慢查詢時(shí)間閾值。

          mysql [email protected]:(none)> show variables like '%long_query_time%';
          +-----------------+----------+
          | Variable_name | Value |
          +-----------------+----------+
          | long_query_time | 3.000000 |
          +-----------------+----------+
          1 row in set
          Time: 0.013

          二進(jìn)制日志文件

          二進(jìn)制日志(binary log)文件用于記錄MySQL的DML語句,記錄了操作之后的物理日志內(nèi)容,不會(huì)記錄MySQL中的select、show等語句。二進(jìn)制日志文件主要的作用如下:

          1. 用戶主從復(fù)制,主服務(wù)器將二進(jìn)制文件中的物理日志發(fā)送給從服務(wù)器,從服務(wù)器在將日志寫入到自身。

          2. 用于數(shù)據(jù)恢復(fù)。根據(jù)物理日志,找回?cái)?shù)據(jù)丟失之前的操作日志。

          可以通過如下幾個(gè)參數(shù)進(jìn)行配置:

          mysql [email protected]:(none)> show variables like '%log_bin%';
          Reconnecting...
          +---------------------------------+--------------------------------+
          | Variable_name | Value |
          +---------------------------------+--------------------------------+
          | log_bin | ON |
          | log_bin_basename | /var/lib/mysql/mysql-bin |
          | log_bin_index | /var/lib/mysql/mysql-bin.index |
          +---------------------------------+--------------------------------+
          6 rows in set
          Time: 0.015s

          log_bin是否開啟二進(jìn)制日志文件,log_bin_basename存儲(chǔ)的目錄以及日志文件前綴,log_bin_index存儲(chǔ)日志文件索引(日志文件名稱)。如果日志文件沒有指定文件名稱,則默認(rèn)使用本機(jī)名稱。

          日志文件列表。

          -rw-r-----   1 mysql root       154 Apr 12 09:31 mysql-bin.000041
          -rw-r----- 1 mysql root 154 Apr 12 19:45 mysql-bin.000042
          -rw-r----- 1 mysql root 1459325 Apr 17 20:26 mysql-bin.000043
          -rw-r----- 1 mysql mysql 24576 Apr 17 22:18 mysql-bin.000044
          # cat mysql-bin.index
          ./mysql-bin.000001
          ./mysql-bin.000002
          ./mysql-bin.000003
          ./mysql-bin.000004
          ./mysql-bin.000005
          ./mysql-bin.000006

          審計(jì)日志

          審計(jì)日志用來記錄MySQL的網(wǎng)絡(luò)活動(dòng),對(duì)MySQL的操作記錄做統(tǒng)計(jì)、分析與報(bào)告等。屬于對(duì)MySQL安全監(jiān)控記錄類的日志文件。

          MySQL自身不包含該功能的,并且該功能在MySQL官網(wǎng)也是收費(fèi)的。這里也不做具體的演示。

          中繼日志

          中繼日志是MySQL主從復(fù)制,在從服務(wù)器上的一個(gè)重要角色。當(dāng)主服務(wù)器將二進(jìn)制文件發(fā)送給從服務(wù)器時(shí),從服務(wù)器不會(huì)立馬執(zhí)行,而是放在一個(gè)指定的一類日志文件中,從服務(wù)器在開啟一個(gè)SQL線程去讀取中繼日志文件內(nèi)容并寫入到自身數(shù)據(jù)中。

          PID文件

          PID是一個(gè)MySQL實(shí)例的進(jìn)程文件號(hào)。MySQL屬于單進(jìn)程服務(wù),在啟動(dòng)一個(gè)MySQL實(shí)例,就會(huì)創(chuàng)建一個(gè)PID文件。

          Socket文件

          Socket也是MySQL通信的一種方式。MySQL通信有兩種方式,TCP和Socket方式。TCP是走網(wǎng)絡(luò)通信,可以將服務(wù)部署到任意可以訪問的服務(wù)器上。Socket是走的文件通信方式,必須在同一臺(tái)服務(wù)器上。

          # TCP模式
          mysql -hxxxx -pxxxx -uxxxx -Pxxx
          mysql -uxxxx -pxxxx -s /path/socket

          數(shù)據(jù)庫(kù)與表

          數(shù)據(jù)庫(kù)與表值的就是MySQL中的表結(jié)構(gòu)文件、數(shù)據(jù)文件和索引文件。InnoDB存儲(chǔ)引擎的數(shù)據(jù)表結(jié)構(gòu)

          -rw-r-----  1 mysql root   13650 Apr 13 09:46 wechat_user.frm
          -rw-r----- 1 mysql mysql 98304 Apr 17 13:43 wechat_user.ibd

          MyISAM存儲(chǔ)引擎的數(shù)據(jù)表結(jié)構(gòu)

          -rw-r-----  1 mysql mysql      0 Apr 20 17:53 users.MYD
          -rw-r----- 1 mysql mysql 1024 Apr 20 17:53 users.MYI
          -rw-r----- 1 root root 8586 Apr 20 17:53 users.frm

          存儲(chǔ)引擎文件

          不同的存儲(chǔ)引擎,實(shí)現(xiàn)起來也不同。InnoDB存儲(chǔ)引擎分為redolog和undolog兩種日志文件。

          發(fā)現(xiàn)好物

          這只一個(gè)非常不錯(cuò)的生活類微信小程序。

          推薦閱讀

          MySQL函數(shù)sum使用場(chǎng)景解讀

          全面分析與總結(jié) MySQL 事務(wù)中那些事兒

          玩轉(zhuǎn)dnmp之MySQL實(shí)現(xiàn)主從復(fù)制操作



          瀏覽 146
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  微拍福利手机在线 | 日韩AV一区二区三区四区 | 啪啪啪网站大全 | 99日韩在线 | 欧美一级黄色片 |