溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Xtrabackup備份數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2020-07-29 10:44:02 來(lái)源:網(wǎng)絡(luò) 閱讀:371 作者:jiazheming 欄目:數(shù)據(jù)庫(kù)

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)










向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI