mysql清理和關閉binlog日志


由於某個業務有大量的數據寫入數據庫,大概300/S,日夜不停,導致數據庫占用磁盤空間過大,現整理解決思路
1.字段設置比較隨意,導致一般的數據存儲浪費,修改字段為更小的單位
2.Mysql為InnoDB模式,但是業務單純的寫入和讀取數據庫,沒有涉及事務,修改模式為Myisam
3.大量的寫入會生成大量的binglog文件,Mysql默認30天刪除,設置binlog的自動刪除機制或者關閉binglog日志

操作步驟:

1.登錄mysql數據庫,mysql -uroot –p
2.查看binlog是否開啟,log_bin的狀態未ON,表明binlog日志開啟

 3.show binary logs;

 4.刪除binlog日志文件,切勿刪除正在使用的binlog!!(所以刪除老年的即可,不要全刪)
        不要輕易手動去刪除binlog,會導致binlog.index和真實存在的binlog不匹配,使用PURGE,根據自己需求改寫下面命令
        //刪除1天前的binlog日志文件

1
PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);

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

1
PURGE BINARY LOGS BEFORE '2020-11-25 13:09:51' ;

        //將bin.000088之前的binlog清掉:

1
PURGE BINARY LOGS TO 'bin.000088' ;

5.設置binlog的過期時間 

  binlog失效日期參數為 binlog_expire_logs_seconds,默認2592000(30天)過期,可以設置 604800(7天)

 操作:

       //顯示binlog的過期時間

1
show variables like '%expire%' ;

       //設置過期時間

1
set global binlog_expire_logs_seconds= 60 * 60 * 24 ;

       //手動刷新日志

1
flush logs;

6.設置過期時間也可以直接修改my.ini配置文件,關閉修改再重啟
   expire_logs_days = 7 #自動刪除15天前的日志。默認值為0,表示從不刪除。  

7.關閉binlog
                操作:8.0版本情況下,關閉mysql服務,找到my.ini, 在[mysqld] 下添加 skip-log-bin,然后重啟MySQL,不可以不關閉的情況 下,修改重啟。
                在關閉后,可以下使用reset master把現有的binlog都刪除掉,因為binlog關閉了,不會有正在使用的binlog,所以沒問題。
  ps:
                1.如果找不到my.ini,可以手動打開顯示C盤的隱藏文件選項(不會百度),就會出現ProgramData文件夾,找到mysql文件夾,就可以找到my.ini文件
                 2.使用RESET MASTER可以刪除任何二進制日志文件及其相關的二進制日志索引文件,從而使主數據庫恢復到開始二進制日志記錄之前的狀態


免責聲明!

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



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