1.全量備份mysql
簡單的說就是將全部數據庫或一個庫所有備份。web
2.增量備份sql
從上一次全量備份以後到下一次全量備份以前都叫作增量備份。數據庫
對於mysql,binlong日誌就是mysql數據,對binlong的備份就是對mysql的備份。bash
備份的時候要鎖表,影響用戶體驗,因此備份的頻率各有優缺點。
ide
mysql的mysqldump備份何時派上用場?日誌
遷移或者升級數據庫時,blog
增長從庫的時候ip
人爲的DDLDML語句,主庫沒有辦法了,全部庫都會執行,恢復備份ci
跨機房災備,須要備份到異地。
mysql數據恢復的必要條件
1.開啓binlog,存在一份全備以後的時候到出問題時刻的全部增量的binlog文件備份。
所有備份的命令:
[root@localhost ~]# mysqldump -uroot -p123456 -F --single-transaction -A -B | gzip > test.sql.gz
備份數據和恢復數據的時候,必定要將表鎖住。
模擬一下:
先對一個庫進行全量備份:
#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添加到別名裏面;
另外一種方法指定開赴位置和結束位置
選項:--start-position --stop-position