mysql全量備份與增量備份

1.全量備份mysql

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

2.增量備份sql

        從上一次全量備份以後到下一次全量備份以前都叫作增量備份。數據庫


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


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


mysql的mysqldump備份何時派上用場?日誌

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

  2. 增長從庫的時候ip

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

  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

相關文章
相關標籤/搜索