mysql增量備份:小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份,增量備份的原理就是使用了mysql的binlog志.
1、首先做一次完整備份,代碼如下:
mysqldump -h10.6.208.183 -utest2 -p123 -P3310 --single-transaction --master-data=2 test>test.sql
這時候就會得到一個全備文件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 -h10.6.208.183 -utest2 -p123 -P3310 < test.sql
也可以直接在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 //Vevb.com
這里設定日志可以保存9天,9天之后過期的日志將被自動刪除.
在日常應用中可以將自動全備份和增量備份結合在一起使用,例如,每周日進行一次全備份,將增量備份的日志清理時間設置為7天以上,如果那天數據庫出了問題,可以全備份和增量備份配合恢復.
新聞熱點
疑難解答