mysql8新特性之binlog_expire_logs_seconds淺析
在mysql 8.0版本中新增了binlog_expire_logs_seconds,該參數(shù)表示binlog的失效日期單位秒。
8.0之前的版本,binlog的失效日志用expire_logs_days來(lái)配置,單位是天。
當(dāng)mysql啟動(dòng)時(shí),參數(shù)文件中binlog_expire_logs_seconds和expire_logs_days都沒(méi)配置的時(shí)候,mysql會(huì)使用binlog_expire_logs_seconds作為默認(rèn)配置,并且默認(rèn)值為2592000秒,即30天。
當(dāng)mysql啟動(dòng)時(shí),參數(shù)文件中binlog_expire_logs_seconds和expire_logs_days有一個(gè)設(shè)置為非0值則非0值的參數(shù)作為binlog日志的失效期。
在使用了binlog_expire_logs_seconds作為binlog的配置文件,此時(shí)在修改expire_logs_days會(huì)拋出錯(cuò)誤,不允許同時(shí)使用binlog_expire_logs_seconds和expire_logs_days.
該參數(shù)支持動(dòng)態(tài)修改,并且支持持久化到配置文件:
mysql> set global binlog_expire_logs_seconds=604800;</code> <code>Query OK, 0 rows affected (0.00 sec)</code> <code>mysql> show variables like '%expire_logs%';</code> <code>+--------------------------------+-------+</code> <code>| Variable_name | Value |</code> <code>+--------------------------------+-------+</code> <code>| binlog_expire_logs_seconds | 604800|</code> <code>| expire_logs_days | 0 |</code> <code>+--------------------------------+-------+</code> <code>3 rows in set (0.00 sec)
--持久化:
mysql> set persist binlog_expire_logs_seconds=604800;</code> <code>Query OK, 0 rows affected (0.00 sec)
也可以通過(guò)修改配置文件,將binlog_expire_logs_seconds=604800 加到[mysqld]下
總結(jié)
如果 MySQL 每天的數(shù)據(jù)修改很少,產(chǎn)生的 binlog 很小,而max_binlog_size
設(shè)置很大。每次在達(dá)到單個(gè) binlog 的最大大小前,執(zhí)行定時(shí)任務(wù)調(diào)用 xtrabackup 備份,備份時(shí)加的備份鎖LOCK INSTANCE FOR BACKUP
和FLUSH NO_WRITE_TO_BINLOG BINARY LOGS
會(huì)導(dǎo)致:binlog 刷新了,但是無(wú)法自動(dòng)刪除過(guò)期的 binlog 。新的 binlog 寫(xiě)一天沒(méi)有達(dá)到最大大小,又進(jìn)行備份,每天循環(huán)這個(gè)邏輯,導(dǎo)致過(guò)期的 binlog 越來(lái)越多,一直無(wú)法被自動(dòng)刪除。
當(dāng)然,如果你使用的是 MySQL5.7,那并不會(huì)有這個(gè)問(wèn)題,雖然 MySQL5.7 時(shí)備份時(shí)會(huì)加全局鎖,但是并不影響過(guò)期 binlog 的自動(dòng)刪除。從這個(gè)角度看,這是個(gè) bug,所以報(bào)給官方后很快被確認(rèn)了:https://bugs.mysql.com/bug.php?id=104785
等待修復(fù)的過(guò)程是漫長(zhǎng)的,如果你恰好遇見(jiàn)了這個(gè)冷門(mén)的 bug,可以把 max_binlog_size
調(diào)小,保證在備份前 binlog 就能夠達(dá)到最大大小,自然的刷新可以正常觸發(fā)自動(dòng)刪除。
到此這篇關(guān)于mysql8新特性之binlog_expire_logs_seconds的文章就介紹到這了,更多相關(guān)mysql8新特性binlog_expire_logs_seconds內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql查詢(xún)字符串中某個(gè)字符串出現(xiàn)的次數(shù)(實(shí)例詳解)
這篇文章主要介紹了mysql查詢(xún)字符串中某個(gè)字符串出現(xiàn)的次數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04MySQL 配置文件 my.cnf / my.ini 區(qū)別解析
充分理解 MySQL 配置文件中各個(gè)變量的意義對(duì)我們有針對(duì)性的優(yōu)化 MySQL 數(shù)據(jù)庫(kù)性能有非常大的意義,這篇文章主要介紹了MySQL 配置文件 my.cnf / my.ini 區(qū)別,需要的朋友可以參考下2022-11-11MySQL內(nèi)存使用率高且不釋放問(wèn)題排查與總結(jié)
這篇文章主要給大家介紹了MySQL內(nèi)存使用率高且不釋放問(wèn)題排查與總結(jié),文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下2024-09-09命令行模式下備份、還原 MySQL 數(shù)據(jù)庫(kù)的語(yǔ)句小結(jié)
為了安全起見(jiàn),需要經(jīng)常對(duì)數(shù)據(jù)庫(kù)作備份,或者還原,學(xué)會(huì)在命令行模式下備份、還原數(shù)據(jù)庫(kù),還是很有必要2012-11-11MySQL中rank() over、dense_rank() over、row_number()&n
本文主要介紹了MySQL中rank() over、dense_rank() over、row_number() over用法介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03MySQL InnoDB行記錄存儲(chǔ)結(jié)構(gòu)分析
工作中我們基本上都是用MySQL的InnoDB存儲(chǔ)引擎,但是大家有去了解過(guò)它的底層存儲(chǔ)結(jié)構(gòu)嗎,想必絕大部分人不知道或者說(shuō)不知道怎么查相關(guān)知識(shí),剛好來(lái)看這篇文章就對(duì)了2023-07-07Mysql實(shí)戰(zhàn)練習(xí)之簡(jiǎn)單圖書(shū)管理系統(tǒng)
由于課設(shè)需要做這個(gè),于是就抽了點(diǎn)閑余時(shí)間,寫(xiě)了下,用Mysql與Java,基本全部都涉及到,包括借書(shū)/還書(shū),以及書(shū)籍信息的更新,查看所有的書(shū)籍。需要的朋友可以參考下2021-09-09MySQL自動(dòng)停機(jī)的問(wèn)題處理實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于MySQL自動(dòng)停機(jī)的問(wèn)題處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05MySql 5.7.20安裝及data和my.ini文件的配置
本文通過(guò)圖文并茂的形式給大家介紹了MySql 5.7.20安裝及data和my.ini文件的配置方法,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-11-11