mysql刪除binlog日誌及日誌恢復數據

基本上你們裝mysql,都會開啓binlog功能,開啓這個功能的好處是,往後方便恢復數據,而壞處是日誌文件增加速度快,很快佔會佔滿磁盤空間。mysql

因此咱們要按期或手工來刪除過大的日誌文件。sql

刪除日誌文件的方法大概有以下幾中:ide

1、設置日誌保留時長expire_logs_days自動刪除spa

  
  
  
  
  1. #查看當前日誌保存天數:  
  2.  
  3. show variables like ‘%expire_logs_days%’;  
  4.  
  5. #這個默認是0,也就是logs不過時,可經過設置全局的參數,使他臨時生效:  
  6.  
  7. set global expire_logs_days=7;  
  8.  
  9. #設置了只保留7天BINLOG, 下次重啓mysql這個參數默認會失敗,因此需在my.cnf中設置  
  10.  
  11. expire_logs_days = 7  

2、手動刪除BINLOG (purge binary logs)rest

  
  
  
  
  1. #用於刪除列於在指定的日誌或日期以前的日誌索引中的全部二進制日誌。這些日誌也會從記錄在日誌索引文件  
  2.  
  3. PURGE {MASTER | BINARY} LOGS TO ‘log_name’  
  4. PURGE {MASTER | BINARY} LOGS BEFORE ‘date’  
  5.  
  6. #例如:  
  7.  
  8. PURGE MASTER LOGS TO ‘mysql-bin.010′;  
  9. PURGE MASTER LOGS BEFORE ‘2008-06-22 13:00:00′;  
  10. PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  
  11.  

其它:日誌

  
  
  
  
  1. 查看當前日誌文件列表:show binary logs; 

使用binlog日誌的目的是爲了方便恢復數據,因此咱們不光要會刪除,還要會用日誌來恢復數據。code

使用binlog恢復數據:索引

使用mysqlbinlog命令恢復日誌string

  
  
  
  
  1. mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword   
  2.  
  3. ※附錄   
  4.  
  5. #一、關於mysqlbinlog在mysql 5.0上的使用方法,能夠參考:官方資料   
  6.  
  7. #二、若是不知道log-bin存放的文件位置,可使用下面的命令查看:   
  8.  
  9. mysql -uroot -ppassword -e 'SHOW BINLOG EVENTS \G'   
  10.  
  11. #三、當只是須要恢復部分記錄的時候,你可使用時間點或位置點來定位,例如:   
  12.  
  13. mysqlbinlog --start-date="2005-04-20 9:01:00" --stop-date="2005-04-20 10:00:01" /var/log/mysql/bin.123456|mysql -uroot -ppassword[code]   
  14.  
  15. #意思是恢復4月20日早上9點到10點這一段時間的數據。   
  16.  
  17. mysqlbinlog --start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd   
  18.  
  19. #意思是重作368301到368312位置點之間的操做。(位置點能夠就是用mysqlbinlog看到的at xxx節點)   
  20.  
  21. mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql   
  22.  
  23. #一樣的,若是咱們只是想查看某段時間的操做,直接把它導到一個文件便可。  
相關文章
相關標籤/搜索