真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

xtrabackup原理及用法詳解-創(chuàng)新互聯(lián)

開源的一款數(shù)據(jù)庫(kù)備份工具,可以去官網(wǎng)下載并使用

“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、軟件開發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!

percona-backupxtra對(duì)InonoDB會(huì)進(jìn)行增量備份,面對(duì)MyISAM的數(shù)據(jù)進(jìn)持完全備份。

1 xtrabackup只能備份innodb和xtradb兩種引擎的表,而不能備份myisam引擎的表;

2 innobackupex是一個(gè)封裝了xtrabackup的Perl腳本,支持同時(shí)備份innodb和myisam,但在對(duì)myisam備份時(shí)需要加一個(gè)全局的讀鎖。還有就是myisam不支持增量備份。

3 另外2個(gè)工具相對(duì)小眾些,xbcrypt 是加解密用的;xbstream 類似于tar,是 Percona 自己實(shí)現(xiàn)的一種支持并發(fā)寫的流文件格式。兩都在備份和解壓時(shí)都會(huì)用到(如果備份用了加密和并發(fā))。

mysql:表是MyISAM引擎,讀多寫少,性能好。

實(shí)現(xiàn)方式:說實(shí)話,看這個(gè)不如看備份產(chǎn)生的信息,產(chǎn)生的信息中每一步都顯示出來(lái),能更好帶你了解innobackupex 是如何備份的。

1 首先會(huì)啟動(dòng)一個(gè)xtrabackup_log后臺(tái)檢測(cè)的進(jìn)程,實(shí)時(shí)檢測(cè)mysql redo的變化,一旦發(fā)現(xiàn)redo有新的日志寫入,立刻將日志寫入到日志文件xtrabackup_log中

2 復(fù)制innodb的數(shù)據(jù)文件和系統(tǒng)表空間文件idbdata1到對(duì)應(yīng)的以默認(rèn)時(shí)間戳為備份目錄的地方

3 復(fù)制結(jié)束后,執(zhí)行flush table with read lock操作

4 復(fù)制.frm .myd .myi文件

5 并且在這一時(shí)刻獲得binary log 的位置

6 將表進(jìn)行解鎖unlock tables

7 停止xtrabackup_log進(jìn)程

xtrabackup原理及用法詳解

完全備份:

# innobackupex --user=root --password=mysql /PATH/TO/BACKUP-DIR/

如果要使用一個(gè)最小權(quán)限的用戶進(jìn)行備份,則可基于如下命令創(chuàng)建此類用戶

> CREATE USER 'bkpuser'@'localhost' IDENRIFIED BY 'PASSWORD';

> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bkpuser';

> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';

> FLUSH PRIVILEGES;

The RELOAD privilege enables use of the FLUSH statement. It also enables mysqladmin commands that are equivalent to FLUSH operations: flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, and reload.

The REPLICATION CLIENT privilege enables the use of the SHOW MASTER STATUS, SHOW SLAVE STATUS, and SHOW BINARY LOGS statements.

    使用innobackupex備份時(shí),其會(huì)調(diào)用xtrabackup備份所有的InnoDB表,復(fù)制所有關(guān)于表結(jié)構(gòu)定義的相關(guān)文件(.frm)心及MyISAM、MERGE、CSV和ARCHIVE表的相關(guān)文件,同時(shí)還會(huì)備份觸發(fā)器和數(shù)據(jù)庫(kù)配置信息相關(guān)的文件。這些文件會(huì)被保存至一個(gè)以時(shí)間命令的目錄中。

在備份的同時(shí),innobackupex還會(huì)備份目錄中創(chuàng)建如下文件:

(1)xtrabackup_checkpoints 備份類型(如完全或增量)、備份狀態(tài)(如是否已經(jīng)為prepared狀態(tài))和LSN(日志序列號(hào))范圍信息;

每個(gè)InnoDB頁(yè)(通常為16K大?。┒紩?huì)包含一個(gè)日志序列號(hào),即LSN,LSN是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的系統(tǒng)版本號(hào),每個(gè)頁(yè)面相關(guān)的LSN能夠表明此頁(yè)最近是如何發(fā)生改變的。

    (2)xtrabackup_binlog_infomysql服務(wù)器當(dāng)前正在使用的二進(jìn)制日志文件及至備份這一刻為止二進(jìn)制日志事件的位置。

3)xtrabackup_info備份的信息集合

(4)xtrabackup_binary 備份中用到的xtrabackup的可執(zhí)行文件;

(5)backup-my.cnf備份命令用到的配置選項(xiàng)信息;

(6)xtrabackup_checkpoints

backup_type = full-backuped

from_lsn = 0 從哪個(gè)數(shù)據(jù)塊開始備份

to_lsn = 1637454備份到哪里

last_lsn = 1637454最后的數(shù)據(jù)塊

會(huì)維護(hù)每個(gè)數(shù)據(jù)塊的日志序列號(hào),如果數(shù)據(jù)發(fā)生改變,日志序列號(hào)就會(huì)往前走一次的,所以它可以根據(jù)這個(gè)號(hào)碼來(lái)進(jìn)行增量備份。發(fā)生改變就備份,沒有改變就不用備份了。

在使用innobackupex進(jìn)行備份時(shí),還可以用--no-timestamp選項(xiàng)來(lái)阻止命令自動(dòng)創(chuàng)建一個(gè)以時(shí)間命名的目錄,如此一來(lái),innobackupex命令將會(huì)創(chuàng)建一個(gè)BACKUP-DIR目錄來(lái)存儲(chǔ)備份數(shù)據(jù)。

一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,因?yàn)閭浞莸臄?shù)據(jù)中可能會(huì)包含尚未提交的事務(wù)或已經(jīng)提交但尚且未同步至數(shù)據(jù)文件中的事務(wù)。因此,此時(shí)數(shù)據(jù)文件仍處理不一致狀態(tài)?!皽?zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。

3、從一個(gè)完全備份中恢復(fù)數(shù)據(jù)

innobackupex命令的--copy-back選項(xiàng)用于執(zhí)行恢復(fù)操作,其通過復(fù)制所有數(shù)據(jù)相關(guān)的文件至mysql服務(wù)器DATADIR目錄中來(lái)執(zhí)行恢復(fù)過程。innobackupex通過backup-my.cnf來(lái)獲取DATADIR目錄的相關(guān)信息。

# innobackupex --copy-back /PATH/TO/BACKUP-DIR/     //--copy-back 或 --force-non-empty-directories

    datadir必須是為空的,innobackupex –copy-back不會(huì)覆蓋已存在的文件

還原時(shí)需要先關(guān)閉服務(wù),如果服務(wù)是啟動(dòng)的,那么就不能還原到datadir。

如果執(zhí)行正確,其輸出信息的最后幾行通常如下:

innobackupex: Starting to copy InnoDB log file

...

innobackupex: Finished copying back files.

innobackupex: completed OK!

請(qǐng)確保如上信息的最后一行出現(xiàn)“completed OK!”

當(dāng)數(shù)據(jù)恢復(fù)至DATADIR目錄后,還需要確保所有數(shù)據(jù)文件的屬主和屬組均為正確的用戶,如mysql,否則,在啟動(dòng)mysqld之前還需要先修改文件的屬主和屬組,如:

chown -R mysql.msyql /data/

4、使用innobackupex進(jìn)行增量備份

每個(gè)InnoDB的頁(yè)面都會(huì)包含一個(gè)LSN信息,每當(dāng)相關(guān)的數(shù)據(jù)發(fā)生改變,相關(guān)的頁(yè)面的LSN就會(huì)自動(dòng)增長(zhǎng)。這正是InnoDB表可以進(jìn)行增量備份的甚而,即innobackupex通過備份上次完全備份之后發(fā)生改變的頁(yè)面來(lái)實(shí)現(xiàn)。

要實(shí)現(xiàn)第一次增量備份,可以使用下面的命令進(jìn)行:

# innobackupex --incremental /backup --incremental-dir=BASEDIR

ex:

innobackupex --user=root --password=mysql --incremental-basedir=/backup/2017-03-29_12-32-56/ --incremental /backup/

下一個(gè)增量備份要以之前的增量備份上做備份,也就是說--incremental-basedir=上一個(gè)新增的目錄,而不是全備的。

其中,BASEDIR指的是完全備份所在的目錄,此命令執(zhí)行結(jié)束后,innobackupex命令會(huì)在/backup目錄中創(chuàng)建一個(gè)新的以時(shí)間命名的目錄以存放所有的增量備份數(shù)據(jù)。另外,在執(zhí)行過增量備份之后再一次進(jìn)行增量備份時(shí),其--incremental-dir應(yīng)該指向上一次完全備份所在的目錄。

需要注意的是,增量備份僅能應(yīng)用于InnoDB或XtraDB表,對(duì)于MyISAM表而言,執(zhí)行增量備份其實(shí)進(jìn)行的是完全備份,

“prepare”增量備份與整理完全備份有著一些不同,尤其要注意的是:

(1)需要在每個(gè)備份(包括完全和各個(gè)增量備份)上,將已經(jīng)提交的事務(wù)進(jìn)行“重放”,“重放”之后,所有的備份數(shù)據(jù)將合并到完全備份上。

(2)基于所有的備份將未提交的事務(wù)進(jìn)行“回滾”。

于是,操作就變成了:

#innobackupex --apply-log --redo-only BACKUP-DIR\//每一次的BACKUP-DIR都是全量備份文件的位置

接著執(zhí)行:

# innobackupex --apply-log --redo-only BACKUP-DIR --incremental-dir=INCREMENTAL-DIR-1

而后是第二個(gè)增量:

# innobackupex --apply-log --redo-only BACKUP-DIR(這里的目錄不是完全備份的目錄,面是上一次增量備份的目錄,因?yàn)槭窃谏弦淮卧隽總浞莸幕A(chǔ)上還原的) --incremental-dir=INCREMENTAL-DIR-2

其中BASE-DIR指的是完全備份所在的目錄,而INCREMENTAL-DIR-1 指的是第一次增量備份的目錄,INCREMENTAL-DIR-2指的是第二次增量備份的目錄,其它依次類推,即如果有多次增量備份,第一次都要執(zhí)行如上操作;

首先準(zhǔn)備文件

我的數(shù)據(jù)庫(kù)數(shù)據(jù)在/data/下用LVM做的,我在這還要強(qiáng)調(diào)一下,二進(jìn)制日志必須與數(shù)據(jù)不在同一個(gè)磁盤上,這一點(diǎn)怎么提醒都不為過,最好日志能放到raid1有鏡像的地方上去。

mkdir /backup/

1、# innobackupex --user=root --password=mysql /backup///進(jìn)行完全備份

2、# innobackupex --user=root --password=mysql --incremental-basedir=/backup/2017-03-29_13-49-52/ --incremental /backup/進(jìn)行第一次增量備份

3、# innobackupex --user=root --password=mysql --incremental-basedir=/backup/2017-03-29_12-49-52/ --incremental /backup/進(jìn)行第二次增量備份

4、# innobackupex --apply-log --redo-only /backup/2017-03-29_12-32-56///第一次全量恢復(fù),但是數(shù)據(jù)沒有回/data目錄下

5、# nnobackupex --apply-log --redo-only /backup/2017-03-29_12-32-56/ --incremental-dir=/backup/2017-03-29_13-49-52/   //恢復(fù)第一次增量備份

6、# innobackupex --apply-log --redo-only /backup/2017-03-29_12-32-56/ --incremental-dir=/backup/2017-03-29_13-53-57///恢復(fù)第二次增量備份

7、# innobackupex --copy-back /backup/2017-03-29_12-32-56///進(jìn)行回滾操作,因?yàn)橹白鲞^perpare操作,所以直接回滾就可以了,數(shù)據(jù)就回來(lái)了

8、# chown -R mysql.mysql /data/*

9、# service mysqld start//如果這時(shí)候出現(xiàn)Starting MySQL.. ERROR! The server quit without updating PID file (/var/mysql/data/localhost.localdomain.pid).

你就可以killall mysqld   把之前殘留的進(jìn)程殺死,在啟動(dòng)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


標(biāo)題名稱:xtrabackup原理及用法詳解-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/djgheg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部