標題索引
mysql
日誌分類nginx
日誌操做sql
日誌分解數據庫
日誌分類vim
在數據庫系統中日誌主要分爲6類,具體以下:centos
一、查詢日誌:主要記錄平常查詢的記錄;
緩存
二、慢查詢日誌:主要記錄查詢時長超過設置的數值時間的語句,方便DBA運維人員進行查詢;
bash
三、錯誤日誌:主要用於記錄錯誤的事件,方便DBA運維人員對數據庫的操做和平常維護;
服務器
四、二進制日誌:主要用於記錄sql語句對數據庫的操做,方便DBA運維人員審計和備份恢復;
session
五、中繼日誌:主要用於數據庫集羣架構設計中數據庫的主備;
六、事務日誌:主要用於防止數據庫服務器異常中斷時,事物的恢復。
日誌操做
1.查詢日誌,查詢日誌能夠記錄在文件系統的文件中,也能夠記錄在自身數據庫的表中,具體的記錄方式可經過所有變量進行查看或更改,默認只記錄在文件之中,建議關閉查詢日誌
MariaDB [(none)]> show global variables like 'general_log%'; +------------------+----------------+ | Variable_name | Value | +------------------+----------------+ | general_log | ON | | general_log_file | nginxser02.log | #相對目錄,相對數據文件安裝的目錄 +------------------+----------------+ 2 rows in set (0.00 sec) MariaDB [(none)]> show global variables like 'log_output'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | FILE | #值能夠爲file|table|none +---------------+-------+ 1 row in set (0.00 sec)
2.慢查詢日誌,執行時間超出指定查詢的日誌,慢查詢有可能數據庫設計的不合理或表被鎖定非設計緣由,具體驗證或修改可根據以下示例
#查詢慢查詢設定時長,想修改時長並永久生效,寫配置文件 MariaDB [(none)]> show global variables like 'long_query_time'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) MariaDB [(none)]> show global variables like 'slow_query%'; +---------------------+---------------------+ | Variable_name | Value | +---------------------+---------------------+ | slow_query_log | OFF | | slow_query_log_file | nginxser02-slow.log | +---------------------+---------------------+ 2 rows in set (0.00 sec) #慢查詢日誌記錄的策略設定 MariaDB [(none)]> show global variables like 'log_slow%'; +---------------------+--------------------------------------------------------------------------------------------------------------+ | Variable_name | Value | +---------------------+--------------------------------------------------------------------------------------------------------------+ | log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk | | log_slow_queries | OFF | | log_slow_rate_limit | 1 | | log_slow_verbosity | | +---------------------+--------------------------------------------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
3.錯誤日誌,錯誤日誌記錄全部數據庫生命週期中全部的錯誤信息,具體以下操做
MariaDB [(none)]> show global variables like 'log_error%'; +---------------+------------------------------+ | Variable_name | Value | +---------------+------------------------------+ | log_error | /var/log/mariadb/mariadb.log | +---------------+------------------------------+ 1 row in set (0.00 sec) #設置錯誤警告信息,1表示記錄,0表示不記錄 MariaDB [(none)]> show global variables like 'log_war%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_warnings | 1 | +---------------+-------+ 1 row in set (0.00 sec)
4.二進制日誌,文件也爲二進制文件,可利用數據庫的恢復等,默認狀況下是關閉的,且只能在配置文件中進行修改,其中變量sql_log_bin是否記錄二進制日誌的開關,而log-bin是記錄二進制文件的路徑,可使用絕對路徑,也可使用基於數據庫安裝路徑的相對路徑,max_binlog_size是默認單個二進制文件最大大小,默認爲1G,超出此大小則進行日誌滾動,固然重啓服務時也會進行滾動,sync_bin_log默認狀況值爲0,不會將內存中的日誌實時同步進磁盤,若服務器異常斷電則日誌丟失,數據丟失,是否開啓此功能根據架構設定自行設置,具體以下
#默認狀況下是開啓了二進制文件記錄,可是未指定二進制文件的記錄位置 MariaDB [(none)]> show global variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 1 row in set (0.00 sec) MariaDB [(none)]> show global variables like 'sql_log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sql_log_bin | ON | +---------------+-------+ 1 row in set (0.00 sec) MariaDB [(none)]> show global variables like 'sync_binlog'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sync_binlog | 0 | +---------------+-------+ 1 row in set (0.00 sec)
開啓二進制文件所指定的路徑路徑(相對數據庫安裝的路徑),並設定記錄在文件mysql-bin文件中,具體配置以下
[ root@centos7 ~ ]#vim /etc/my.cnf [mysqld]z log-bin=mysql-bin #記錄日誌時的格式,格式有基於statement、raw或者兩者的混雜格式 binlog_format=mixed
再次登錄數據庫進行驗證
MariaDB [(none)]> show global variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 1 row in set (0.00 sec) MariaDB [(none)]> help show ; Name: 'SHOW' Description: SHOW has many forms that provide information about databases, tables, columns, or status information about the server. This section describes those following: SHOW AUTHORS SHOW {BINARY | MASTER} LOGS SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] MariaDB [(none)]> show binary logs; #查看正在使用中的二進制日誌 +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 264 | | mysql-bin.000002 | 245 | +------------------+-----------+ 2 rows in set (0.00 sec) MariaDB [(none)]> show binlog events in 'mysql-bin.000002'; +------------------+-----+-------------+-----------+-------------+-------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+-----+-------------+-----------+-------------+-------------------------------------------+ | mysql-bin.000002 | 4 | Format_desc | 1 | 245 | Server ver: 5.5.52-MariaDB, Binlog ver: 4 | +------------------+-----+-------------+-----------+-------------+-------------------------------------------+ 1 row in set (0.00 sec) #查看二進制文件的索引文件,經過索引文件查看有多少個滾動日誌文件 [ root@nginxser02 ~ ]#cat /var/lib/mysql/mysql-bin.index ./mysql-bin.000001 ./mysql-bin.000002 #經過專用命令查看二進制文件 [ root@nginxser02 ~ ]#mysqlbinlog /var/lib/mysql/mysql-bin.000002 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #171130 4:13:21 server id 1 end_log_pos 245 Start: binlog v 4, server v 5.5.52-MariaDB created 171130 4:13:21 at startup # Warning: this binlog is either in use or was not closed properly. ROLLBACK/*!*/; BINLOG '
5.中繼日誌,從犯服務器用於保存從主服務器的二進制日誌中讀取到的事件
6.事務日誌工做原理主要是在事物開始時,在內存中劃分一個buffer用於緩存事務日誌,另外防止事務日誌在內存中磁盤文件中的事物分組文件滿時同步失敗,所以在磁盤上建立一組文件,一組文件默認爲2個文件,方便buffer向磁盤文件同步日誌,磁盤文件中的事物日誌再次向數據庫系統同步,防止事物異常丟失。
圖1-1 事物日誌結構圖
事務日誌默認配置buffer爲8M,每文件大小爲5M,每組中有2個文件,事務日誌存儲路徑爲相對路徑的根目錄,具體以下:
MariaDB [(none)]> show global variables like 'innodb_log%'; +---------------------------+---------+ | Variable_name | Value | +---------------------------+---------+ | innodb_log_block_size | 512 | | innodb_log_buffer_size | 8388608 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | +---------------------------+---------+ 5 rows in set (0.00 sec)
查看事物在磁盤中同步的日誌文件
[ root@nginxser02 mysql ]#ls -lh /var/lib/mysql/ib_logfile* -rw-rw---- 1 mysql mysql 5.0M Nov 30 05:06 /var/lib/mysql/ib_logfile0 -rw-rw---- 1 mysql mysql 5.0M Nov 8 22:56 /var/lib/mysql/ib_logfile1
另外事物日誌有redo log 和undo log,redo即爲事物完成且保存在事物日誌之中,但並未同步至數據系統之中,所以要同步進數據庫系統必須將事物日誌進行redo,undo即爲並未完成的事物且保存在事物日誌之中,此時須要事物回滾,將以前的事物undo。