您好,登錄后才能下訂單哦!
Xtrabackup是一個(gè)對(duì)InnoDB做數(shù)據(jù)備份的工具,支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫),是商業(yè)備份工具InnoDB Hotbackup的一個(gè)很好的替代品。
Xtrabackup有兩個(gè)主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表,而不能備份MyISAM數(shù)據(jù)表
(2)innobackupex-1.5.1則封裝了xtrabackup,是一個(gè)腳本封裝,所以能同時(shí)備份處理innodb和myisam,但在處理myisam時(shí)需要加一個(gè)讀鎖。
(3)備份的效率應(yīng)該是mysql自帶工具 MYSQLDUMP 的 10倍左右
xtraBackup基于InnoDB的crash-recovery功能。它會(huì)復(fù)制innodb的data file,由于不鎖表,復(fù)制出來(lái)的數(shù)據(jù)是不一致的,在恢復(fù)的時(shí)候使用crash-recovery,使得數(shù)據(jù)恢復(fù)一致。
InnoDB維護(hù)了一個(gè)redo log,又稱為transaction log,事務(wù)日志,它包含了innodb數(shù)據(jù)的所有改動(dòng)情況。當(dāng)InnoDB啟動(dòng)的時(shí)候,它會(huì)先去檢查data file和transaction log,并且會(huì)做二步操作:
XtraBackup在備份的時(shí)候,一頁(yè)一頁(yè)地復(fù)制innodb的數(shù)據(jù),而且不鎖定表,與此同時(shí),XtraBackup還有另外一個(gè)線程監(jiān)視著transactions log,一旦log發(fā)生變化,就把變化過(guò)的logpages復(fù)制走。為什么要急著復(fù)制走呢,因?yàn)閠ransactions log文件大小有限,寫滿之后,就會(huì)從頭再開(kāi)始寫,所以新數(shù)據(jù)可能會(huì)覆蓋到舊的數(shù)據(jù)。
在prepare過(guò)程中,XtraBackup使用復(fù)制到的transactions log對(duì)備份出來(lái)的innodb data file進(jìn)行crash recovery
下載地址
http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.1.6/binary/Linux/x86_64/percona-xtrabackup-2.1.6-702-Linux-x86_64.tar.gz
解壓
tar percona-xtrabackup-2.1.6-702-Linux-x86_64.tar.gz
cd percona-xtrabackup-2.1.5-Linux-x86_64/bin
復(fù)制到/usr/bin目錄就可以了
cp * /usr/bin
修改低版本mysql的配置文件
vi /etc/my.cnf
#在[mysqld]下面添加如下內(nèi)容
ignore-builtin-innodb
plugin-load=innodb=ha_innodb_plugin.so
plugin_dir=/usr/lib64/mysql/plugin
全部備份
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 /home/databackup/whole/
增量備份
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 --incremental /home/databackup/one --incremental-basedir=/home/databackup/whole/2016-05-10_16-32-48
備份zabbix庫(kù)
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456--port=3306 --database=zabbix /home/databackup/zabbix
刪除數(shù)據(jù)庫(kù)
/etc/init.d/mysqld stop
cd /var/lib/mysql/
rm -rf *
準(zhǔn)備全量恢復(fù)的數(shù)據(jù)
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123.com --apply-log --redo-only /home/databackup/whole/2016-05-10_16-32-48
準(zhǔn)備增量恢復(fù)的數(shù)據(jù)
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123.com --apply-log --redo-only /home/databackup/whole/2016-05-10_16-32-48 --incremental-dir=/home/databackup/one/2016-05-10_17-37-11
真正恢復(fù)操作
/usr/bin/innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123.com --copy-back /home/databackup/whole/2016-05-10_16-32-48
#修改恢復(fù)數(shù)據(jù)的屬主與屬組
chown -R mysql:mysql *
啟動(dòng)mysql
/etc/init.d/mysqld start
#利用二進(jìn)制日志基于時(shí)間點(diǎn)恢復(fù)
cat /home/databackup/one/2016-05-10_17-37-11/xtrabackup_binlog_info
mysql-bin.000012 349
#用mysqlbinlog工具導(dǎo)出最后一次增量備份后的sql操作
mysqlbinlog --start-position=349 /var/lib/mysql/mysql-bin.000001 > /tmp/position.sql
導(dǎo)入數(shù)據(jù)
mysql> source /tmp/position.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。