程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql數據庫增量備份與恢復方法

mysql數據庫增量備份與恢復方法

編輯:MySQL綜合教程

本文章就不介紹那種簡單的使用mysqldump對數據庫進行相關數據導入導出操作了,這裡我們介紹基於mysql的binlog志進行增量備份數據與恢復數據方法。

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

這裡設定日志可以保存9天,9天之後過期的日志將被自動刪除。


在日常應用中可以將自動全備份和增量備份結合在一起使用,例如,每周日進行一次全備份,將增量備份的日志清理時間設置為7天以上。如果那天數據庫出了問題,可以全備份和增量備份配合恢復。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved