xtrabackup全備 增備 恢復

2021-06-26 20:31:58 字數 2076 閱讀 7606

全備:

innobackupex --no-timestamp --defaults-file=/path/my.cnf    /data/backup/20141106

增量1:

innobackupex --no-timestamp --defaults-file=/path/my.cnf --incremental --incremental-basedir=/data/backup/20141106  /data/backup/20141106-incr

增量2:

innobackupex --no-timestamp --defaults-file=/path/my.cnf --incremental --incremental-basedir=/data/backup/20141106-incr/   /data/backup/20141107-incr

恢復步驟:

。。。5.關閉mysql

6.刪除mysql data目錄下的所有檔案(最好不要這麼幹,萬一恢復失敗捏,就歇菜啦。我一般都是 mv data data_bak)

7.innobackupex --defaults-file=/path/my.cnf --copy-back /data/backup/20141105/

8.修改data(首先需要進入data目錄)目錄許可權 chown -r mysql:mysql *

8.啟動mysql.到處資料就完美的恢復啦。

注意多例項的情況是需要重新把多例項的配置檔案拆分成單個。然後--defaults-file這個命令指向單個配置檔案。

完整備份的原理:

對於innodb,xtrabackup基於innodb的crash-recovery功能進行備份。

crash-recovery是這樣的:innodb維護了乙個redo log,又稱為 transaction log,也叫事務日誌,它包含了innodb資料的所有改動情況。innodb啟動的時候先去檢查datafile和transaction log,然後應用所有已提交的事務並回滾所有未提交的事務。

xtrabackup在備份的時候並不鎖定表,而是一頁一頁地複製innodb的資料,與此同時,xtrabackup還有另外乙個執行緒監視著transactions log,一旦log發生變化,就把變化過的log pages複製走(因為transactions log檔案大小有限,寫滿之後,就會從頭再開始寫,新資料可能會覆蓋到舊的資料,所以一旦變化就要立刻複製走)。在全部資料檔案複製完成之後,停止複製logfile。

xtrabackup採用了其內建的innodb庫以read-write模式開啟innodb的資料檔案,然後每次讀寫1mb(1mb/16kb=64page)的資料,一頁一頁地遍歷,同時用innodb的buf_page_is_corrupted()函式檢查此頁的資料是否正常,如果正常則進行複製,如不正常則重新讀取,最多重讀10次,如果還是失敗,則備份失敗退出。複製transactions log的原理也是一樣的,只不過每次讀寫512kb(512kb/16kb=32page)的資料。

由於xtrabackup其內建的innodb庫開啟檔案的時候是rw的,所以執行xtrabackup的使用者,必須對innodb的資料檔案具有讀寫許可權。

由於xtrabackup要從檔案系統中複製大量的資料,所以它盡可能地使用posix_fadvise(),來告訴os不要快取讀取到的資料(因為這些資料不會重用到了),從而提公升效能。如果要快取的話,大量的資料會對os的虛擬記憶體造成很大的壓力,其它程序(如mysqld)很有可能會被swap出去,這樣就出問題了。同時,xtrabackup在讀取資料的時候還盡可能地預讀。

由於不鎖表,所以複製出來的資料是不一致的,資料的一致性是在恢復的時候使用crash-recovery進行實現的。

對於myisam,xtrabackup還是首先鎖定所有的表,然後複製所有檔案。

增量備份的原理:

在完整備份和增量備份檔案中都有乙個檔案xtrabackup_checkpoints會記錄備份完成時檢查點的lsn。在進行新的增量備份時,xtrabackup會比較表空間中每頁的lsn是否大於上次備份完成的lsn,如果是,則備份該頁,並記錄當前檢查點的lsn。

xtrabackup備份(全備,增備)

xtrabackup的介紹 mysql冷備 mysqldump mysql熱拷貝都無法實現對資料庫進行增量備份。在實際生產環境中增量備份是非常實用的,如果資料大於50g或100g,儲存空間足夠的情況下,可以每天進行完整備份,如果每天產生的資料量較大,需要定製資料備份策略。例如每週實用完整備份,周一到...

Xtrabackup恢復資料庫(增備和全備)

安裝部署 yum install epel release yum list grep xtrabackup yum install percona xtrabackup.x86 64全備之後可以在資料庫增加資料 innobackupex defaults file data 3306 my.cnf...

Mongodb全備 增備 oplog恢復誤刪資料

買了兩瓶進口白蘭地,想著品嚐品嚐,我基本上一年也不喝酒,當然除了過年的時候是避免不了的。在上班期間邊喝邊醉邊工作。太勁大了,一看才四十度。感覺比國內的後勁大得多,基本上喝上六七口就上頭,完全扛不住的節奏。我都沒敢想伏特加,估計更扛不住。不過酒還是要少喝。言歸正傳,mongo這幾年也好多公司再用了,於...