本文主要給大家簡單講講MySQL主要有哪幾種日志文件,相關(guān)專業(yè)術(shù)語大家可以上網(wǎng)查查或者找一些相關(guān)書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望MySQL主要有哪幾種日志文件這篇文章可以給大家?guī)硪恍嶋H幫助。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了吉林免費建站歡迎大家使用!
MySQL主要有以下幾種日志類型:
錯誤日志——MySQL服務(wù)啟動和關(guān)閉過程中的信息以及其它錯誤和警告信息。默認在數(shù)據(jù)目錄下。
一般查詢?nèi)罩尽糜谟涗泂elect查詢語句的日志。general_log、general_log_file 默認關(guān)閉,建議關(guān)閉。
慢查詢?nèi)罩尽猯og-slow-queries記錄所有超過long_query_time時間的SQL語句,
二進制日志——記錄任何引起數(shù)據(jù)變化的操作,用于備份和還原。默認存放在數(shù)據(jù)目錄中,在刷新和服務(wù)重啟時會滾動二進制日志。
中繼日志——從主云服務(wù)器的二進制文件中復制的事件,并保存為二進制文件,格式和二進制日志一樣。
事務(wù)日志——保證事務(wù)的一致性。
1 慢查詢?nèi)罩荆?/p>
mysql> show variables like "long%"; #查看慢查詢?nèi)罩拘畔?/p>
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.13 sec)
mysql> show variables like "slow%"; #查看慢查詢?nèi)罩驹O(shè)置
+---------------------+-----------------------------+
| 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)
#慢查詢時間設(shè)置,永久改變需要更改配置文件,超過5秒的慢查詢會被記錄到慢查詢?nèi)罩疚募?/p>
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%'; #查看慢查詢?nèi)罩緮?shù)目
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log #查看訪問最多的10個SQL
mysqldumpslow slow-query.log #對慢查詢分類匯總
2 二進制日志:
mysql> show global variables like "%log%"; #查看日志相關(guān)變量
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; #顯示二進制文件內(nèi)容
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:在配置文件中添加參數(shù):--expire_logs_days=# 參數(shù)的含義是設(shè)置日志過期的天數(shù)
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)修改系統(tǒng)時間
[root@www mysql]# date -s "2017-05-30"
4)刷新日志觸發(fā)日志更新,由于不到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)將系統(tǒng)時間改為60天后,再次刷新日志觸發(fā)日志文件更新,可以發(fā)現(xiàn)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主要有哪幾種日志文件就先給大家講到這里,對于其它相關(guān)問題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會捕捉一些行業(yè)新聞及專業(yè)知識分享給大家的。