多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > 數(shù)據(jù)庫應(yīng)用 > 利用Xtrabackup進(jìn)行mysql數(shù)據(jù)庫的備份

利用Xtrabackup進(jìn)行mysql數(shù)據(jù)庫的備份

來源:程序員人生   發(fā)布時間:2014-12-11 08:36:57 閱讀次數(shù):2983次

利用Xtrabackup來實現(xiàn)數(shù)據(jù)庫的備份

Xtrabackup是有percona公司開發(fā)的1款開源備份工具,它與ibbackup這個備份工具不同的是。ibbackup是1個收費的備份工具,而且在其備份性能上,ibbackup不如Xtrabackup。ibbackup和Xtrabackup都對Innodb存儲引擎支持在線物理完全備份和在線物理增量備份,對MyISAM存儲引擎來講,只支持溫備份而已。更對關(guān)于二者的特性比較,請參考http://www.percona.com/software/percona-xtrabackup。

 

利用Xtrabackup備份mysql數(shù)據(jù)庫步驟以下:

1、安裝

1、簡介
Xtrabackup是由percona提供的mysql數(shù)據(jù)庫備份工具,據(jù)官方介紹,這也是世界上唯一1款開源的能夠?qū)nnodb和xtradb存儲引擎的數(shù)據(jù)庫進(jìn)行熱備的工具。xtradb是Innodb的增強版,在其性能上比Innodb要好,特點以下:
(1)備份進(jìn)程快速、可靠;
(2)備份進(jìn)程不會打斷正在履行的事務(wù);
(3)能夠基于緊縮等功能節(jié)儉磁盤空間和流量;
(4)自動實現(xiàn)備份檢驗;
(5)還原速度快;

 

2、安裝
其最新版的軟件可從 http://www.percona.com/software/percona-xtrabackup/ 取得。本文基于RHEL5.8的系統(tǒng),因此,直接下載相應(yīng)版本的rpm包安裝便可,這里不再演示其進(jìn)程。

安裝完成以后,會生成1個/usr/bin/innobackupex腳本文件,這個腳本文件封裝了xtrabackup,能同時處理Innodb和Myisam,但在處理Myisam時需要加1個讀鎖。

 

3、innobackupex簡介

innobackupex
innobackupex有更強的功能,它整合了xtrabackup和其他的1些功能,他不但可以全量備份/恢復(fù),還可以基于時間的增量備份與恢復(fù)。

innobackupex備份原理
innobackupex首先調(diào)用xtrabackup來備份innodb數(shù)據(jù)文件,當(dāng)xtrabackup完成后,innobackupex就查看文件xtrabackup_suspended ;然后履行“FLUSH TABLES WITH READ LOCK”來備份其他的文件

innobackupex恢復(fù)原理
innobackupex首先讀取my.cnf,查看變量(datadir,innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir)對應(yīng)的目錄是存在,肯定相干目錄存在后,然后先copy myisam表和索引,然后在copy innodb的表、索引和日志

 

 

2、備份的實現(xiàn)

1、完全備份

# innobackupex --user=DBUSER --password=DBUSERPASS  /path/to/BACKUP-DIR/

如果要使用1個最小權(quán)限的用戶進(jìn)行備份,則可基于以下命令創(chuàng)建此類用戶:
mysql> CREATE USER ’bkpuser’@’localhost’ IDENTIFIED BY ’s3cret’;
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ’bkpuser’;(如果出錯,則可以不加上)
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ’bkpuser’@’localhost’;
mysql> FLUSH PRIVILEGES;

 

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

 

在備份的同時,innobackupex還會在備份目錄中創(chuàng)建以下文件:
(1)xtrabackup_checkpoints ―― 備份類型(如完全或增量)、備份狀態(tài)(如是不是已為prepared狀態(tài))和LSN(日志序列號)范圍信息;

每一個InnoDB頁(通常為16k大小)都會包括1個日志序列號,即LSN。LSN是全部數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號,每一個頁面相干的LSN能夠表明此頁面最近是如何產(chǎn)生改變的。

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

(3)xtrabackup_binlog_pos_innodb ―― 2進(jìn)制日志文件及用于InnoDB或XtraDB表的2進(jìn)制日志文件確當(dāng)前position。

(4)xtrabackup_binary ―― 備份中用到的xtrabackup的可履行文件;

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

在使用innobackupex進(jìn)行備份時,還可使用--no-timestamp選項來禁止命令自動創(chuàng)建1個以時間命名的目錄;如此1來,innobackupex命令將會創(chuàng)建1個BACKUP-DIR目錄來存儲備份數(shù)據(jù)。

 

 

2、準(zhǔn)備(prepare)1個完全備份

1般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復(fù)操作,由于備份的數(shù)據(jù)中可能會包括還沒有提交的事務(wù)或已提交但還沒有同步至數(shù)據(jù)文件中的事務(wù)。因此,此時數(shù)據(jù)文件仍處理不1致狀態(tài)。“準(zhǔn)備”的主要作用正是通過回滾未提交的事務(wù)及同步已提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于1致性狀態(tài)。

innobakupex命令的--apply-log選項可用于實現(xiàn)上述功能。以下面的命令:
# innobackupex --apply-log  /path/to/BACKUP-DIR

如果履行正確,其最后輸出的幾行信息通常以下:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 1640470
020124 06:22:05  innobackupex: completed OK!

 

在實現(xiàn)“準(zhǔn)備”的進(jìn)程中,innobackupex通常還可使用--use-memory選項來指定其可使用的內(nèi)存的大小,默許通常為100M。如果有足夠的內(nèi)存可用,可以多劃分1些內(nèi)存給prepare的進(jìn)程,以提高其完成速度。

 


 

3、從1個完全備份中恢復(fù)數(shù)據(jù),恢復(fù)數(shù)據(jù)時,mysql服務(wù)器可以不在線(離線恢復(fù)數(shù)據(jù))

innobackupex命令的--copy-back選項用于履行恢復(fù)操作,其通過復(fù)制所有數(shù)據(jù)相干的文件至mysql服務(wù)器DATADIR目錄中來履行恢復(fù)進(jìn)程。innobackupex通過backup-my.cnf來獲得DATADIR目錄的相干信息。

# innobackupex --copy-back  /path/to/BACKUP-DIR

如果履行正確,其輸出信息的最后幾行通常以下:

innobackupex: Starting to copy InnoDB log files
innobackupex: in '/tmp/backup/2002-01⑵4_06-09⑸0'
innobackupex: back to original InnoDB log directory '/mydata/data'
innobackupex: Copying '/tmp/backup/2002-01⑵4_06-09⑸0/ib_logfile0' to '/mydata/data/ib_logfile0'
innobackupex: Copying '/tmp/backup/2002-01⑵4_06-09⑸0/ib_logfile1' to '/mydata/data/ib_logfile1'
innobackupex: Finished copying back files.

020124 06:29:22  innobackupex: completed OK!

請確保如上信息的最行1行出現(xiàn)“innobackupex: completed OK!”。

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

# chown -R  mysql:mysql  /mydata/data/

如果不修改數(shù)據(jù)目錄及其該目錄下所有文件的屬主和屬組,那末將會致使mysqld啟動不了。會出現(xiàn)以下毛病提示信息:

Starting MySQL...The server quit without updating PID file [FAILED]/data/localhost.pid).

 

 

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

每一個InnoDB的頁面都會包括1個LSN信息,每當(dāng)相干的數(shù)據(jù)產(chǎn)生改變,相干的頁面的LSN就會自動增長。這正是InnoDB表可以進(jìn)行增量備份的基礎(chǔ),即innobackupex通過備份上次完全備份以后產(chǎn)生改變的頁面來實現(xiàn)。

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

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


其中,BASEDIR指的是完全備份所在的目錄,此命令履行結(jié)束后,innobackupex命令會在/backup目錄中創(chuàng)建1個新的以時間命名的目錄以寄存所有的增量備份數(shù)據(jù)。另外,在履行過增量備份以后再1次進(jìn)行增量備份時,其--incremental-basedir應(yīng)當(dāng)指向上1次的增量備份所在的目錄。

需要注意的是,增量備份僅能利用于InnoDB或XtraDB表,對MyISAM表而言,履行增量備份時其實進(jìn)行的是完全備份。


“準(zhǔn)備”(prepare)增量備份與“準(zhǔn)備“完全備份有著1些不同,特別要注意的是:
(1)需要在每一個備份(包括完全和各個增量備份)上,將已提交的事務(wù)進(jìn)行“重放”。“重放”以后,所有的備份數(shù)據(jù)將合并到完全備份上。
(2)基于所有的備份將未提交的事務(wù)進(jìn)行“回滾”。

 

因而,操作就變成了:
# innobackupex --apply-log --redo-only BASE-DIR

接著履行:
# innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR⑴

而后是第2個增量:
# innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR⑵

 

其中BASE-DIR指的是完全備份所在的目錄,而INCREMENTAL-DIR⑴指的是第1次增量備份的目錄,INCREMENTAL-DIR⑵指的是第2次增量備份的目錄,其它順次類推,即如果有屢次增量備份,每次都要履行如上操作;

 

最后,全部(完全備份和增量備份)恢復(fù)進(jìn)程履行以下命令:

# innobackupex --copy-back  /path/to/BACKUP-DIR

/path/to/BACKUP-DIR為完全備份所在目錄

 

 

5、Xtrabackup的“流”及“備份緊縮”功能

Xtrabackup對備份的數(shù)據(jù)文件支持“流”功能,便可以將備份的數(shù)據(jù)通過STDOUT傳輸給tar程序進(jìn)行歸檔,而不是默許的直接保存至某備份目錄中。要使用此功能,僅需要使用--stream選項便可。如:

# innobackupex --stream=tar  /backup | gzip > /backup/`date +%F_%H-%M-%S`.tar.gz

乃至也能夠使用類似以下命令將數(shù)據(jù)備份至其它服務(wù)器
# innobackupex --stream=tar  /backup | ssh user@www.magedu.com  "cat -  > /backups/`date +%F_%H-%M-%S`.tar"

另外,在履行本地備份時,還可使用--parallel選項對多個文件進(jìn)行并行復(fù)制。此選項用于指定在復(fù)制時啟動的線程數(shù)目。固然,在實際進(jìn)行備份時要利用此功能的便利性,也需要啟用innodb_file_per_table選項或同享的表空間通過innodb_data_file_path選項存儲在多個ibdata文件中。對某1數(shù)據(jù)庫的多個文件的復(fù)制沒法利用到此功能。其簡單使用方法以下:
# innobackupex --parallel  /path/to/backup

同時,innobackupex備份的數(shù)據(jù)文件也能夠存儲至遠(yuǎn)程主機(jī),這可使用--remote-host選項來實現(xiàn):
# innobackupex --remote-host=root@www.magedu.com  /path/IN/REMOTE/HOST/to/backup
 

6、導(dǎo)入或?qū)С鰡螐埍?/p>

默許情況下,InnoDB表不能通過直接復(fù)制表文件的方式在mysql服務(wù)器之間進(jìn)行移植,即使使用了innodb_file_per_table選項。而使用Xtrabackup工具可以實現(xiàn)此種功能,不過,此時需要“導(dǎo)出”表的mysql服務(wù)器啟用了innodb_file_per_table選項(嚴(yán)格來講,是要“導(dǎo)出”的表在其創(chuàng)建之前,mysql服務(wù)器就啟用了innodb_file_per_table選項),并且“導(dǎo)入”表的服務(wù)器同時啟用了innodb_file_per_table和innodb_expand_import選項。

(1)“導(dǎo)出”表
導(dǎo)出表是在備份的prepare階段進(jìn)行的,因此,1旦完全備份完成,就能夠在prepare進(jìn)程中通過--export選項將某表導(dǎo)出了:
# innobackupex --apply-log --export /path/to/backup

此命令會為每一個innodb表的表空間創(chuàng)建1個以.exp結(jié)尾的文件,這些以.exp結(jié)尾的文件則可以用于導(dǎo)入至其它服務(wù)器

(2)“導(dǎo)入”表
要在mysql服務(wù)器上導(dǎo)入來自于其它服務(wù)器的某innodb表,需要先在當(dāng)前服務(wù)器上創(chuàng)建1個跟原表表結(jié)構(gòu)1致的表,而后才能實現(xiàn)將表導(dǎo)入:
mysql> CREATE TABLE mytable (...)  ENGINE=InnoDB;

然后將此表的表空間刪除:
mysql> ALTER TABLE mydatabase.mytable  DISCARD TABLESPACE;

接下來,將來自于“導(dǎo)出”表的服務(wù)器的mytable表的mytable.ibd和mytable.exp文件復(fù)制到當(dāng)前服務(wù)器的數(shù)據(jù)目錄,然后使用以下命令將其“導(dǎo)入”:
mysql> ALTER TABLE mydatabase.mytable  IMPORT TABLESPACE;

 

7、使用Xtrabackup對數(shù)據(jù)庫進(jìn)行部份備份

Xtrabackup也能夠?qū)崿F(xiàn)部份備份,即只備份某個或某些指定的數(shù)據(jù)庫或某數(shù)據(jù)庫中的某個或某些表。但要使用此功能,必須啟用innodb_file_per_table選項,即每張表保存為1個獨立的文件。同時,其也不支持--stream選項,即不支持將數(shù)據(jù)通過管道傳輸給其它程序進(jìn)行處理。

另外,還原部份備份跟還原全部數(shù)據(jù)的備份也有所不同,即你不能通過簡單地將prepared的部份備份使用--copy-back選項直接復(fù)制回數(shù)據(jù)目錄,而是要通過導(dǎo)入表的方向來實現(xiàn)還原。固然,有些情況下,部份備份也能夠直接通過--copy-back進(jìn)行還原,但這類方式還原而來的數(shù)據(jù)多數(shù)會產(chǎn)生數(shù)據(jù)不1致的問題,因此,不管如何不推薦使用這類方式。

(1)創(chuàng)建部份備份

創(chuàng)建部份備份的方式有3種:正則表達(dá)式(--include), 枚舉表文件(--tables-file)和列出要備份的數(shù)據(jù)庫(--databases)。

(a)使用--include
使用--include時,要求為其指定要備份的表的完全名稱,即形如databasename.tablename,如:
# innobackupex --include='^mageedu[.]tb1'  /path/to/backup

(b)使用--tables-file
此選項的參數(shù)需要是1個文件名,此文件中每行包括1個要備份的表的完全名稱;如:
# echo -e 'mageedu.tb1 mageedu.tb2' > /tmp/tables.txt
# innobackupex --tables-file=/tmp/tables.txt  /path/to/backup

(c)使用--databases
此選項接受的參數(shù)為數(shù)據(jù)名,如果要指定多個數(shù)據(jù)庫,彼其間需要以空格隔開;同時,在指定某數(shù)據(jù)庫時,也能夠只指定其中的某張表。另外,此選項也能夠接受1個文件為參數(shù),文件中每行動1個要備份的對象。如:
# innobackupex --databases="mageedu testdb"  /path/to/backup

(2)準(zhǔn)備(preparing)部份備份
prepare部份備份的進(jìn)程類似于導(dǎo)出表的進(jìn)程,要使用--export選項進(jìn)行:
# innobackupex --apply-log --export  /pat/to/partial/backup

此命令履行進(jìn)程中,innobackupex會調(diào)用xtrabackup命令從數(shù)據(jù)字典中移除缺失的表,因此,會顯示出許多關(guān)于“表不存在”類的正告信息。同時,也會顯示出為備份文件中存在的表創(chuàng)建.exp文件的相干信息。

(3)還原部份備份
還原部份備份的進(jìn)程跟導(dǎo)入表的進(jìn)程相同。固然,也能夠通過直接復(fù)制prepared狀態(tài)的備份直接至數(shù)據(jù)目錄中實現(xiàn)還原,不過此時要求數(shù)據(jù)目錄處于1致狀態(tài)。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美一级毛片欧美一级无片 | 福利亚洲 | 亚洲无吗在线视频 | 精品国产日韩亚洲一区在线 | 一区小说二区另类小说三区图 | 国产一区二区三区在线看片 | 美国一级特黄aa大片 | 精品一区二区三区免费视频 | 日韩精品一区二区三区四区 | 亚洲乱码一二三四区国产 | 亚洲最大黄色网址 | 秋霞特色aa大片在线观看 | 欧美日韩视频在线播放 | 97一区二区三区 | 日本一区二区三区在线 视频观看免费 | 国产欧美日韩中文久久 | 日韩福利网站 | 最近中文字幕在线播放 | 爱爱小视频日本 | 色播亚洲 | 久久精品国产亚洲aa | 精品a| a免费国产一级特黄aa大 | 国产精品久草 | 中文字幕乱码中文 | 亚洲高清免费 | 国产欧美日韩亚洲精品区2345 | 成人免费视频在线播放 | 欧美精品亚洲精品日韩1818 | 色永久| 久久在精品线影院精品国产 | 久久精品二三区 | 国产成人久久精品推最新 | 伊人污| 日韩欧美国产亚洲 | 久久亚洲不卡一区二区 | 中文字幕2022永久在线 | 亚洲综合区图片小说区 | 欧美激情videossex护士 | 欧美人善交vides0 | 色噜噜狠狠先锋影音久久 |