您好,登錄后才能下訂單哦!
innobackupex
全備份原理:
1.執行一次checkpoint,找到最后那個checkpoint的lsn
2.從這個lsn開始記錄所有產生的redo log
3.cp innodb data
4.flush tables with read lock
5.cp 非innodb 數據(myisam數據,.FYM,FIM等文件)
6.鎖定binlog文件并且記錄當前的binlog postion
7.釋放所有binlog 鎖 ,釋放unlock tables
增量備份的原理:在第三步的有所變化
3.數據頁面的比對(lsn),記錄下有lsn不一樣的數據頁面
備份命令:
全備:
innobackupex --user=$user --password=$pass --socket=$sock_path --no-timestamp --parallel=$num $DIR$basedir/basebk
增量備份:
innobackupex --user=$user --password=$pass --socket=$sock_path --no-timestamp --parallel=$num --incremental-basedir=$dir_bak
--incremental $dir_incre
常用參數:
--no-timestamp : 使用自定義目錄
--parallel=$num : 并行的線程數
--databases:指定需要備份db列表,還可以指定到表
--incremental-basedir:上一次備份目錄
innobackupex 恢復原理:將page head 部的lsn和 redo log 中lsn進行對比,
如果redo lsn 比頁面的page的head 中的lsn大 ,就恢復該頁面,
1.只有全備
innobackupex --apply-log /storage/group2/bak/basebk
2.有增量備份
innobackupex --apply-log --redo-only /storage/group2/bak/basebk
innobackupex --apply-log --incremental /storage/group2/bak/basebk --incremental-dir=/storage/group2/bak/incbk1
常用參數:
--apply-log: 應用全部的redo log
--redo-only:只應用commit的redo的 log
--incremental:每次恢復的過程中都是全備
問題2:(確認)
在應用最后一個增量備份的時候使用了 --redo-only 參數,導致 mysql 啟動失敗
,報錯:日志丟失或者文件損壞問題分析
解釋:在mysql啟動時候會對mysql數據頁面數據的完整性進行檢測,發現有問題的頁面就試圖
恢復,而恢復是要通過redolog的,當redolog找不到的時候,就會報錯,頁面損壞。
問題3:(已經確認)
在有增量備份的時候進行恢復,是否可以不要--redo-only 參數
不可以,可能會造成部分數據數據丟失
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。