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