|
【MySql】如何刪除 bin log 一 語(yǔ)法如下: PURGE {MASTER | BINARY} LOGS TO 'log_name' PURGE {MASTER | BINARY} LOGS BEFORE 'date' 用于刪除在指定的日志或日期之前的日志索引中的所有二進(jìn)制日志。這些日志也會(huì)從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為第一個(gè)。 例如: 1 刪除指定日志之前的bin log PURGE MASTER LOGS TO 'mysql-bin.010'; 1) 查看當(dāng)前的log mysql> show binary logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 126 | | mysql-bin.000002 | 88416282 | | mysql-bin.000003 | 198081520 | | mysql-bin.000004 | 1358 | | mysql-bin.000005 | 126 | | mysql-bin.000006 | 126 | | mysql-bin.000007 | 126 | | mysql-bin.000008 | 315 | | mysql-bin.000009 | 126 | | mysql-bin.000010 | 126 | | mysql-bin.000011 | 504 | | mysql-bin.000012 | 107 | | mysql-bin.000013 | 107 | | mysql-bin.000014 | 107 | | mysql-bin.000015 | 107 | | mysql-bin.000016 | 521 | | mysql-bin.000017 | 315 | | mysql-bin.000018 | 958 | +------------------+-----------+ 18 rows in set (0.04 sec) 2) 刪除mysql-bin.000010 之前的日志 mysql> purge binary logs to 'mysql-bin.000010'; Query OK, 0 rows affected (0.35 sec) mysql> show binary logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000010 | 126 | | mysql-bin.000011 | 504 | | mysql-bin.000012 | 107 | | mysql-bin.000013 | 107 | | mysql-bin.000014 | 107 | | mysql-bin.000015 | 107 | | mysql-bin.000016 | 521 | | mysql-bin.000017 | 315 | | mysql-bin.000018 | 958 | +------------------+-----------+ 9 rows in set (0.00 sec) 3)顯示第一個(gè)二進(jìn)制日志: mysql>show binlog events; +------------------+-----+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+-----+- | mysql-bin.000010 | 4 | Format_desc | 1 | 107 | Server ver: 5.5.18-log, Binlog ver: 4 | | mysql-bin.000010 | 107 | Stop | 1 | 126 | | +------------------+-----+-- 2 rows in set (0.01 sec) 2 刪除指定日期之前的bin log PURGE MASTER LOGS BEFORE '2011-12-05 13:00:00'; 3 清除N天前的 binlog PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL N DAY); BEFORE變量的date自變量可以為'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同義詞。 下面的語(yǔ)句可以清除 7 天前的binlog, PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 7 DAY); 在contab設(shè)置定期每天凌晨3點(diǎn)刪除7天前的binlog: 0 3 * * * `mysql -uroot -e 'PURGE BINARY LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 7 DAY);'` 二 主從架構(gòu)的日志刪除 對(duì)于主從結(jié)構(gòu)的mysql系統(tǒng),slave服務(wù)器當(dāng)前正在讀取試圖刪除的日志之一,則刪除語(yǔ)句失敗,并且報(bào)錯(cuò)。不過,如果在slave服務(wù)器是停止運(yùn)行期間清理了其未讀取的日志之一,則slave服務(wù)器啟動(dòng)后不能復(fù)制。當(dāng)slave服務(wù)器正在復(fù)制時(shí),刪除日志的語(yǔ)句可以安全運(yùn)行,并不需要停止它們。 主從架構(gòu)的可以按照以下步驟清理日志: 1. 在每個(gè)SLAVE服務(wù)器上,使用SHOW SLAVE STATUS來(lái)檢查它正在讀取的日志。 2. 使用SHOW MASTER LOGS獲得主服務(wù)器上的已經(jīng)歸檔的日志。 3. 在所有的slave服務(wù)器中判定最早的日志,既截至目標(biāo)日志。如果所有的slave服務(wù)器是更新的,這是清單上的最后一個(gè)日志。 4. 備份將要?jiǎng)h除的所有日志,防止意外~ 5. 刪除日志,但不包括目標(biāo)日志。 三 相關(guān)參數(shù): 配置文件my.cnf的參數(shù)expire-logs-days 指定了日志過期的天數(shù),比如expire-logs-days = 20 表示日志保留20,超過20則設(shè)置為過期的~可以根據(jù)實(shí)際情況來(lái)設(shè)置合適的值。
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|