mariadb-日誌

mariadb日誌

mariadb日誌:
    1、查詢日誌:query log;
    2、慢查詢日誌:slow query log
    3、錯誤日誌:error log
    4、二進制日誌:binary log
    5、中繼日誌:reley log
    6、事務日誌:transaction log

查詢日誌

    記錄查詢操作:
            文件:file
             表:   table

        general_log=ON|OFF
        general_log_file=HOSTNAME.log   # 使用相對路徑,存儲在定義的mysql數據存放路徑下
        log_output=TABLE|FILE|NONE

        不記錄日誌的方式有兩種:
            1、general_log=off不會記錄
            2、general_log=on但把log_output=NONE也不會記錄日誌

        查詢日誌一般是不開啓,額外會產生太多的壓力,而且更重要的是查詢語句並非每一個都有記錄下來的價值

慢查詢日誌

    指的是查詢時長超出指定時長的查詢操作:
            不是所有的慢查詢,都是因爲查詢語句自行真正執行太慢而導致,而是查詢操作所依賴的表被其它語句鎖定導致當前語句被阻塞,儘管如此依然判定這是個慢查詢

        slow_query_log=ON|OFF
        slow_query_log_file=HOSTNAME-slow.log

        log_slow_filter     # 慢查詢日誌過濾器
        admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk

        過濾器主要作用:
            用來定義慢查詢在進行記錄時如何進行記錄的,比如說這裏的filter表示哪一種查詢導致的不與記錄,哪一種查詢導致的才進行記錄等等。

        log_slow_queries= OFF # 從mariadb-10.0和mysql-5.6.1開始就被拋棄了,取而代之是slow_query_log
        log_slow_rate_limit  1  # 指明記錄速率
        log_slow_verbosity  詳細級別

        默認的慢查詢時長:
        MariaDB [hellodb]> show global variables like '%long_query%';
        +-----------------+-----------+
        | Variable_name   | Value     |
        +-----------------+-----------+
        | long_query_time | 10.000000 |
        +-----------------+-----------+
        也可以使用select來查詢,如果是用戶自定義變量使用一個@,服務器變量使用2個@
        MariaDB [hellodb]> select @@global.long_query_time;
        +--------------------------+
        | @@global.long_query_time |
        +--------------------------+
        |                10.000000 |
        +--------------------------+
        自定義修改慢查詢時長:
            1、修改session會話級別
                MariaDB [hellodb]> set long_query_time=5;
                Query OK, 0 rows affected (0.01 sec)

                MariaDB [hellodb]> show variables like '%long_query%';
                +-----------------+----------+
                | Variable_name   | Value    |
                +-----------------+----------+
                | long_query_time | 5.000000 |
                +-----------------+----------+
            2、修改global全局設置,修改session和global設置,global只需要在set後面加上global即可,而session不需要加直接在set後面跟上變量即可;
                MariaDB [hellodb]> set global long_query_time=5;
                Query OK, 0 rows affected (0.00 sec)

                MariaDB [hellodb]> show global variables like '%long_query%';
                +-----------------+----------+
                | Variable_name   | Value    |
                +-----------------+----------+
                | long_query_time | 5.000000 |
                +-----------------+----------+

錯誤日誌

    1、記錄的不完全是錯誤日誌,記錄的是多種信息,包括MySQL服務器啓動、關閉過程中所產生的事件也會記錄到錯誤日誌裏面去,但它們未必是真正的錯誤日誌信息。
    2、錯誤日誌默認也是沒開啓的,但在centos7發行版商是被開啓的
    3、記錄哪幾種日誌信息:
        3.1、mysqld啓動和關閉過程中輸出的事件信息;
        3.2、mysqld運行中產生的錯誤信息;
        3.3、event scheduler (事件調度器) 運行一個event時產生的日誌信息;
        3.4、在主從複製架構中的從服務器上啓動從服務器線程時產生的信息;

        log_error=/var/log/mariadb/mariadb.log
        log_warnings=1|0:是否記錄警告信息至錯誤日誌文件中,1表示記錄、0表示不記錄

二進制日誌:

    記錄導致數據改變或潛在導致數據改變的SQL語句;
    功能:用於通過“重放”日誌文件中的事件來生成數據副本;

    而且更重要的是這個SQL語句在文件中保存是以二進制格式保存的而非是文本類型保存

    SHOW {BINARY | MASTER} LOGS:查看mariadb自行管理使用中的二進制日誌文件列表;
    SHOW MASTER STATUS:查看使用中的二進制日誌文件;
    SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

    二進制日誌記錄格式:
        基於“語句”記錄:startement
        基於“行”記錄:row
        混合模式:mixed,讓系統自行判定該基於哪種方式進行;
    要記錄精確數據使用哪種方式:
        基於“行”,記錄數據的
        基於“語句”,記錄語句的
        基於行會產生較大的數據量
        混合模式,應用折中、語句不會產生混淆,不會導致兩次記錄、兩次執行數據不一樣,就基於語句並且節約空間,否則就基於行

    二進制日誌文件的構成:
        兩類文件
            日誌文件:mysql-bin.文件名後綴,二進制
            索引文件:mysql-bin.index,文本
                mysql-bin.index:是用來追蹤mysql或mariadb正在使用中的或者是我們仍然在追蹤中可用二進制日誌文件序列有哪些

    服務器變量:
        sql_log_bin=ON|OFF:是否記錄二進制日誌;
        log_bin=/PATH/TO/BIN_LOG_FILE:記錄的文件位置;通常爲ON;二進制日誌默認通過滾動方式來進行記錄的
        binlog_format=STATEMENT|ROW|MIXED:二進制日誌記錄的格式;
        max_binlog_size=1073741824:單個二進制日誌文件的最大體積,默認爲1G,
            注意:
                1、到達最大值之後自動會滾動
                2、文件達到上限的大小未必爲指定的精確值

        sync_binlog=1|0:設定是否啓動二進制日誌同步功能:

    mysqlbinlog:客戶端命令工具
        mysqlbinlog [options] log_file
            --start-position
            從指定起始號開始顯示:
            [root@node7 /data/mysql]#mysqlbinlog --start-position=499 mysql-bin.000002 
            --stop-position
            從指定位置開始到指定結束位置
            [root@node7 /data/mysql]#mysqlbinlog --start-position=328 --stop-position=457 mysql-n.000002 

            --start-datetime=
            --stop-datetime=
                時間格式:
                    YYYY-MM-DD hh:mm:ss

    二進制日誌事件的格式
        # at 499
        #181014 21:30:29 server id 1  end_log_pos 604 CRC32 0x5c77d4d7  Query   thread_id=1 exec_time=0      error_code=0
        use `mydb`/*!*/;
        SET TIMESTAMP=1539523829/*!*/;
        create table tb1(id int,name char(30))
        /*!*/;

            事件的起始位置:        at 499
            事件發生的日期和時間: 181014 21:30:29
            事件發生的服務器標識: server id 1
            事件的結束位置:        end_log_pos 604
            事件的類型:          Query
            事件發生時所在服務器執行此事件的線程的id:thread_id=1
            語句的時間戳與將其寫入二進制文件中的時間差;exec_time=0
            錯誤代碼:               error_code=0
            事件內容:
                use `mydb`/*!*/;
                SET TIMESTAMP=1539523829/*!*/;
                create table tb1(id int,name char(30))
                /*!*/;

            GTID:全局事務ID號(global transaction id):
                專屬屬性:GTID
                說明在同一個複製集羣中,每一個服務器上執行任何一個事務,都有一個唯一的標識符、無論是執行過多少個事務、在本次集羣運行過程中一定不會有任何其它事務與當前事務重名的
--------------------------------------------------------------------------------------------------------------------------------------------------------
查看數據庫日誌的操作:
    使用file命令來查看mysql-bin.000001 爲哪個類型的文件,不能使用cat去查看mysql-bin.000001文件否則顯示的結構爲亂碼
        [root@node7 /data/mysql]#file mysql-bin.000001 
        mysql-bin.000001: MySQL replication log

查看當前mysql服務器中可管理的二進制日誌文件有哪些
    MariaDB [hellodb]> show binary logs;
    +-------------------------+-------------+
    | Log_name             | File_size   |
    +------------------------+---------------+
    | mysql-bin.000001 |      1675     |
    | mysql-bin.000002 |     15764    |
    | mysql-bin.000003 |      3429     |
    | mysql-bin.000004 |       740      |
    | mysql-bin.000005 |     10606    |
    | mysql-bin.000006 |  26983604 |
    | mysql-bin.000007 |      6098     |
    +------------------------+---------------+
也可使用show master logs查看,跟show binary logs是一樣的
    MariaDB [hellodb]> show master logs;
    +------------------------+----------------+
    | Log_name            | File_size      |
    +------------------------+----------------+
    | mysql-bin.000001 |      1675      |
    | mysql-bin.000002 |     15764     |
    | mysql-bin.000003 |      3429      |
    | mysql-bin.000004 |       740       |
    | mysql-bin.000005 |     10606     |
    | mysql-bin.000006 |  26983604  |
    | mysql-bin.000007 |      6098      |
    +------------------------+----------------+

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

mariadb-日誌


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

mariadb-日誌

字段解釋:
     Log_name :          日誌文件名
     Pos:                        起始點    
     Event_type:            事件的類型
     Server_id:             服務器編號
     End_log_pos:        結束位置
     Info:                      記錄事件本身的內容

中繼日誌

    複製架構中,從服務器用於保存從主服務器的二進制日誌中讀取到的事件;

事務日誌

    事務日誌:transaction log
        事務型存儲引擎自行管理和使用;

        redo log:重做日誌
        undo log:撤銷日誌
    事務日誌不宜太大,根據業務來定義;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章