mysql binlog日誌自動清理及手動刪除
說明:
當開啟mysql資料庫主從時,會產生大量如mysql-bin.00000* log的檔案,這會大量耗費您的硬碟空間。
mysql-bin.000001
mysql-bin.000002
mysql-bin.000003
mysql-bin.000004
mysql-bin.000005
…
有三種解決方法:
1.關閉mysql主從,關閉binlog;
2.開啟mysql主從,設定expire_logs_days;
3.手動清除binlog檔案,> PURGE MASTER LOGS TO ‘MySQL-bin.010′;------ ‘MySQL-bin.010′之前的全部被清除
實現:
1.關閉mysql主從,關閉binlog
LNMP一鍵安裝包安裝的MySQL預設是開啟了日誌檔案的,如果資料操作比較頻繁就會產生大量的日誌,在/usr/local/mysql /var/下面產生mysql-bin.0000* 類似的檔案,而且一般都在幾十MB到幾個GB,更甚會吃掉整個硬碟空間,從來導致mysql無法啟動或報錯,如vps論壇使用者的反饋。
如何關閉MySQL的日誌功能:
刪除日誌:
執行:/usr/local/mysql/bin/mysql -u root -p
輸入密碼登入後再執行:reset master;
修改/etc/my.cnf 檔案,找到
log-bin=mysql-bin
binlog_format=mixed
再這兩行前面加上#,將其註釋掉,再執行/etc/init.d/mysql restart即可。
2.重啟mysql,開啟mysql主從,設定expire_logs_days
# vim /etc/my.cnf
//修改expire_logs_days,x是自動刪除的天數,一般將x設定為短點,如10
expire_logs_days = x //二進位制日誌自動刪除的天數。預設值為0,表示“沒有自動刪除”
此方法需要重啟mysql,附錄有關於expire_logs_days的英文說明
當然也可以不重啟mysql,開啟mysql主從,直接在mysql裡設定expire_logs_days
> show binary logs;
> show variables like '%log%';
> set global expire_logs_days = 10;
3.手動清除binlog檔案
# /usr/local/mysql/bin/mysql -u root -p
> PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY); //刪除10天前的MySQL binlog日誌,附錄2有關於PURGE
MASTER LOGS手動刪除用法及示例
> show master logs;
也可以重置master,刪除所有binlog檔案:
# /usr/local/mysql/bin/mysql -u root -p
> reset master; //附錄3有清除binlog時,對從mysql的影響說明
附錄:
1.expire_logs_days英文說明
Where X is the number of days you’d like to keep them around. I would recommend 10, but this depends on how busy your MySQL server is and how fast these log files grow. Just make sure it is longer than the slowest slave takes to replicate the data from your master.
Just a side note: You know that you should do this anyway, but make sure you back up your mysql database. The binary log can be used to recover the database in certain situations; so having a backup ensures that if your database server does crash, you will be able to recover the data.
2.PURGE MASTER LOGS手動刪除用法及示例,MASTER和BINARY是同義詞
> PURGE {MASTER | BINARY} LOGS TO
'log_name'
> PURGE {MASTER | BINARY} LOGS BEFORE 'date'
刪除指定的日誌或日期之前的日誌索引中的所有二進位制日誌。這些日誌也會從記錄在日誌索引檔案中的清單中被刪除MySQL BIN-LOG 日誌,這樣被給定的日誌成為第一個。
例項:
> PURGE MASTER LOGS TO 'MySQL-bin.010'; //清除MySQL-bin.010日誌
> PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00'; //清除2008-06-22
13:00:00前binlog日誌
> PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); //清除3天前binlog日誌BEFORE,變數的date自變數可以為'YYYY-MM-DD hh:mm:ss'格式。
3.清除binlog時,對從mysql的影響
如果您有一個活性的從屬伺服器,該伺服器當前正在讀取您正在試圖刪除的日誌之一,則本語句不會起作用,而是會失敗,並伴隨一個錯誤。不過,如果從屬伺服器是休止的,並且您碰巧清理了其想要讀取的日誌之一,則從屬伺服器啟動後不能複製。當從屬伺服器正在複製時,本語句可以安全執行。您不需要停止它們。
原文參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29893219/viewspace-1851579/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [轉] MySQL binlog 日誌自動清理及手動刪除MySql
- mysql binlog日誌刪除MySql
- MySQL 正確刪除 binlog 日誌MySql
- 手動刪除歸檔日誌
- crontab不能自動刪除歸檔日誌
- oracle dataguard 自動刪除歸檔日誌Oracle
- 如何定期自動刪除歸檔日誌
- 如何安全刪除mysql下的binlog日誌薦MySql
- MySQL定期自動刪除表MySql
- Docker 日誌自動輪轉和清理配置Docker
- 教你自動恢復MySQL資料庫的日誌檔案(binlog)MySql資料庫
- 備庫自動刪除已應用的歸檔日誌
- mysql 誤刪除表內資料,透過binlog日誌恢復MySql
- mysql bin 日誌的刪除MySql
- mysql清理日誌MySql
- 配置rman來自動刪除應用過的歸檔日誌
- oracle rman不能自動刪除歸檔日誌備份解決Oracle
- MySQL自動備份指令碼30天自動刪除MySql指令碼
- mysql binlog 刪除master- binlogMySqlAST
- linux自動清理Docker標準輸出日誌LinuxDocker
- MySQL 的日誌:binlogMySql
- mysql清除binlog日誌MySql
- MySQL的binlog日誌MySql
- 清除MySQL Binlog日誌MySql
- Mysql之binlog日誌說明及利用binlog日誌恢復資料操作記錄MySql
- 自動刪除歸檔日誌的指令碼(尤其是dataguard環境)指令碼
- Mysql-binlog日誌-TMySql
- oracle刪除日誌Oracle
- LINUX 手動建立SWAP檔案及刪除Linux
- 刪除redo所有日誌,資料庫無法啟動資料庫
- asm下如何自動刪除standby上已經applied過的歸檔日誌ASMAPP
- 資料庫收縮,刪除日誌,自動收縮,資料庫分離附加資料庫
- MYSQL日誌的正確刪除方法詳解MySql
- 手動刪除資料庫資料庫
- elasticsearch日誌刪除命令Elasticsearch
- 日誌刪除指令碼指令碼
- MySQL 日誌系統 redo log、binlogMySql
- mysql檢視binlog日誌詳解MySql