1.全量備份和增量備份node
1.1全量備份mysql
就是對現有的數據進行所有備份,以前作的備份都可捨棄,以最新的全備爲基點。sql
a.全備全部數據庫數據庫
Innodb引擎:服務器
[root@leader mysql]#mysqldump -uroot -proot -F -A -B --events --single-transaction --master-data=1|gzip>/data/backup/mysql_backup_$(date +%F).sql.gz併發
Myisam引擎:日誌
[root@leader mysql]#mysqldump -uroot -proot -F -A -B --events --lock-all-tables --master-data=1|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz事件
參數說明:事務
-F參數:刷新binlogip
-A參數:備份全部庫
-B參數:備份數據的時候添加建庫建表等語句
--events參數至關於-E:在輸出中包含轉儲數據庫的事件調度器事件
--master-data參數:若是參數值等於1,在備份文件中添加change master語句在主從同步change master的時候就不用制定binlog日誌文件以及更新的位置,若是等於2則不會添加change master語句。
--single-transaction參數:用於Inode引擎的備份
--lock-all-tables參數:鎖表,它針對於MyIsam引擎的備份。在這種狀況下日誌之刷新一次由於全部的表的都是鎖着的(容許併發插入數據)。若是想讓你的轉儲和日誌刷新發生在同一時刻,應該將--lock-all-tables參數、--master-data參數和flush-logs(即-F參數)一塊兒使用,對於Innode這樣的事務表,單事務表市更好的選擇,覺得它根本不用鎖表。
b.備份指定數據庫
Innodb引擎:
[root@leader mysql]mysqldump -uroot -proot -F -B --events --single-transaction --master-data=1 test|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz
Myisam引擎:
[root@leader mysql]mysqldump -uroot -proot -F -B --events --lock-all-tables --master-data=1 test|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz
1.2 增量備份
增量備份的數據是從上次全量備份以後更新的數據,對mysql來講binlog日誌文件存儲着增量備份的數據。增量備份能夠按天備份,次日作全備了,理論上前一天的備份就沒用了。通常咱們主服務器的binlog日誌文件保持七天(受my.cnf配置文件中expire_logs_days控制),備份服務器上增量備份通常保持180天。全量被份和增量備份分爲兩種狀況,第一種狀況就是按天備份一天作一次全量備份,天天零點以前作增量備份,零點以後作全量備份;第二種狀況就是按天全備也能夠按周全備,一週作一次全備天天作一次增量備份。
按天全備的優勢:恢復時間短、維護成本低
缺點:佔用空間多,佔用系統資源多,常常鎖表影響用戶體驗。
按周全備的優勢:佔用空間少,佔用系統資源少用戶體驗好一些。
缺點:恢復麻煩維護正本高,時間長。
企業場景全備和增量的頻率是怎麼作的呢?
(1)中小公司,全量通常是天天一次,業務流量低谷執行全備,執行前須要鎖表。
(2)單臺數據庫沒有作主從同步,如何增量?用rsync(配合定時任務頻率大點,或者inotify和主從複製)把全部binlog備份到遠程服務器,儘可能作主從複製。
rsync –avz /data/3306/mysql-bin.000* rsync_backup@192.168.1.116::backup –-password-file=/etc/rsync.password
(3)大公司周備,每週六00點一次全量,下週日-下週六00點前都是增量。
優勢:節省備份時間,減少備份壓力,缺點:增量的binlog文件副本太多,還原會很麻煩。
(4)一主多從,會有一個從庫作備份,延遲同步。
Mysql的mysqldump備份何時派上用場?
(1)遷移或者升級數據庫時。
(2)增長從庫的時候,由於硬件或特殊異常狀況,主庫或從庫宕機,主從能夠切換,無需備份。把其中一個同步最快的切換爲主庫便可。
(3)人爲的DDL、DML語句,主從庫沒辦法了,全部庫都會執行,此時須要備份。
(4)跨機房災備,需備份拷貝走數據。
2.MySQL增量恢復必備條件
主庫和從庫開啓binlog
[root@leader mysql]# egrep "\[mysqld]|log-bin" /etc/my.cnf
[mysqld]
log-bin = /var/log/mysql/mysql-bin.log
小結:增量恢復的條件:
存在一份全備數據和全備以後的某一時刻到出問題時刻的全部增量binlog文件備份。
3.全備即增量備份數據恢復思想
恢復思想就是先找到發生故障的緣由,誰在何時作了什麼操做,檢查是否是這個操做致使數據庫故障。以後儘可能中止數據庫對外訪問,先備份0:00到十點更新的數據binlog日誌文件,刷新binlog。第一步先恢復全備,第二步增量恢復0:00到10:00這個時間段的數據。