XtraBackup全量備份與恢復(fù)MySQL數(shù)據(jù)-創(chuàng)新互聯(lián)

防偽碼:沒(méi)有相當(dāng)程度的孤獨(dú)是不可能有內(nèi)心的平和。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了姜堰免費(fèi)建站歡迎大家使用!

1、概述

Percona XtraBackup(簡(jiǎn)稱PXB)是 Percona 公司開(kāi)發(fā)的一個(gè)用于 MySQL 數(shù)據(jù)庫(kù)物理熱備的備份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且開(kāi)源,淘寶的RDS for MySQL的物理備份就是基于XtraBackup做的。

Xtrabackup有兩個(gè)主要的工具:xtrabackup、innobackupex

(1)xtrabackup是C/C++編譯的二進(jìn)制文件,只能備份InnoDB和XtraDB兩種數(shù)據(jù)表,而不能備份MyISAM數(shù)據(jù)表;

(2)innobackupex則封裝了xtrabackup,是一個(gè)perl腳本封裝,所以能同時(shí)備份處理innodb和myisam,但在處理myisam時(shí)需要加一個(gè)讀鎖;

1.1 備份原理

整個(gè)備份過(guò)程如下圖:

XtraBackup全量備份與恢復(fù)MySQL數(shù)據(jù)

  1. innobackupex 在啟動(dòng)后,會(huì)先 fork 一個(gè)進(jìn)程,啟動(dòng) xtrabackup進(jìn)程,然后就等待 xtrabackup 備份完 ibd 數(shù)據(jù)文件;

  2. xtrabackup 在備份 InnoDB 相關(guān)數(shù)據(jù)時(shí),是有2種線程的,1種是 redo 拷貝線程,負(fù)責(zé)拷貝 redo 文件,1種是 ibd 拷貝線程,負(fù)責(zé)拷貝 ibd 文件;redo 拷貝線程只有一個(gè),在 ibd 拷貝線程之前啟動(dòng),在 ibd 線程結(jié)束后結(jié)束。xtrabackup 進(jìn)程開(kāi)始執(zhí)行后,先啟動(dòng) redo 拷貝線程,從最新的 checkpoint 點(diǎn)開(kāi)始順序拷貝 redo 日志;然后再啟動(dòng) ibd 數(shù)據(jù)拷貝線程,在 xtrabackup 拷貝 ibd 過(guò)程中,innobackupex 進(jìn)程一直處于等待狀態(tài)(等待文件被創(chuàng)建)。

  3. xtrabackup 拷貝完成idb后,通知 innobackupex(通過(guò)創(chuàng)建文件),同時(shí)自己進(jìn)入等待(redo 線程仍然繼續(xù)拷貝);

  4. innobackupex 收到 xtrabackup 通知后,執(zhí)行FLUSH TABLES WITH READ LOCK (FTWRL),取得一致性位點(diǎn),然后開(kāi)始備份非 InnoDB 文件(包括 frm、MYD、MYI、CSV、opt、par等)??截惙?InnoDB 文件過(guò)程中,因?yàn)閿?shù)據(jù)庫(kù)處于全局只讀狀態(tài),如果在業(yè)務(wù)的主庫(kù)備份的話,要特別小心,非 InnoDB 表(主要是MyISAM)比較多的話整庫(kù)只讀時(shí)間就會(huì)比較長(zhǎng),這個(gè)影響一定要評(píng)估到。

  5. 當(dāng) innobackupex 拷貝完所有非 InnoDB 表文件后,通知 xtrabackup(通過(guò)刪文件) ,同時(shí)自己進(jìn)入等待(等待另一個(gè)文件被創(chuàng)建);

  6. xtrabackup 收到 innobackupex 備份完非 InnoDB 通知后,就停止 redo 拷貝線程,然后通知 innobackupex redo log 拷貝完成(通過(guò)創(chuàng)建文件);

  7. innobackupex 收到 redo 備份完成通知后,就開(kāi)始解鎖,執(zhí)行 UNLOCK TABLES;

  8. 最后 innobackupex 和 xtrabackup 進(jìn)程各自完成收尾工作,如資源的釋放、寫備份元數(shù)據(jù)信息等,innobackupex 等待 xtrabackup 子進(jìn)程結(jié)束后退出。

1.2 常用參數(shù)

--defaults-file:指明服務(wù)器的配置文件,此參數(shù)必須作為innobackupex的第一個(gè)參數(shù),否則報(bào)錯(cuò)

--host:指明連接數(shù)據(jù)庫(kù)的主機(jī)

--user:指明執(zhí)行數(shù)據(jù)庫(kù)備份的用戶名

--password:指明執(zhí)行備份的密碼

--backup:指明為備份,此參數(shù)可以忽略

--apply-log:重做日志

--copy-back:執(zhí)行數(shù)據(jù)恢復(fù)

--slave-info:備份從庫(kù)的show slave status信息,僅用于在備份從庫(kù)時(shí)使用

--no-lock:不鎖表,僅適用于存儲(chǔ)引擎為innodb,并且不在乎備份位置點(diǎn)時(shí)使用

2、安裝XtraBackup

2.1 環(huán)境準(zhǔn)備

主機(jī)名IP系統(tǒng)MySQL版本
MySQL-01192.168.10.20CentOS release 6.9 (Final)5.6.36

MySQL的安裝步驟略。

2.2 創(chuàng)建備份用戶

mysql> create user 'backup'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.04 sec) mysql> grant reload,lock tables,replication client,process on *.* to 'backup'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.30 sec) mysql> flush privileges; Query OK, 0 rows affected (0.04 sec)

2.3 創(chuàng)建備份目錄

[root@MySQL-01 ~]#mkdir /backup

2.4 下載xtraBackup

[root@MySQL-01 ~]#cd /opt # 下載可能較慢。 [root@MySQL-01 opt]#wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm

2.4 安裝XtraBackup

# 安裝的時(shí)候出現(xiàn)報(bào)錯(cuò),原因?yàn)橐蕾嚢窗惭b。 [root@MySQL-01 opt]#rpm -ivh percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm warning: percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY error: Failed dependencies: libev.so.4()(64bit) is needed by percona-xtrabackup-24-2.4.7-2.el6.x86_64 perl(DBD::mysql) is needed by percona-xtrabackup-24-2.4.7-2.el6.x86_64 # 安裝相關(guān)依賴包 [root@MySQL-01 opt]#yum -y install libev-devel perl-DBD-MySQL [root@MySQL-01 opt]#rpm -ivh percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm warning: percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY Preparing...                ########################################### [100%] 1:percona-xtrabackup-24  ########################################### [100%] [root@MySQL-01 opt]#rpm -ql percona-xtrabackup-24-2.4.7-2.el6.x86_64 /usr/bin/innobackupex                #innobackupex腳本工具 /usr/bin/xbcloud /usr/bin/xbcloud_osenv /usr/bin/xbcrypt /usr/bin/xbstream /usr/bin/xtrabackup                    #最主要的備份工具 /usr/share/doc/percona-xtrabackup-24-2.4.7 /usr/share/doc/percona-xtrabackup-24-2.4.7/COPYING /usr/share/man/man1/innobackupex.1.gz /usr/share/man/man1/xbcrypt.1.gz /usr/share/man/man1/xbstream.1.gz /usr/share/man/man1/xtrabackup.1.gz

3、備份與恢復(fù)測(cè)試

3.1 全量備份

# defaults-file:my.cnf配置路徑 [root@MySQL-01 opt]#innobackupex --defaults-file=/app/mysql/my.cnf --user=backup --password=123456 /backup # 查看backup目錄下已經(jīng)有備份文件 [root@MySQL-01 opt]#ll /backup/ total 4 drwxr-x--- 5 root root 4096 Jul 14 17:25 2017-07-14_17-25-24 [root@MySQL-01 opt]#ls /backup/2017-07-14_17-25-24/ backup-my.cnf  performance_schema      xtrabackup_checkpoints ibdata1        rep                     xtrabackup_info mysql          xtrabackup_binlog_info  xtrabackup_logfile [root@MySQL-01 opt]#cat /backup/2017-07-14_17-25-24/xtrabackup_checkpoints backup_type = full-backuped        #備份方式為全量備份 from_lsn = 0                                  #由于是全備,其實(shí)LSN號(hào)為0 to_lsn = 13835894                        #截止LSN號(hào) last_lsn = 13835894 compact = 0 recover_binlog_info = 0

3.2 模擬恢復(fù)

既然全量備份已經(jīng)完成,那么就來(lái)測(cè)試一下。

# 將數(shù)據(jù)庫(kù)停掉 [root@MySQL-01 ~]#service mysqld stop Shutting down MySQL............ SUCCESS! # 將data文件移到backup目錄下 [root@MySQL-01 ~]#mv /app/mysql/data /backup/data_bak # 無(wú)法啟動(dòng)mysqld了 [root@MySQL-01 ~]#service mysqld start Starting MySQL.Logging to '/app/mysql/data/MySQL-01.err'. . ERROR! The server quit without updating PID file (/app/mysql/data/MySQL-01.pid). # apply-log參數(shù):在真正恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)之前,先將數(shù)據(jù)庫(kù)redo日志狀態(tài)恢復(fù)。 [root@MySQL-01 ~]#innobackupex --defaults-file=/app/mysql/my.cnf --user=backup --password=123456  --apply-log /backup/2017-07-14_17-25-24 # 執(zhí)行數(shù)據(jù)恢復(fù) [root@MySQL-01 ~]#innobackupex --defaults-file=/app/mysql/my.cnf --user=backup --password=123456  --copy-back /backup/2017-07-14_17-25-24 [root@MySQL-01 ~]#chown -R mysql.mysql /app/mysql/data # 再次啟動(dòng)數(shù)據(jù)庫(kù),顯示成功 [root@MySQL-01 ~]#service mysqld start Starting MySQL.Logging to '/app/mysql/data/MySQL-01.err'. . SUCCESS!

4、參考

http://mysql.taobao.org/monthly/2016/03/07/

http://www.cnblogs.com/olinux/p/5207887.html

另外有需要云服務(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全量備份與恢復(fù)MySQL數(shù)據(jù)-創(chuàng)新互聯(lián)
當(dāng)前地址:http://bm7419.com/article34/dehppe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站排名、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)