聰明屋視角
關(guān)注互聯(lián)網(wǎng),關(guān)注技術(shù)開發(fā),透析與分享移動互聯(lián)網(wǎng)行業(yè)最新動態(tài)Linux基礎(chǔ)知識:MySQL數(shù)據(jù)庫日志的管理與維護(hù)
時間:2019-02-17 13:35:54 閱讀:39732次 分類:解決方案
MySQL數(shù)據(jù)庫主要有5種類型的日志,分別為慢查詢?nèi)罩荆╨og-slow-queries),二進(jìn)制日志(log-bin),錯誤日志(log-error),查詢?nèi)罩荆╨og),更新日志(log-update)。在新的MySQL版本中,已取消了更新日志,可以用二進(jìn)制日志來替代這個功能。文章側(cè)重講解慢查詢?nèi)罩竞投M(jìn)制日志。
慢查詢?nèi)罩荆╨og-slow-queries)
MySQL慢查詢,指的是查詢消耗時間較多,或者沒有使用索引的查詢,MySQL可以同時記錄這兩種情況:
# 慢日志保存路徑
log-slow-queries = slow.log
# 超過2秒的查詢
long_query_time = 2
# 沒有使用索引的查詢
log-queries-not-using-indexes二進(jìn)制日志(log-bin)
在MySQL中,如果啟用二進(jìn)制日志記錄,則MySQL的變更修改都會被記錄到日志文件中:
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set
如果想關(guān)閉bin日志的記錄,可以修改配置文件my.ini,把里面的log-bin這一行注釋掉,重啟mysql服務(wù)。
查看的數(shù)據(jù)庫的bin日志:
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 946525 |
+------------------+-----------+
1 row in set
如果沒有主從復(fù)制,可以通過以下方式,重置數(shù)據(jù)庫日志,清除之前的日志文件:
mysql> reset master;
Query OK, 0 rows affected
但是如果存在復(fù)制關(guān)系,應(yīng)當(dāng)通過PURGE的方式來清理bin日志:
語法如下:
PURGE MASTER LOGS TO 'log_name';
PURGE MASTER LOGS BEFORE 'date';
用于刪除列于在指定的日志或日期之前的日志索引中的所有二進(jìn)制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除。
例如:
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2008-06-23 15:00:00';
清除3天前的 binlog
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);BEFORE變量的date自變量可以為'YYYY-MM-DD hh:mm:ss'格式。
如果有主從復(fù)制,則注意以下幾個問題:
1、從服務(wù)器是活動的,并且剛好在讀取你正在試圖刪除的日志之一,那么執(zhí)行這個命令不會起作用,而是觸發(fā)一個錯誤。
2、從服務(wù)器是停止的,你碰巧清理了其想要讀取的日志之一,則從服務(wù)器啟動后不能復(fù)制。
3、從服務(wù)器是活動的,沒有讀取你試圖刪除的日志,那個這個命令是安全的,而且執(zhí)行這個命令時從服務(wù)器不需要停止工作。
要清理日志,需按照以下步驟:
1. 在每個從屬服務(wù)器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日志。
2. 使用SHOW MASTER LOGS獲得主服務(wù)器上的一系列日志。
3. 在所有的從屬服務(wù)器中判定最早的日志。這個是目標(biāo)日志。如果所有的從屬服務(wù)器是更新的,這是清單上的最后一個日志。
4. 備份你將要刪除的所有日志。(這個步驟是自選的,但是建議采用。)
5. 清理所有的日志,但是不包括目標(biāo)日志,因為從服務(wù)器還要跟它同步
# 按文件:刪除mysql-bin.000354之前的日志,不包含mysql-bin.000354
MYSQL>purge binary logs to 'mysql-bin.000354';
Query OK, 0 rows affected (0.16 sec)
# 按時間:刪除2011-11-10 00:00:00 之前的日志
MYSQL>purge binary logs before '2011-11-10 00:00:00';
# 按時間:請理三天之前的日志
MYSQL> purge master logs before date_sub(now(), interval 3 day);
自動清理日志 :
# 修改my.cnf文件配置bin-log過期時間
[mysqld]
expire-logs-days=7
max-binlog-size=268435456
蕪湖市聰明屋智能科技有限公司(原中江網(wǎng)絡(luò)),成立于2005年,經(jīng)過10多年定制開發(fā)經(jīng)驗,積累了大量技術(shù)儲備和定制開發(fā)經(jīng)驗,率先創(chuàng)建安徽省內(nèi)自主研發(fā)的云計算平臺,具有大數(shù)據(jù)、高并發(fā)等高強(qiáng)度計算能力,為眾多政府、學(xué)校、公安部門、中小企業(yè)解決數(shù)據(jù)計算與管理難題。2013年公司內(nèi)部專門創(chuàng)建電商服務(wù)部,為企業(yè)提供全方位電商解決方案與配套服務(wù)。多次獲得國家、省市級領(lǐng)導(dǎo)接見,被國內(nèi)近20家電視臺、報紙媒體爭相報道。至今,聰明屋智能科技服務(wù)過上市公司、大型國企、各類私企超800家,為多家公司提供各類政務(wù)系統(tǒng)、app開發(fā)定制、微信小程序開發(fā)定制、智能家居、電商系統(tǒng)、連鎖收銀等技術(shù)解決方案服務(wù)。同時,聰明屋智能科技在智能硬件方面、區(qū)塊鏈應(yīng)用方面持續(xù)投入關(guān)注及創(chuàng)新。
基于圖像處理的道路病害檢測方法已經(jīng)成為了路面病害檢測技術(shù)的主要方法,它基本可以實(shí)...