MySQL备份恢复工具xtrabackup
1、簡介
????XtraBackup是Percona提供的一個開源的、免費的MySQL數據庫備份工具,它能夠對InnoDB和XtraDB數據庫進行熱備份,據官方介紹,XtraBackup具有以下特點:
????1. 備份過程快速、可靠;
????2. 備份過程不會打斷正在執行的事務;
????3. 能夠基于壓縮等功能節約磁盤空間和流量;
????4. 自動實現備份檢驗;
????5. 恢復速度快。
2、安裝XtraBackup
最新版本可以從https://www.percona.com/software/percona-xtrabackup獲得。
# yum install?https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.10/binary/redhat/6/x86_64/percona-xtrabackup-2.2.10-1.el6.x86_64.rpm
3、創建所需用戶
#?創建具有所需完整備份最低權限的數據庫用戶示例:
mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;
4、完全備份
# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
#?檢查輸出最后一行的確認消息
innobackupex: Backup created in directory ’/path/to/BACKUP-DIR/2013-03-25_00-00-09’
innobackupex: MySQL binlog position: filename ’mysql-bin.000003’, position 1946
111225 00:00:53 innobackupex: completed OK!
5、準備(Prepar)一個完全備份
# innobackupex --apply-log /path/to/BACKUP-DIR
111225 1:01:57 InnoDB: Shutdown completed; log sequence number 1609228
111225 01:01:57 innobackupex: completed OK!
# 注意:在實現"準備"的過程中,innobackupex通常還可以使用--use-memory選項來指定其可以使用的內存的大小,默認為100M。如果有足夠的內存可用,可以多劃分一些內存給prepare的過程,以提高完成速度。
6、從一個完全備份中恢復
#?innobackupex命令的--copy-back選項用于執行恢復操作,通過復制所有數據相關的文件到mysql服務器的DATADIR目錄中來執行恢復過程。
#?innobackupex --copy-back /path/to/BACKUP-DIR
# 如果執行正確,會出現類似幾行
innobackupex: Finished copying back files.
111225 01:08:13 innobackupex: completed OK!
# 注意:刪除數據目錄之前,先停止mysqld服務,然后直接用命令恢復啟動即可,不需要重新初始化數據庫。當數據恢復到DATADIR目錄后,還需要確保所有數據文件的屬主和屬組均為正確的用戶,否則,在啟動mysqld之前還需要事先修改數據文件的屬主和屬組。
# chown -R mysql:mysql /data/mysql
7、增量備份
# 每個InnoDB的頁面都會包含一個LSN信息,每當相關的數據發生改變,相關的頁面的LSN就會自動增長。這也是InnoDB表可以進行增量備份的基礎,即innobackupex通過備份上次完全備份之后發生改變的頁面來實現。
創建一個增量備份(需要做一個完全備份為基礎):
# innobackupex --user=DBUSER --password=DBUSERPASS?--incremental /data/backups --incremental-basedir=BASEDIR
#?其中,BASEDIR指的是完全備份所在的目錄,此命令執行結束后,innobackupex命令會在/backup目錄中創建一個新的以時間命名的目錄以存放所有的增量備份數據。另外,在執行過增量備份之后再一次進行增量備份時,其--incremental-basedir應該指向上一次的增量備份所在的目錄。
#?注意:增量備份僅能應用于InnoDB或XtraDB表,對于MyISAM表,執行增量備份其實進行的是完全備份。
8、準備增量備份
# "準備"增量備份與完全備份有點不同,需要注意的是:
????1.?需要在每個備份(包括完全和各個增量備份)上,將已經提交的事務進行"重放"。"重放"之后,所有的備份數據合并到完全備份上;
????2.?基于所有的備份將未提交的事務進行"回滾"。
操作步驟:
#?innobackupex --apply-log --redo-only BASE-DIR
120103 22:00:12 InnoDB: Shutdown completed; log sequence number 1291135
120103 22:00:12 innobackupex: completed OK!
#?innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
120103 22:08:43 InnoDB: Shutdown completed; log sequence number 1358967
120103 22:08:43 innobackupex: completed OK!
#?innobackupex --apply-log --redo-only?BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
completed OK!
#?其中BASE-DIR指的是完全備份所在的目錄,而INCREMENTAL-DIR-1指的是第一次增量備份的目錄,INCREMENTAL-DIR-2指的是第二次增量備份的目錄,其它依次類推,如果有多次增量備份,每一次都要執行如上操作。
轉載于:https://blog.51cto.com/yuyucat/1655474
總結
以上是生活随笔為你收集整理的MySQL备份恢复工具xtrabackup的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 自由复制与粘贴功能
- 下一篇: 你用过这种奇葩的C#注释吗?如何看待