廣豐視角
關注互聯(lián)網,關注技術開發(fā),透析與分享移動互聯(lián)網行業(yè)最新動態(tài)Linux基礎知識:MySQL數據庫日志的管理與維護
時間:2019-02-17 13:35:54 閱讀:42147次 分類:小程序開發(fā)
MySQL數據庫主要有5種類型的日志,分別為慢查詢日志(log-slow-queries),二進制日志(log-bin),錯誤日志(log-error),查詢日志(log),更新日志(log-update)。在新的MySQL版本中,已取消了更新日志,可以用二進制日志來替代這個功能。文章側重講解慢查詢日志和二進制日志。
慢查詢日志(log-slow-queries)
MySQL慢查詢,指的是查詢消耗時間較多,或者沒有使用索引的查詢,MySQL可以同時記錄這兩種情況:
# 慢日志保存路徑
log-slow-queries = slow.log
# 超過2秒的查詢
long_query_time = 2
# 沒有使用索引的查詢
log-queries-not-using-indexes二進制日志(log-bin)
在MySQL中,如果啟用二進制日志記錄,則MySQL的變更修改都會被記錄到日志文件中:
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set
如果想關閉bin日志的記錄,可以修改配置文件my.ini,把里面的log-bin這一行注釋掉,重啟mysql服務。
查看的數據庫的bin日志:
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 946525 |
+------------------+-----------+
1 row in set
如果沒有主從復制,可以通過以下方式,重置數據庫日志,清除之前的日志文件:
mysql> reset master;
Query OK, 0 rows affected
但是如果存在復制關系,應當通過PURGE的方式來清理bin日志:
語法如下:
PURGE MASTER LOGS TO 'log_name';
PURGE MASTER LOGS BEFORE 'date';
用于刪除列于在指定的日志或日期之前的日志索引中的所有二進制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除。
例如:
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'格式。
如果有主從復制,則注意以下幾個問題:
1、從服務器是活動的,并且剛好在讀取你正在試圖刪除的日志之一,那么執(zhí)行這個命令不會起作用,而是觸發(fā)一個錯誤。
2、從服務器是停止的,你碰巧清理了其想要讀取的日志之一,則從服務器啟動后不能復制。
3、從服務器是活動的,沒有讀取你試圖刪除的日志,那個這個命令是安全的,而且執(zhí)行這個命令時從服務器不需要停止工作。
要清理日志,需按照以下步驟:
1. 在每個從屬服務器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日志。
2. 使用SHOW MASTER LOGS獲得主服務器上的一系列日志。
3. 在所有的從屬服務器中判定最早的日志。這個是目標日志。如果所有的從屬服務器是更新的,這是清單上的最后一個日志。
4. 備份你將要刪除的所有日志。(這個步驟是自選的,但是建議采用。)
5. 清理所有的日志,但是不包括目標日志,因為從服務器還要跟它同步
# 按文件:刪除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
蕪湖廣豐軟件有限公司(原中江網絡),成立于2005年,經過10多年定制開發(fā)經驗,積累了大量技術儲備和定制開發(fā)經驗,是一家集軟件研發(fā)、互聯(lián)網應用為一體的綜合信息技術服務提供商。公司擁有核心的策劃團隊和專業(yè)的技術研發(fā)團隊,致力于采用領先的信息技術,長期為涉及智慧園區(qū)/廠區(qū)/校園領域的各個企業(yè)提供快速、高效、安全的信息技術支持。公司立足智慧園區(qū)和智慧教育行業(yè),通過軟硬件的研發(fā)和互聯(lián)網應用,疏通各企業(yè)間“端到端”的信息傳輸,靈活滿足智慧園區(qū)和智慧教育企業(yè)間不同用戶的需求,為其提供完善的信息化解決方案。
園區(qū)管理系統(tǒng),提供智慧園區(qū)綜合管理系統(tǒng),智慧園區(qū)設計方案咨詢,智慧園區(qū)管理系統(tǒng)、...