014—(非常重要!)Mysql日誌管理

mysql日誌主要有以下幾種:

    錯誤日誌:log_error

    通用查詢日誌:general_log

    二進制日誌:binlog

    慢速查詢日誌:log_slow_queries

    中繼日誌:relay_log

    事務日誌:innodb_log

由於版本的不同,以下的目錄文件目錄也有所不同。

 

1、錯誤日誌


 【Windows下】       修改主配置文件my.ini

            [mysqld]

           Error-bin[=dir\[filename]]    

//dir:指定錯誤日誌的存儲路徑;filename:指定錯誤文件的文件名

 

刪除錯誤日誌:

Mysqladmin -u root -p flush-logs;

 

      【Linux下】

修改主配置文件my.cnf

            [mysqld]

            log-error=mysql_error.log(絕對路徑或若直接文件名則會存儲到數據目錄下)

            log_warnings={on|off|2}:將不將警告信息記錄日誌

                log_warnings表示警告信息是否記錄在錯誤日誌中,10也就是onoff表示記錄和不記錄,2則表示失敗拒絕的連接信息。

        在mysql服務器上查看錯誤日誌的配置:

            mysql> show global variables like '%log%';

 

2、通用查詢日誌(非常重要!!!)


        mysql所有查詢語句都會被記錄。

        默認關閉此項記錄,一般作調試用,平時開啓會記錄大量數據佔用磁盤空間。

        存儲位置:文件,表(tablemysql.general_log

        默認存儲在數據目錄下。

        Linux環境下,修改主配置文件my.cnf

            [mysqld]

            general_log={on|off}

            general_log_file=mysql_general.log (絕對路徑或若直接文件名則會存儲到數據目錄下)

            log_output={file|table|file,table|none}:日誌輸出類型

  

在不重啓MYSQL服務的情況下,操作通用查詢日誌:

 

mysql> set global general_log=on;   //開啓

 

mysql> set global general_log=off;   //關閉

 

mysql> mysqladmin -u root -p flush-logs   //刪除日誌(先刪除舊的,再創建一個新的)

 

 

3、二進制日誌(非常重要!!!)

        1》用於記錄引起數據改變或存在引起數據改變的潛在可能性的語句(statement)或改變後的結果(row),也可能是二者混合。

        2》包含了所有更新了的數據或者已經潛在更新了數據的所有語句,記錄了數據的更改以及數據更改的事件events和位置position

        3主要目的是在恢復時能夠最大可能地恢復數據庫,默認開啓的。

        4》Linux環境下,修改主配置文件my.cnf

            log_bin=/path/to/bin_log_file

                這是個只讀變量,表明存放日誌的目錄位置,不能在此處寫onoff,若不指定路徑會存儲在數據目錄下。

            max_binlog_size=1073741824:

                設置單個二進制文件的最大尺寸,以字節爲單位,超過此值大小就會自動滾動。

            sync_binlog={1|0|N}:

                表示每幾次事務提交後是否立即將內存中的二進制日誌同步到內存(binlog_cache)中。

                1表示立即提交;0則不提交;N可爲任意值,表示每N次;值不同對應的性能也不同,01的性能差別可高達5倍之多。寫入磁盤的操作是使用fdatasync()函數。

            binlog_format={statement|row|mixed}:

                binlog日誌存放的格式

            expire_logs_days=N:

                二進制日誌的有效天數

        

        5》可以用mysqlbinlog命令查看二進制日誌文件。

            mysqlbinlog:

                 yyyy-mm-dd hh:mm:ss

                 --start-datetime=

                 --stop-datetime=

                 -j, --start-position=#

                  --stop-position=#

                  --user, --host, --password

        8》在mysql中查看二進制

            查看二進制日誌文件列表:

                 mysql> show master|binary logs; 

            查看當前正在使用的二進制日誌文件:

                mysql> show master status;

            查看二進制日誌文件中的事件:

                mysql> show binlog events [in 'log_name'] [from pos] [limit [offset,] row_count]

            查看二進制日誌的參數配置

                MariaDB [(none)]> show global variables where variable_name like '%log_bin%' or variable_name like '%binlog%';

           

        9》清除二進制日誌

            清除所有日誌(不存在主從複製關係)

                mysql> reset master;

            清除指定日誌之前的所有日誌

                mysql> purge master logs to '日誌';

            清除某一時間點前的所有日誌

                mysql> purge master logs before '--日 時:分:秒';

            清除 天前的所有日誌

                mysql> purge master logs before current_date - interval 10 day;

            由於二進制日誌的重要性,請僅在確定不再需要將要被刪除的二進制文件,

            或者在已經對二進制日誌文件進行歸檔備份,

            或者已經進行數據庫備份的情況下,才進行刪除操作,且不要使用 rm 命令刪除。

            

        10》暫停二進制日誌

 

Set SQL_LOG_BIN=0;     //暫停二進制日誌

 

Set SQL_LOG_BIN=1;     //啓動二進制日誌

 

 

4、慢速查詢日誌(非常重要!!!)


        記錄所有執行時間超過long_query_time秒的sql語句,可用於找到執行時間長的查詢,以用於優化。

        默認未開啓,開啓優先級比查詢日誌高,默認是超過10的纔會被記錄。

        存儲位置:文件,表(tablemysql.slog_log

        Linux環境下,修改主配置文件/etc/my.cnf,在[mysqld]下添加“long_query_time”和“log-slow-queries=文件路徑名”,重啓mysqld服務。

            log_slow_queries={on|off}:是否開啓慢查詢日誌(5.5以前)

            slow_query_log={on|off}:是否開啓慢查詢日誌(和上面沒有區別,5.6以後)

            slow_query_log_file=xxxx-slom.log:慢查詢日誌存放位置,默認爲“主機名-slow.log”。相對路徑的話,默認爲數據目錄下。

            log_output={file|table|file,table|none}:表示存放日誌的方式

            log_query_time=N :表示多長時間的查詢被認爲慢查詢,默認爲10秒。   

        mysql自帶了對慢查詢日誌的統計分析工具:mysqldumpslow

        

    操作慢查詢日誌:

mysql> set global slow_query_log=on;      //開啓慢查詢日誌

 

mysql> set global slow_query_log=off;      //關閉慢查詢日誌

 

刪除慢查詢日誌:直接刪除慢查詢日誌文件,通過mysqladmin -u root -p flush-logs重新生成一個新的慢查詢日誌。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章