mysql增量備份
小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog志。
1、首先做一次完整備份:
這時候就會得到一個全備文件test.sql
在sql文件中我們會看到:
代碼如下 復制代碼 -- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;是指備份後所有的更改將會保存到bin-log.000002二進制文件中。
2、在test庫的t_student表中增加兩條記錄,然後執行flush logs命令。這時將會產生一個新的二進制日志文件bin-log.000003,bin-log.000002則保存了全備過後的所有更改,既增加記錄的操作也保存在了bin-log.00002中。
3、再在test庫中的a表中增加兩條記錄,然後誤刪除t_student表和a表。a中增加記錄的操作和刪除表a和t_student的操作都記錄在bin-log.000003中。
二、mysql恢復
1、首先導入全備數據
,也可以直接在mysql命令行下面用source導入
2、恢復bin-log.000002
代碼如下 復制代碼mysqlbinlog bin-log.000002 |mysql -h10.6.208.183 -utest2 -p123 -P3310
3、恢復部分 bin-log.000003
在general_log中找到誤刪除的時間點,然後更加對應的時間點到bin-log.000003中找到相應的position點,需要恢復到誤刪除的前面一個position點。
可以用如下參數來控制binlog的區間
--start-position 開始點 --stop-position 結束點
--start-date 開始時間 --stop-date 結束時間
找到恢復點後,既可以開始恢復。
代碼如下 復制代碼mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h10.6.208.183 -utest2 -p123 -P3310
增量備份文件的維護:
l Mysql控制台下執行一下指令可以清除二進制日志文件:reset master;
l 在my.ini中可以設置日志過期天數過期的日志會被自動刪除,有利於減少我們管理日志的工作量:
expire_logs_day=9
這裡設定日志可以保存9天,9天之後過期的日志將被自動刪除。
在日常應用中可以將自動全備份和增量備份結合在一起使用,例如,每周日進行一次全備份,將增量備份的日志清理時間設置為7天以上。如果那天數據庫出了問題,可以全備份和增量備份配合恢復。