mysql正確清理binlog日志的方法


 

MySQL中的binlog日志記錄了數據庫中數據的變動,便於對數據的基於時間點和基於位置的恢復,但是binlog也會日漸增大,占用很大的磁盤空間,因此,要對binlog使用正確安全的方法清理掉一部分沒用的日志。
 
[方法一]手動清理binlog

清理前的准備:

1.查看主庫和從庫正在使用的binlog是哪個文件

show master status
show slave status\G

2.在刪除binlog日志之前,首先對binlog日志備份,以防萬一 

開始手動清除binlog,刪除指定日期以前的日志

purge master logs before '2016-09-01 17:20:00'; //刪除指定日期以前的日志索引中binlog日志文件

purge master logs to'mysql-bin.000022'; //刪除指定日志文件的日志索引中binlog日志文件

注意:使用該語法,會將對應的文件和mysql-bin.index中對應路徑刪除

時間和文件名一定不可以寫錯,尤其是時間中的年和文件名中的序號,以防不下心將正在使用的binlog刪除!!!切勿刪除正在使用的binlog

 

補充:(參考 https://www.aliyun.com/jiaocheng/1405382.html)

  • reset master:將刪除日志索引文件中記錄的所有binlog文件,創建一個新的日志文件,起始值從000001開始。不要輕易使用該命令,這個命令通常僅僅用於第一次用於搭建主從關系的時的主庫。
  • reset slave:清除master.info文件、relay-log.info文件,以及所有的relay log文件,並重新啟用一個新的relaylog文件

使用reset slave之前必須使用stop slave 命令將復制進程停止。

 

[方法二]通過設置binlog過期時間,使系統自動刪除binlog文件

 

1.在mysql中修改

查看binlog過期時間,這個值默認是0天,也就是說不自動清理,可以根據生產情況修改,本例修改為7天

 

mysql> show variables like 'expire_logs_days'; 

+------------------------+-------+ 

| Variable_name  | Value | 

+------------------------+-------+ 

| expire_logs_days |   0  | 

+------------------------+-------+ 

mysql> set global expire_logs_days = 7;    #設置binlog多少天過期

 

設置之后不會立即清除,觸發條件是以下之一:

1.binlog大小超過max_binlog_size,max_binlog_size默認為1G

2.手動執行flush logs

 

如果binlog非常多,不要輕易設置該參數,有可能導致IO爭用,這個時候可以使用purge命令予以清除:

將bin.000055之前的binlog清掉:

mysql>purge binary logs to 'bin.000055';

將指定時間之前的binlog清掉:

mysql>purge binary logs before '2017-05-01 13:09:51';

 

 

2.在配置文件my.cnf中修改

mysqld在每個二進制日志名后面添加一個數字擴展名。每次你啟動服務器或刷新日志時該數字則增加。如果當前日志大小達到max_binlog_size,還會自動創建新的二進制日志。如果你正則使用大的事務,二進制日志還會超過max_binlog_size:事務全寫入一個二進制日志中,絕對不要寫入不同的二進制日志中。

 

expire_logs_days :定義了mysql清除過期日志的時間。默認值為0,表示“沒有自動刪除”。

max_binlog_size:二進制日志最大大小,如果二進制日志寫入的內容超出給定值,日志就會發生滾動。你不能將該變量設置為大於1GB或小於4096字節。 默認值是1GB。

 

在my.cnf中添加配置,設置過期時間為30天

expire_logs_days = 30

max_binlog_size使用默認值即可

 

注意:

過期時間設置的要適當,對於主從復制,要看從庫的延遲決定過期時間,避免主庫binlog還未傳到從庫便因過期而刪除,導致主從不一致!!!

 

 

 

參考

https://www.jb51.net/article/117819.htm

https://blog.csdn.net/zxssoft/article/details/80114475

https://blog.csdn.net/jesseyoung/article/details/40979129


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM