MYSQL日誌的正確刪除方法詳解

suliver發表於2021-09-09

本文詳細講述了MYSQL日誌的正確刪除方法。分享給大家供大家參考,具體如下:

1.查詢:

?


MySQL> show binary logs;+—————-+———–+| Log_name | File_size |+—————-+———–+| mysql-bin.000001 | 150462942 || mysql-bin.000002 | 125 || mysql-bin.000003 | 106 |+—————-+———–+

2.刪除bin-log(刪除mysql-bin.000003之前的而沒有包含mysql-bin.000003)

?

12 mysql> purge binary logs to 'mysql-bin.000003';Query OK, 0 rows affected (0.16 sec)

3. 查詢結果(現在只有一條記錄了.)

?


mysql> show binlog events/G*************************** 1. row ***************************Log_name: mysql-bin.000003Pos: 4Event_type: Format_descServer_id: 1End_log_pos: 106Info: Server ver: 5.1.26-rc-log, Binlog ver: 41 row in set (0.01 sec)(mysql-bin.000001和mysql-bin.000002已被刪除)mysql> show binary logs;+—————-+———–+| Log_name | File_size |+—————-+———–+| mysql-bin.000003 | 106 |+—————-+———–+1 row in set (0.00 sec)

(刪除的其它格式運用!)

?

12 PURGE {MASTER | BINARY} LOGS TO 'log_name'PURGE {MASTER | BINARY} LOGS BEFORE 'date'

用於刪除列於在指定的日誌或日期之前的日誌索引中的所有二進位制日誌。這些日誌也會從記錄在日誌索引檔案中的清單中被刪除,這樣被給定的日誌成為第一個。

例如:

?

12 PURGE MASTER LOGS TO 'mysql-bin.010′;PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00′;

清除3天前的 binlog

?

1 PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);

BEFORE變數的date自變數可以為'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同義詞。

如果您有一個活性的從屬伺服器,該伺服器當前正在讀取您正在試圖刪除的日誌之一,則本語句不會起作用,而是會失敗,並伴隨一個錯誤。不過,如果從屬伺服器是休止的,並且您碰巧清理了其想要讀取的日誌之一,則從屬伺服器啟動後不能複製。當從屬伺服器正在複製時,本語句可以安全執行。您不需要停止它們。

要清理日誌,需按照以下步驟:

1. 在每個從屬伺服器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日誌。

2. 使用SHOW MASTER LOGS獲得主伺服器上的一系列日誌。

3. 在所有的從屬伺服器中判定最早的日誌。這個是目標日誌。如果所有的從屬伺服器是更新的,這是清單上的最後一個日誌。

4. 製作您將要刪除的所有日誌的備份。(這個步驟是自選的,但是建議採用。)

5. 清理所有的日誌,但是不包括目標日誌。

在contab設定:

複製程式碼 程式碼如下:0 1 * * *  `mysql -uroot -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);'`


更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》、《MySQL資料庫鎖相關技巧彙總》及《MySQL常用函式大彙總》

希望本文所述對大家MySQL資料庫計有所幫助。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2370/viewspace-2811297/,如需轉載,請註明出處,否則將追究法律責任。

相關文章