xtrabackup是由percona提供的mysql備份工具,它是一款實體備份工具,透過連接資料庫把資料庫的資料備份出來。對於innodb儲存引擎其支援全量備份和增量備份。對於myisam儲存引擎只支援增量備份。因為xtrabackup對innodb的增量備份是基於表空間的LSN進行的,所謂LSN即:表空間分成多個資料塊,每個資料塊都有相應的序號,當資料塊資料發生變化則更新序號。全量備份即備份所有資料區塊,則增量備份則基於全量備份最後一個資料區塊的序號到最新的資料區塊序號進行備份。因為myisam不支援表空間,所以不能進行增量備份。
Xtrabackup是由percona提供的mysql資料庫備份工具,根據官方介紹,這也是世界上惟一一款開源的能夠對innodb和xtradb資料庫進行熱備的工具。
Xtrabackup中主要包含兩個工具:
xtrabackup:是用於熱備份innodb, xtradb表中資料的工具,不能備份其他類型的表,也不能備份資料表結構;
innobackupex:是將xtrabackup進行封裝的perl腳本,可備份並還原MyISAM表以及資料表結構。
xtrabackup備份出來的資料包括:
表空間
資料檔
二進位日誌
#交易日誌
...
xtrabackup在進行資料復原之前需要注意以下要點:
如果有增量備份則需要在復原之前先進行增量備份和全備份的合併再還原;
#如果是支援交易的表的備份,則恢復之前需要先進行交易日誌的回滾和提交操作;
實驗步驟
mysql -uroot < hellodb.sql
show global variables like 'log_bin';指令可以看到是否已經開啟,透過show binary logs;可以看到目前正在使用的二進位日誌是哪一個;
innobackupex -u root /data/backup
innobackupex --apply-log 2017-07-13_21-02-07/ #先進行交易日誌的提交與回滾 innobackupex --copy-back 2017- 07-13_21-02-07/ #進行資料恢復,會自動把資料恢復到mysql的資料目錄下
在資料復原作業完成之後一定要再進行一次資料的完整備份,確保資料安全;
往資料庫中插入幾個新的信息,然後進行資料庫的增量備份;
透過以下指令進行資料庫的增量備份,備份成功之後還是會在/data/backup目錄下生成一個新的以時間命名的資料夾:innobackupex -u root -p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/ backup/
然後停掉資料庫服務,刪除資料庫目錄下的所有數據,進行資料復原操作,步驟如下:innobackupex --apply- log --redo-only 2017-07-13_22-16-19/ #進行全量備份的事務提交,但是不回滾未提交事務,因為未提交事務可能在下次的增量備份中提交 innobackupex --apply- log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22-18-34/ #進行增量備份和全備份的合成已經事務提交工作 innobackupex --apply -log 2017-07-13_22-16-19/ #全備份也沒有完成的交易進行回滾作業 innobackupex --copy-back 2017-07-13_22-16-19/ #此時採用全備備份即可恢復數據,不再需要增量備份,因為已經進行了備份的合成操作
同樣需要修改恢復完成數據的屬主和屬組,然後登陸資料庫即可看到完整是數據,此時實驗展示完成。
注意:
以上是用xtrabackup備份mysql資料庫方法指導的詳細內容。更多資訊請關注PHP中文網其他相關文章!