Mysql設定binlog過期時間並自動刪除

2022-03-13 14:23:29 字數 1921 閱讀 7834

問題:

mysql資料庫由於業務原因,資料量增長迅速,binlog日誌會增加較多,占用大部分磁碟空間。

解決方案:

出於節約空間考慮,可進行刪除多餘binary日誌,並設定定期刪除操作。

1、檢視binlog過期時間

mysql

> show variables like

'expire_logs_days

'; 或者

mysql

>

select

@@global

.expire_logs_days;+--

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

| variable_name | value |+--

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

| expire_logs_days |0|

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

1 row in

set (0.00

sec)

expire_logs_days=0

:表示所有binlog日誌永久都不會失效,不會自動刪除;

目前需求,只想保留七天日誌,其餘日誌打包、壓縮後備份至其他地方:

修改方式:

永久生效(重啟後即生效):

修改配置檔案my.ini(window系統環境下,若為linux環境,則修改my.cnf檔案)檔案:在[

mysqld

]標籤內增加如下內容

expire_logs_days=7

max_binlog_size

=500m

設定之後不會立即清除,觸發條件是:

binlog大小超過max_binlog_size

手動執行flush logs

重新啟動時(mysql將會new乙個新檔案用於記錄binlog)

為了使之生效,需要執行flush logs。

mysql

>

flush logs;

query ok,

0 rows affected, 64 warnings (0.16

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

將bin.000055之前的binlog清掉:

mysql

>purge binary logs to

'bin.000055';

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

mysql

>purge binary logs before '

2019-09-13 23:59:59';

注意,不要輕易手動去刪除binlog,會導致binlog.index和真實存在的binlog不匹配,而導致expire_logs_day失效

二、調整binlog日誌模式

## 檢視binlog日誌模式

mysql

> show variables like "%binlog_format%

";mysql

>

set global binlog_format=

'mixed';

query ok,

0 rows affected (0.00

sec)

方法二:在配置檔案中引數如下:

[mysqld

]log

-bin=/

var/lib/mysql/mysql-

bin#binlog_format

="row"

binlog_format

="mixed" #開啟mixed模式

#binlog_format

="statement"

修改後重啟mysql服務。

mysql設定使用者密碼過期時間

mysql5.7.4之後 修改my.cnf配置檔案 mysqld default password lifetime 90 密碼90天過期 或是 mysqld default password lifetime 0 密碼永不過期或執行時修改 set global default password l...

MySQL 設定使用者密碼過期策略

1.在mysql執行時可以使用超級許可權修改此配置 mysql set global default password lifetime 90 query ok,0 rows affected 0.00 sec 還可以使用alter user命令為每個具體的使用者賬戶單獨設定特定的值,它會自動覆蓋密...

MySQL本地密碼過期處理及永不過期設定

今天在使用mysql的時候,提示 your password has expired 看了一下問題是因為我本地mysql的密碼已經過期了,然後蒐羅了一下網上的解決辦法。我的mysql版本 5.7.20 win10系統 找到mysql的安裝目錄,開啟命令列視窗,把路徑轉到bin目錄下 然後輸入命令 m...