您好,登錄后才能下訂單哦!
本文主要給大家簡單講講MySQL主要有哪幾種日志文件,相關專業術語大家可以上網查查或者找一些相關書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望MySQL主要有哪幾種日志文件這篇文章可以給大家帶來一些實際幫助。
MySQL主要有以下幾種日志類型:
錯誤日志——MySQL服務啟動和關閉過程中的信息以及其它錯誤和警告信息。默認在數據目錄下。
一般查詢日志——用于記錄select查詢語句的日志。general_log、general_log_file 默認關閉,建議關閉。
慢查詢日志——log-slow-queries記錄所有超過long_query_time時間的SQL語句,
二進制日志——記錄任何引起數據變化的操作,用于備份和還原。默認存放在數據目錄中,在刷新和服務重啟時會滾動二進制日志。
中繼日志——從主云服務器的二進制文件中復制的事件,并保存為二進制文件,格式和二進制日志一樣。
事務日志——保證事務的一致性。
1 慢查詢日志:
mysql> show variables like "long%"; #查看慢查詢日志信息
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.13 sec)
mysql> show variables like "slow%"; #查看慢查詢日志設置
+---------------------+-----------------------------+
| Variable_name | Value |
+---------------------+-----------------------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /data/mysql/slave2-slow.log |
+---------------------+-----------------------------+
3 rows in set (0.06 sec)
#慢查詢時間設置,永久改變需要更改配置文件,超過5秒的慢查詢會被記錄到慢查詢日志文件中
mysql> set long_query_time=5;
Query OK, 0 rows affected (0.25 sec)
mysql> set global slow_query_log=1; #開啟慢查詢,永久開啟需要修改配置文件
mysql> show global status like '%Slow_queries%'; #查看慢查詢日志數目
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log #查看訪問最多的10個SQL
mysqldumpslow slow-query.log #對慢查詢分類匯總
2 二進制日志:
mysql> show global variables like "%log%"; #查看日志相關變量
mysql> show variables like "%log_bin%"; #查看二進制變量
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+
[root@slave02 mysql]# vim /etc/my.cnf
log_bin #去掉注釋,開啟二進制日志
[root@slave02 mysql]# service mysqld restart
mysql> show binary logs; #查看所有二進制日志文件
+-------------------+-----------+
| Log_name | File_size |
+-------------------+-----------+
| slave2-bin.000001 | 168 |
| slave2-bin.000002 | 120 |
+-------------------+-----------+
mysql> show master status; #查看當前使用的二進制日志
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| slave2-bin.000002 | 120 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.03 sec)
mysql> flush logs; #刷新二進制日志
Query OK, 0 rows affected (0.17 sec)
[root@slave02 mysql]# mysqlbinlog mysql-bin.00001; #顯示二進制文件內容
3 日志的刪除——磁盤的容量是有限的,而日志的增長則是無限的
方式 1:reset master 刪除所有二進制日志
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)
查看刪除后的二進制日志
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 120 Apr 29 22:59 www-bin.000001
-rw-rw----. 1 mysql mysql 17 Apr 29 22:59 www-bin.index
方式 2:purge master logs to 'www-bin.000002'; 刪除000002之前的日志
查看日志
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000001
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000002
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000003
-rw-rw----. 1 mysql mysql 120 Apr 29 23:04 www-bin.000004
-rw-rw----. 1 mysql mysql 68 Apr 29 23:04 www-bin.index
刪除日志
mysql> purge master logs to 'www-bin.000002';
Query OK, 0 rows affected (0.03 sec)
再次查看日志
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000002
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000003
-rw-rw----. 1 mysql mysql 120 Apr 29 23:04 www-bin.000004
-rw-rw----. 1 mysql mysql 51 Apr 29 23:06 www-bin.index
方式 3:purge master logs before '2017-04-29 23:11:00'; 刪除某個時間點之前的日志
查看日志
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000002
-rw-rw----. 1 mysql mysql 165 Apr 29 23:04 www-bin.000003
-rw-rw----. 1 mysql mysql 165 Apr 29 23:11 www-bin.000004
-rw-rw----. 1 mysql mysql 120 Apr 29 23:11 www-bin.000005
-rw-rw----. 1 mysql mysql 68 Apr 29 23:11 www-bin.index
刪除日志
mysql> purge master logs before '2017-04-29 23:11:00';
Query OK, 0 rows affected (0.74 sec)
再次查看日志
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Apr 29 23:11 www-bin.000004
-rw-rw----. 1 mysql mysql 120 Apr 29 23:11 www-bin.000005
-rw-rw----. 1 mysql mysql 34 Apr 29 23:13 www-bin.index
方法 4:在配置文件中添加參數:--expire_logs_days=# 參數的含義是設置日志過期的天數
1)修改配置文件:vim /etc/my.cnf
expire_logs_days=60 #添加一行
[root@www mysql]# service mysqld restart
2)查看刪除前日志
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Apr 29 23:11 www-bin.000004
-rw-rw----. 1 mysql mysql 120 Apr 29 23:11 www-bin.000005
-rw-rw----. 1 mysql mysql 34 Apr 29 23:13 www-bin.index
3)修改系統時間
[root@www mysql]# date -s "2017-05-30"
4)刷新日志觸發日志更新,由于不到60天,因此日志不會被刪除
mysql> flush logs;
Query OK, 0 rows affected (0.64 sec)
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Apr 29 23:11 www-bin.000004
-rw-rw----. 1 mysql mysql 143 Apr 29 23:25 www-bin.000005
-rw-rw----. 1 mysql mysql 165 May 30 00:02 www-bin.000006
-rw-rw----. 1 mysql mysql 165 May 30 00:02 www-bin.000007
-rw-rw----. 1 mysql mysql 165 May 30 00:03 www-bin.000008
-rw-rw----. 1 mysql mysql 120 May 30 00:03 www-bin.000009
-rw-rw----. 1 mysql mysql 102 May 30 00:03 www-bin.index
5)將系統時間改為60天后,再次刷新日志觸發日志文件更新,可以發現60天前的日志被刪除
[root@www mysql]# date -s "2017-08-30"
mysql> flush logs;
Query OK, 0 rows affected (0.06 sec)
mysql> system ls -ltr www-bin*
-rw-rw----. 1 mysql mysql 165 Aug 30 00:00 www-bin.000010
-rw-rw----. 1 mysql mysql 120 Aug 30 00:00 www-bin.000011
-rw-rw----. 1 mysql mysql 34 Aug 30 00:00 www-bin.index
MySQL主要有哪幾種日志文件就先給大家講到這里,對于其它相關問題大家想要了解的可以持續關注我們的行業資訊。我們的板塊內容每天都會捕捉一些行業新聞及專業知識分享給大家的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。