mysql全量備份與增量備份

1.全量備份

       簡單的說就是將所有數據庫或一個庫全部備份。

2.增量備份

        從上一次全量備份之後到下一次全量備份之前都叫做增量備份。


對於mysql,binlong日誌就是mysql數據,對binlong的備份就是對mysql的備份。


備份的時候要鎖表,影響用戶體驗,所以備份的頻率各有優缺點。


mysql的mysqldump備份什麼時候派上用場?

  1. 遷移或者升級數據庫時,

  2. 增加從庫的時候

  3. 人爲的DDLDML語句,主庫沒有辦法了,所有庫都會執行,恢復備份

  4. 跨機房災備,需要備份到異地。



mysql數據恢復的必要條件

   1.開啓binlog,存在一份全備之後的時候到出問題時刻的所有增量的binlog文件備份。

 全部備份的命令:

[root@localhost ~]# mysqldump -uroot -p123456 -F --single-transaction -A -B | gzip > test.sql.gz


備份數據和恢復數據的時候,一定要將表鎖住。


模擬一下:

  1. 先對一個庫進行全量備份:

#mysqldump -uroot -p123456 -B --master-data=1 -F xpg | gzip > xpg_$(date +%F).sql.gz

2.然後使用insert給xpg這個庫插入兩條數據

3.使用drop  database dbname;刪除這個庫,等等

4.就是溝通誰進行的什麼操作並結合binlog日誌

5.下來就是重點:恢復,首先將表鎖住,或者停止web服務禁止向mysql裏面寫數據。

6.先將全量備份的數據進行恢復,由於使用選項-F指定過,所以接下來的操作會寫入到新的binlog日誌文件中,將下來的文件中的sql語句提取出來,當然不要drop命令,然後執行一下sql命令就好了。


*需要注意的是,如果不是drop,而是update破壞數據,解決起來就複雜,爲了防止update的錯誤操作:在登陸mysql的時候使用選項

-U:作用就是在執行update的時候如果不使用where條件判斷就會報錯。可以將mysql -U添加到別名裏面;

image.png


另一種方法指定開赴位置和結束位置

選項:--start-position  --stop-position



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章