mysql binlog無法自動刪除處理

2021-07-24 06:34:10 字數 4442 閱讀 7688

一.問題描述

新系統在上線前經過壓測,產生大量的binlog日誌,但時間過去了一周,日誌檔案一直沒有自動刪除,依然占用大量磁碟空間。

mysql版本:mariadb 10.1.11

二.問題分析

1.檢視binlog過期引數,3天過期。

show global variables like 'expire_logs_days';

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

| variable_name | value |

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

| expire_logs_days | 3 |

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

1 row in set (0.01 sec)

2.檢視binlog最大值設定,大小為512m。

show variables like 'max_binlog_size';

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

| variable_name | value |

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

| max_binlog_size | 536870912 |

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

1 row in set (0.00 sec)

4.檢視binlog檔案情況

show binary logs;

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

| log_name | file_size |

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

| mysql-bin.000004 | 536872787 |

| mysql-bin.000005 | 536873559 |

| mysql-bin.000006 | 536872037 |

| mysql-bin.000007 | 536871022 |

| mysql-bin.000008 | 536873565 |

| mysql-bin.000009 | 536873553 |

| mysql-bin.000010 | 536874309 |

| mysql-bin.000011 | 536874215 |

| mysql-bin.000012 | 536871036 |

| mysql-bin.000013 | 536873477 |

| mysql-bin.000014 | 536873805 |

| mysql-bin.000015 | 536873248 |

| mysql-bin.000016 | 536874398 |

| mysql-bin.000017 | 536874375 |

| mysql-bin.000018 | 536872468 |

| mysql-bin.000019 | 536872774 |

| mysql-bin.000020 | 536872737 |

| mysql-bin.000021 | 536871054 |

| mysql-bin.000022 | 536871227 |

| mysql-bin.000023 | 536873274 |

| mysql-bin.000024 | 536874328 |

| mysql-bin.000025 | 536871154 |

| mysql-bin.000026 | 536872951 |

| mysql-bin.000027 | 536871914 |

| mysql-bin.000028 | 536871218 |

| mysql-bin.000029 | 536872033 |

| mysql-bin.000030 | 536871760 |

| mysql-bin.000031 | 536871008 |

| mysql-bin.000032 | 536872036 |

| mysql-bin.000033 | 536875830 |

| mysql-bin.000034 | 536871588 |

| mysql-bin.000035 | 536875222 |

| mysql-bin.000036 | 536871210 |

| mysql-bin.000037 | 536872172 |

| mysql-bin.000038 | 536872877 |

| mysql-bin.000039 | 536871156 |

| mysql-bin.000040 | 536874087 |

| mysql-bin.000041 | 536872257 |

| mysql-bin.000042 | 536872923 |

| mysql-bin.000043 | 541863112 |

| mysql-bin.000044 | 536871494 |

| mysql-bin.000045 | 536872167 |

| mysql-bin.000046 | 536871301 |

| mysql-bin.000047 | 536871384 |

| mysql-bin.000048 | 586296851 |

| mysql-bin.000049 | 536871823 |

| mysql-bin.000050 | 536871288 |

| mysql-bin.000051 | 536872267 |

| mysql-bin.000052 | 536872212 |

| mysql-bin.000053 | 559677810 |

| mysql-bin.000054 | 571145530 |

| mysql-bin.000055 | 843530054 |

| mysql-bin.000056 | 2306758408 |

| mysql-bin.000057 | 906822967 |

| mysql-bin.000058 | 929503132 |

| mysql-bin.000059 | 553530156 |

| mysql-bin.000060 | 664342784 |

| mysql-bin.000061 | 444814324 |

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

58 rows in set (0.00 sec)

上面顯示與mysql-bin.index檔案中的內容相同。

從上面顯示看,最後一次日誌切換發生在 oct 28 09:43時間點,按binlog過期設定3天前的時間為oct 25 09:43才會自動刪除,而最早的binlog檔案時間為oct 25 15:50,故還沒到binlog切換條件

所以沒有發生自動刪除。sql的binlog自動刪除發生在:

1.手工執行flush logs;

2.binlog檔案大小超過max_binlog_size的設定大小;

3.重啟mysql

由於剛作完壓力測試,現在系統正等待上線,系統沒什麼壓力。

另外,手工刪除binlog的方法如下:

方法一:

purge binary logs to 'binlog.000058'; ----(刪除mysql bin-log日誌,刪除binlog.000058之前的,不包括binlog.000058)

方法二:

purge binary logs before '2008-06-22 13:00:00';   //清除2008-06-22 13:00:00前binlog日誌

purge binary logs before date_sub( now( ), interval 3 day);  //清除3天前binlog日誌before,變數的date自變數可以為'yyyy-mm-dd hh:mm:ss'格式。

三.問題解決

為了釋放空間,需執行flush logs來切換log,以自動刪除binlog。

1.檢查主從之間同步,確認同步正常。

2.執行flush logs

3.檢視binlog:

show binary logs;

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

| log_name | file_size |

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

| mysql-bin.000061 | 444823335 |

| mysql-bin.000062 | 366 |

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

2 rows in set (0.00 sec)

確認三天前的binlog已刪除。

mysql binlog日誌自動清理及手動刪除

場景 當開啟mysql資料庫主從時,會產生大量如mysql bin.00000 log的檔案,耗費大量磁碟空間。解決方法 1.關閉mysql主從,關閉binlog 然後重啟資料庫。2.重啟mysql,開啟mysql主從,設定expire logs days 此方法需要重啟mysql。也可以直接在my...

mysql binlog備份初探

備份mysql的binlog檔案,可以配合分庫或全庫的備份檔案實現基於時間點的資料恢復.在工作過程中,遇到兩種情況 1.不執行flush logs命令 缺點 對於不進行頻繁寫入和更新的業務,備份後,浪費磁碟空間.優點 對於一天只生成乙個binlog檔案的業務,恢復資料比較容易,只需要解壓乙個binl...

mysqlbinlog使用詳解

mysqlbinlog用於處理二進位制日誌檔案的實用工具詳解 mysqlbinlog 從二進位制日誌讀取語句的工具。在二進位制日誌檔案中包含的執行過的語句的日誌可用來幫助從崩潰中恢復 在my.cnf這個檔案中加一行 windows為my.ini vi etc my.cnf mysqld log bi...