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

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

Mysql與xtrabackup如何實(shí)現(xiàn)備份與恢復(fù)

下面一起來了解下MySQL 與 xtrabackup如何實(shí)現(xiàn)備份與恢復(fù),相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望Mysql 與 xtrabackup如何實(shí)現(xiàn)備份與恢復(fù)這篇短內(nèi)容是你想要的。

10年積累的網(wǎng)站制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有道外免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

Mysql 備份恢復(fù)與 xtrabackup備份

1.1 備份的原因

備份是數(shù)據(jù)安全的最后一道防線,對于任何數(shù)據(jù)丟失的場景,備份雖然不一定能恢復(fù)百分之百的數(shù)據(jù)(取決于備份周期),但至少能將損失降到最低。衡量備份恢復(fù)有兩個(gè)重要的指標(biāo):恢復(fù)點(diǎn)目標(biāo)(RPO)和恢復(fù)時(shí)間目標(biāo)(RTO),前者重點(diǎn)關(guān)注能恢復(fù)到什么程度,而后者則重點(diǎn)關(guān)注恢復(fù)需要多長時(shí)間。

1.1.1 備份的目錄

做災(zāi)難恢復(fù):對損壞的數(shù)據(jù)進(jìn)行恢復(fù)和還原

需求改變:因需求改變而需要把數(shù)據(jù)還原到改變以前

測試:測試新功能是否可用

1.1.2 備份中需要考慮的問題

可以容忍丟失多長時(shí)間的數(shù)據(jù);

恢復(fù)數(shù)據(jù)要在多長時(shí)間內(nèi)完;

恢復(fù)的時(shí)候是否需要持續(xù)提供服務(wù);

恢復(fù)的對象,是整個(gè)庫,多個(gè)表,還是單個(gè)庫,單個(gè)表。

1.1.3 備份的類型

熱備份:

這些動(dòng)態(tài)備份在讀取或修改數(shù)據(jù)的過程中進(jìn)行,很少中斷或者不中斷傳輸或處理數(shù)據(jù)的功能。使用熱備份時(shí),系統(tǒng)仍可供讀取和修改數(shù)據(jù)的操作訪問。

冷備份:

這些備份在用戶不能訪問數(shù)據(jù)時(shí)進(jìn)行,因此無法讀取或修改數(shù)據(jù)。這些脫機(jī)備份會(huì)阻止執(zhí)行任何使用數(shù)據(jù)的活動(dòng)。這些類型的備份不會(huì)干擾正常運(yùn)行的系統(tǒng)的性能。但是,對于某些應(yīng)用程序,會(huì)無法接受必須在一段較長的時(shí)間里鎖定或完全阻止用戶訪問數(shù)據(jù)。

溫備份:

這些備份在讀取數(shù)據(jù)時(shí)進(jìn)行,但在多數(shù)情況下,在進(jìn)行備份時(shí)不能修改數(shù)據(jù)本身。這種中途備份類型的優(yōu)點(diǎn)是不必完全鎖定最終用戶。但是,其不足之處在于無法在進(jìn)行備份時(shí)修改數(shù)據(jù)集,這可能使這種類型的備份不適用于某些應(yīng)用程序。在備份過程中無法修改數(shù)據(jù)可能產(chǎn)生性能問題。

1.2 備份的方式

1.2.1 冷備份

最簡單的備份方式就是,關(guān)閉MySQL云服務(wù)器,然后將data目錄下面的所有文件進(jìn)行拷貝保存,需要恢復(fù)時(shí),則將目錄拷貝到需要恢復(fù)的機(jī)器即可。這種方式確實(shí)方便,但是在生產(chǎn)環(huán)境中基本沒什么作用。因?yàn)樗械臋C(jī)器都是要提供服務(wù)的,即使是Slave有時(shí)候也需要提供只讀服務(wù),所以關(guān)閉MySQL停服備份是不現(xiàn)實(shí)的。與冷備份相對應(yīng)的一個(gè)概念是熱備份,所謂熱備份是在不影響MySQL對外服務(wù)的情況下,進(jìn)行備份。

     冷備份及停止業(yè)務(wù)進(jìn)行備份。

1.2.2 快照備份

首先要介紹的熱備份是快照備份,快照備份是指通過文件系統(tǒng)支持的快照功能對數(shù)據(jù)庫進(jìn)行備份。備份的原理是將所有的數(shù)據(jù)庫文件放在同一分區(qū)中,然后對該分區(qū)執(zhí)行快照工作,對于Linux而言,需要通過LVM(Logical Volumn Manager)來實(shí)現(xiàn)。LVM使用寫時(shí)復(fù)制(copy-on-write)技術(shù)來創(chuàng)建快照,例如,對整個(gè)卷的某個(gè)瞬間的邏輯副本,類似于數(shù)據(jù)庫中的innodb存儲(chǔ)引擎的MVCC,只不過LVM的快照在文件系統(tǒng)層面,而MVCC在數(shù)據(jù)庫層面,而且僅支持innodb存儲(chǔ)引擎。

LVM有一個(gè)快照預(yù)留區(qū)域,如果原始卷數(shù)據(jù)有變化時(shí),LVM保證在任何變更寫入之前,會(huì)復(fù)制受影響塊到快照預(yù)留區(qū)域。簡單來說,快照區(qū)域內(nèi)保留了快照點(diǎn)開始時(shí)的一致的所有old數(shù)據(jù)。對于更新很少的數(shù)據(jù)庫,快照也會(huì)非常小。

對于MySQL而言,為了使用快照備份,需要將數(shù)據(jù)文件,日志文件都放在一個(gè)邏輯卷中,然后對該卷快照備份即可。由于快照備份,只能本地,因此,如果本地的磁盤損壞,則快照也就損壞了??煺諅浞莞蛴趯φ`操作防范,可以將數(shù)據(jù)庫迅速恢復(fù)到快照產(chǎn)生的時(shí)間點(diǎn),然后結(jié)合二進(jìn)制日志可以恢復(fù)到指定的時(shí)間點(diǎn)。基本原理如下圖:

1.2.3 邏輯備份(文本表示:SQL 語句)

冷備份和快照備份由于其弊端在生產(chǎn)環(huán)境中很少使用,使用更多是MySQL自帶的邏輯備份和物理備份工具,這節(jié)主要講邏輯備份,MySQL官方提供了Mysqldump邏輯備份工具,雖然已經(jīng)足夠好,但存在單線程備份慢的問題。在社區(qū)提供了更優(yōu)秀的邏輯備份工具mydumper,它的優(yōu)勢主要體現(xiàn)在多線程備份,備份速度更快。

1.2.4 其他常用的備份方式

物理備份(數(shù)據(jù)文件的二進(jìn)制副本)

全量備份概念

全量數(shù)據(jù)就是數(shù)據(jù)庫中所有的數(shù)據(jù)(或某一個(gè)庫的全部數(shù)據(jù));

全量備份就是把數(shù)據(jù)庫中所有的數(shù)據(jù)進(jìn)行備份。

mysqldump會(huì)取得一個(gè)時(shí)刻的一致性數(shù)據(jù).

增量備份(刷新二進(jìn)制日志)

增量數(shù)據(jù)就是指上一次全量備份數(shù)據(jù)之后到下一次全備之前數(shù)據(jù)庫所更新的數(shù)據(jù)

對于mysqldump,binlog就是增量數(shù)據(jù).

1.2.5 備份工具的介紹

1、mysqldump: mysql原生自帶很好用的邏輯備份工具

2、mysqlbinlog: 實(shí)現(xiàn)binlog備份的原生態(tài)命令

3、xtrabackup: precona公司開發(fā)的性能很高的物理備份工具

1.3 mysqldump備份介紹

備份的基本流程如下:

1.調(diào)用FTWRL(flush tables with read lock),全局禁止讀寫
2.開啟快照讀,獲取此時(shí)的快照(僅對innodb表起作用)
3.備份非innodb表數(shù)據(jù)(*.frm,*.myi,*.myd等)
4.非innodb表備份完畢后,釋放FTWRL鎖
5.逐一備份innodb表數(shù)據(jù)
6.備份完成。

整個(gè)過程,可以參考我同事的一張圖,但他的這張圖只考慮innodb表的備份情況,實(shí)際上在unlock tables執(zhí)行完畢之前,非innodb表已經(jīng)備份完畢,后面的t1,t2和t3實(shí)質(zhì)都是innodb表,而且5.6的mysqldump利用保存點(diǎn)機(jī)制,每備份完一個(gè)表就將一個(gè)表上的MDL鎖釋放,避免對一張表鎖更長的時(shí)間。

1.3.1 mysqldump備份流程

1.3.2 常用的備份參數(shù)

參數(shù)                                        參數(shù)說明                                    
-A                                        備份全庫                                    
-B                                        備某一個(gè)數(shù)據(jù)庫下的所有表                            
-R, --routines                            備份存儲(chǔ)過程和函數(shù)數(shù)據(jù)                            
--triggers                                備份觸發(fā)器數(shù)據(jù)                                
--master-data={1|2}                      告訴你備份后時(shí)刻的binlog位置如果等于1,則將其打印為CHANGE MASTER命令; 如果等于2,那么該命令將以注釋符號為前綴。
--single-transaction                      對innodb引擎進(jìn)行熱備                          
-F, --flush-logs                          刷新binlog日志                              
-x, --lock-all-tables                     鎖定所有數(shù)據(jù)庫的所有表。這是通過在整個(gè)轉(zhuǎn)儲(chǔ)期間采用全局讀鎖來實(shí)現(xiàn)的。      
-l, --lock-tables                         鎖定所有表以供讀取                              
-d                                        僅表結(jié)構(gòu)                                    
-t                                        僅數(shù)據(jù)                                    
--compact                                 減少無用數(shù)據(jù)輸出(調(diào)試)                            
一個(gè)完整的備份語句:  innodb引擎的備份命令如下:mysqldump -A -R --triggers --master-data=2 --single-transaction |gzip >/opt/all$(date +%F).sql.gz  適合多引擎混合(例如:myisam與innodb混合)的備份命令如下: mysqldump -A -R --triggers --master-data=2 |gzip   >/opt/all$(date +%F).sql.gz

1.3.3 -A 參數(shù)

備份全庫,備份語句

  mysqldump -uroot -p123 -A  > /backup/full.sql

1.3.4 -B 參數(shù)

備某一個(gè)數(shù)據(jù)庫下的所有表

增加建庫(create)及“use庫”的語句,可以直接接多個(gè)庫名,同時(shí)備份多個(gè)庫* -B 庫1 庫2

mysqldump -uroot -p123 -B world  > /backup/worldb.sql

備份語句:

    create database if not 存在
    use db1
    drop table
    create table
    insert into

不加-B備份數(shù)據(jù)庫時(shí),只是備份數(shù)據(jù)庫下的所有表,不會(huì)創(chuàng)建數(shù)據(jù)庫

     只能備份單獨(dú)的數(shù)據(jù)庫(一般用于備份單表時(shí)使用)

mysqldump -uroot -p123 world  > /backup/world.sql

     備份單表

mysqldump -uroot -p123 world  city  > /backup/world_city.sql

     對于單表備份的粒度,再恢復(fù)數(shù)據(jù)庫數(shù)據(jù)時(shí)速度最快。

     備份多個(gè)表

mysqldump 庫1 表1 表2 表3 >庫1.sql
mysqldump 庫2 表1 表2 表3 >庫2.sql

分庫備份:for循環(huán)

mysqldump -uroot -p'mysql123' -B mysql ...
mysqldump -uroot -p'mysql123' -B mysql_utf8 ...
mysqldump -uroot -p'mysql123' -B mysql ...
......

分庫備份

for name in `mysql -e "show databases;"|sed 1d`
do
 mysqldump -uroot -p'mysql123' -B $name
done

1.3.5 --master-data={1|2}參數(shù)

告訴你備份后時(shí)刻的binlog位置

2為注釋  1為非注釋,要執(zhí)行的(主從復(fù)制)

[root@db02 logs]# sed -n '22p' /opt/t.sql
CHANGE MASTER TO MASTER_LOG_FILE='clsn-bin.000005', MASTER_LOG_POS=344;
[root@db02 logs]# mysqldump -B --master-data=2 clsn >/opt/t.sql

1.3.6 --single-transaction 參數(shù)

對innodb引擎進(jìn)行熱備

     只支持innodb引擎

     使用該參數(shù)會(huì)單獨(dú)開啟一個(gè)事務(wù)進(jìn)行備份,利用事務(wù)的快照技術(shù)實(shí)現(xiàn)。

基于事務(wù)引擎:不用鎖表就可以獲得一致性的備份.

體現(xiàn)了ACID四大特性中的隔離性,生產(chǎn)中99% 使用innodb事務(wù)引擎.

     雖然支持熱備,并不意味著你可以再任意時(shí)間點(diǎn)進(jìn)行備份,特別是業(yè)務(wù)繁忙期,不要做備份策略,一般夜里進(jìn)行備份。

innodb引擎的備份命令如下:

mysqldump -A -B -R --triggers --master-data=2 --single-transaction |gzip >/opt/all.sql.gz

1.3.7 --flush-logs參數(shù)/-F

刷新binlog日志

每天晚上0點(diǎn)備份數(shù)據(jù)庫

mysqldump -A -B -F >/opt/$(date +%F).sql
[root@db02 ~]# ll /application/mysql/logs/
-rw-rw---- 1 mysql mysql 168 Jun 21 12:06 clsn-bin.000001
-rw-rw---- 1 mysql mysql 168 Jun 21 12:06 clsn-bin.000002
-rw-rw---- 1 mysql mysql 210 Jun 21 12:07 clsn-bin.index

     提示:每個(gè)庫都會(huì)刷新一次.        

1.3.8 壓縮備份

壓縮備份命令:

mysqldump -B --master-data=2 clsn|gzip >/opt/t.sql.gz

解壓:

zcat t.sql.gz >t1.sql
gzip -d t.sql.gz #刪壓縮包
gunzip alL_2017-12-22.sql.gz 

一個(gè)完整的備份語句

     innodb引擎的備份命令如下:

mysqldump -A -R --triggers --master-data=2 --single-transaction |gzip >/opt/all.sql.gz

     適合多引擎混合(例如:myisam與innodb混合)的備份命令如下:

mysqldump -A -R --triggers --master-data=2 |gzip   >/opt/alL_$(date +%F).sql.gz

1.3.9 使用Mysqldump備份進(jìn)行恢復(fù)實(shí)踐

備份innodb引擎數(shù)據(jù)庫clsn并壓縮:

mysqldump -B -R --triggers --master-data=2 clsn|gzip >/opt/all_$(date +%F).sql.gz

人為刪除clsn數(shù)據(jù)庫:

[root@db02 opt]# mysql -e “drop database clsn;”
[root@db02 opt]# mysql -e “show databases;”

恢復(fù)數(shù)據(jù)庫:

使用gzip解壓 gzip -d xxx.gz
shell> mysql  set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> source /backup/alL_2017-12-22.sql

驗(yàn)證數(shù)據(jù):

[root@db02 opt]#  mysql -e “use clsn;select * from test;”

1.4 【模擬】增量恢復(fù)企業(yè)案例

1.4.1 前提條件:

1.具備全量備份(mysqldump)。

2.除全量備份以外,還有全量備份之后產(chǎn)生的的所有binlog增量日志。

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

(1)準(zhǔn)備環(huán)境:

drop database clsn;
CREATE DATABASE clsn;
USE `clsn`;
CREATE TABLE `test` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
INSERT INTO `test` VALUES (1,'clsn'),(2,'znix'),(3,'inca'),(4,'zuma'),(5,'kaka');

查看創(chuàng)建好的數(shù)據(jù)

mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | clsn |
|  2 | znix |
|  3 | inca |
|  4 | zuma |
|  5 | kaka |
+----+------+
5 rows in set (0.00 sec)

(2)模擬環(huán)境:

mkdir /data/backup -p
date -s "2017/12/22"

全備份:

mysqldump -B --master-data=2 --single-transaction clsn|gzip>/data/backup/clsn_$(date +%F).sql.gz

模擬增量:

mysql -e "use clsn;insert into test values(6,'haha');"
mysql -e "use clsn;insert into test values(7,'hehe');"
mysql -e "select * from clsn.test;"

(3)模擬誤刪數(shù)據(jù):

date -s "2017/12/22 11:40"
mysql  -e "drop database clsn;show databases;"

出現(xiàn)問題10分鐘后,發(fā)現(xiàn)問題,刪除了數(shù)據(jù)庫了.

1.4.3 恢復(fù)數(shù)據(jù)準(zhǔn)備

(1)采用iptables防火墻屏蔽所有應(yīng)用程序的寫入。

[root@clsn ~]# iptables -I INPUT -p tcp --dport 3306 ! -s 172.16.1.51 -j DROP 
#<==非172.16.1.51禁止訪問數(shù)據(jù)庫3306端口。

     或采用mysql 配置參數(shù),但是需要重啟數(shù)據(jù)庫

--skip-networking

     復(fù)制二進(jìn)制日志文件

cp -a /application/mysql/logs/clsn-bin.* /data/backup/

     截取日志

zcat clsn_2017-12-22.sql.gz >clsn_2017-12-22.sql
sed -n '22p' clsn_2017-12-22.sql
mysqlbinlog -d clsn --start-position=339 clsn-bin.000008 -r bin.sql

需要恢復(fù)的日志:

1.clsn_2017-12-22.sql
2.bin.sql
grep -i drop bin.sql 
sed -i '/^drop.*/d' bin.sql

1.4.4 進(jìn)行數(shù)據(jù)恢復(fù)

恢復(fù)數(shù)據(jù)

[root@db02 backup]# mysql 

查看數(shù)據(jù)庫

mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | clsn |
|  2 | znix |
|  3 | inca |
|  4 | zuma |
|  5 | kaka |
+----+------+
5 rows in set (0.00 sec)

恢復(fù)增量數(shù)據(jù):

[root@db02 backup]# mysql clsn  select * from test;
+----+------+
| id | name |
+----+------+
|  1 | clsn |
|  2 | znix |
|  3 | inca |
|  4 | zuma |
|  5 | kaka |
|  6 | haha |
|  7 | hehe |
+----+------+
7 rows in set (0.00 sec)

恢復(fù)完畢。

調(diào)整iptables允許用戶訪問.

1.4.5 多個(gè)binlog問題

mysqlbinlog -d clsn --start-position=339 clsn-bin.000009 clsn-bin.0000010 -r bin1.sql

mysql clsn 

1.5 mysql數(shù)據(jù)庫實(shí)際生產(chǎn)慘案

1.5.1 發(fā)生背景

1、mysql云服務(wù)器會(huì)在每天夜里0點(diǎn)全量備份

2、某個(gè)開發(fā)人員某個(gè)陽光明媚的上午,喝著茶,優(yōu)雅的誤刪除了clsn_oss(核心)數(shù)據(jù)庫。

3、導(dǎo)致公司業(yè)務(wù)異常停止,無法正常提供服務(wù)。

1.5.2 怎么解決的

1、當(dāng)前系統(tǒng)進(jìn)行評估。

什么損壞了,有沒有備份,

恢復(fù)數(shù)據(jù)時(shí)間(誤操作的數(shù)據(jù)有關(guān),備份、恢復(fù)策略),

恢復(fù)業(yè)務(wù)時(shí)間

     2、恢復(fù)方案

              (1)恢復(fù)0點(diǎn)的全備,到測試庫

              (2)恢復(fù)0點(diǎn)開始到故障時(shí)間點(diǎn)的binlog,到測試庫

              (3)將誤操作的數(shù)據(jù)導(dǎo)出,恢復(fù)到生產(chǎn)庫。

              (4)檢驗(yàn)數(shù)據(jù)是不是完整的(開發(fā)測試環(huán)境測試恢復(fù)成功數(shù)據(jù)庫)

              (5)檢驗(yàn)完成之后,重新開啟生產(chǎn)業(yè)務(wù)

1.5.3 項(xiàng)目總結(jié)

     1、經(jīng)過我的恢復(fù)處理,30分鐘整體業(yè)務(wù)重新提供服務(wù)(速度慢。。。)

     2、在以后的工作中制定嚴(yán)格的開發(fā)規(guī)范,開發(fā),開發(fā)。

     3、將來制定更好的架構(gòu)方案。

1.6 備份工具的選擇

數(shù)據(jù)量范圍:30G  --> TB級別

1.6.1 數(shù)據(jù)量大,變換量小

    (1)全備分花費(fèi)的成本較高,mysqldump+binlog實(shí)現(xiàn)全備 + 增量備份,缺點(diǎn)是恢復(fù)成本比備份時(shí)間成本還高

    (2)xtrabackup:可以較長時(shí)間做一次全備,其余時(shí)間都是增量,全量備份空間成本很高如果數(shù)據(jù)量在30G-->TB級別的話,更推薦使用xtrabackup工具。

1.6.2 數(shù)據(jù)量小,變化量大

只需要考慮時(shí)間成本。

只用全備備份即可,兩種工具選擇都可以?;謴?fù)成本上xtrabackup小一些

1.6.3 數(shù)據(jù)量、變化量都大

時(shí)間成本和空間成本都要考慮了。

數(shù)據(jù)量達(dá)到PB或更高時(shí)(facebook),mysqldump可能成為首選,占用空間小,但技術(shù)成本高。需要對mysqldump進(jìn)行二次開發(fā)(大數(shù)據(jù)量公司首選)。

1.7 xtrabackup備份軟件

percona公司官網(wǎng)  https://www.percona.com/

1.7.1 Xtrabackup介紹

Xtrabackup是由percona開源的免費(fèi)數(shù)據(jù)庫熱備份軟件,它能對InnoDB數(shù)據(jù)庫和XtraDB存儲(chǔ)引擎的數(shù)據(jù)庫非阻塞地備份(對于MyISAM的備份同樣需要加表鎖);mysqldump備份方式是采用的邏輯備份,其最大的缺陷是備份和恢復(fù)速度較慢,如果數(shù)據(jù)庫大于50G,mysqldump備份就不太適合。

Xtrabackup安裝完成后有4個(gè)可執(zhí)行文件,其中2個(gè)比較重要的備份工具是innobackupex、xtrabackup

1)xtrabackup 是專門用來備份InnoDB表的,和mysql server沒有交互;
2)innobackupex 是一個(gè)封裝xtrabackup的Perl腳本,支持同時(shí)備份innodb和myisam,但在對myisam備份時(shí)需要加一個(gè)全局的讀鎖。
3)xbcrypt 加密解密備份工具
4)xbstream 流傳打包傳輸工具,類似tar
5)物理備份工具,在同級數(shù)據(jù)量基礎(chǔ)上,都要比邏輯備份性能好的多,特別是在數(shù)據(jù)量較大的時(shí)候,體現(xiàn)的更加明顯。

1.7.1 Xtrabackup優(yōu)點(diǎn)

1)備份速度快,物理備份可靠

2)備份過程不會(huì)打斷正在執(zhí)行的事務(wù)(無需鎖表)

3)能夠基于壓縮等功能節(jié)約磁盤空間和流量

4)自動(dòng)備份校驗(yàn)

5)還原速度快

6)可以流傳將備份傳輸?shù)搅硗庖慌_機(jī)器上

7)在不增加云服務(wù)器負(fù)載的情況備份數(shù)據(jù)

8)物理備份工具,在同級數(shù)據(jù)量基礎(chǔ)上,都要比邏輯備份性能要好的多。幾十G到不超過TB級別的條件下。但在同數(shù)據(jù)量級別,物理備份恢復(fù)數(shù)據(jù)上有一定優(yōu)勢。

1.7.2 備份原理

拷貝數(shù)據(jù)文件、拷貝數(shù)據(jù)頁

對于innodb表可以實(shí)現(xiàn)熱備。

    (1)在數(shù)據(jù)庫還有修改操作的時(shí)刻,直接將數(shù)據(jù)文件備走,此時(shí),備份走的數(shù)據(jù)對于當(dāng)前mysql來講是不一致的。
    (2)將備份過程中的redo和undo一并備走。
    (3)為了恢復(fù)的時(shí)候,只要保證備份出來的數(shù)據(jù)頁lsn能和redo lsn匹配,將來恢復(fù)的就是一致的數(shù)據(jù)。redo應(yīng)用和undo應(yīng)用。

對于myisam表實(shí)現(xiàn)自動(dòng)鎖表拷貝文件。

備份開始時(shí)首先會(huì)開啟一個(gè)后臺檢測進(jìn)程,實(shí)時(shí)檢測mysql redo的變化,一旦發(fā)現(xiàn)有新的日志寫入,立刻將日志記入后臺日志文件xtrabackup_log中,之后復(fù)制innodb的數(shù)據(jù)文件一系統(tǒng)表空間文件ibdatax,復(fù)制結(jié)束后,將執(zhí)行flush tables with readlock,然后復(fù)制.frm MYI MYD等文件,最后執(zhí)行unlock tables,最終停止xtrabackup_log

1.7.3 xtrabackup的安裝

安裝依賴關(guān)系

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

     下載軟件包,并安裝軟件

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
yum -y install percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

1.8 xtrabackup實(shí)踐操作

1.8.1 全量備份與恢復(fù)

這一階段會(huì)啟動(dòng)xtrabackup內(nèi)嵌的innodb實(shí)例,回放xtrabackup日志xtrabackup_log,將提交的事務(wù)信息變更應(yīng)用到innodb數(shù)據(jù)/表空間,同時(shí)回滾未提交的事務(wù)(這一過程類似innodb的實(shí)例恢復(fù))?;謴?fù)過程如下圖:

備份

創(chuàng)建備份目錄

mkdir  /backup -p

     進(jìn)行第一次全量備份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --socket=/application/mysql/tmp/mysql.sock --no-timestamp /backup/xfull

恢復(fù)前準(zhǔn)備

恢復(fù)數(shù)據(jù)前的準(zhǔn)備(合并xtabackup_log_file和備份的物理文件)

innobackupex --apply-log --use-memory=32M /backup/xfull/

     查看合并后的 checkpoints 其中的類型變?yōu)?full-prepared 即為可恢復(fù)。

[root@db02 full]# cat xtrabackup_checkpoints 
backup_type = full-prepared
from_lsn = 0
to_lsn = 4114824
last_lsn = 4114824
compact = 0
recover_binlog_info = 0

破壞數(shù)據(jù)庫數(shù)據(jù)文件

[root@db02 full]# cd /application/mysql/data/
[root@db02 data]# ls
auto.cnf  db02.pid  ibdata2      mysql             mysql-bin.index     world
clsn      haha      ib_logfile0  mysql-bin.000001  oldboy
db02.err  ibdata1   ib_logfile1  mysql-bin.000002  performance_schema
[root@db02 data]# \rm -rf ./* 
[root@db02 data]# ls
[root@db02 data]# killall mysql

恢復(fù)方法

方法一:直接將備份文件復(fù)制回來

cp -a /backup/full/ /application/mysql/data
chown -R mysql.mysql /application/mysql/data

方法二:使用innobackupex命令進(jìn)行恢復(fù)(推薦)

[root@db02 mysql]# innobackupex --copy-back /backup/xfull
[root@db02 mysql]# chown -R mysql.mysql /application/mysql/

             說明:無論使用那種恢復(fù)方法都要恢復(fù)后需改屬組屬主,保持與程序一致。

[root@db02 data]# cd /application/mysql/data/
[root@db02 data]# ls
clsn     ibdata2      ibtmp1  performance_schema            xtrabackup_info
haha     ib_logfile0  mysql   world
ibdata1  ib_logfile1  oldboy  xtrabackup_binlog_pos_innodb

     啟動(dòng)是數(shù)據(jù)庫

[root@db02 data]#  /etc/init.d/mysqld start

1.8.2 增量備份與恢復(fù)

innobackupex增量備份過程中的"增量"處理,其實(shí)主要是相對innodb而言,對myisam和其他存儲(chǔ)引擎而言,它仍然是全拷貝(全備份)

"增量"備份的過程主要是通過拷貝innodb中有變更的"頁"(這些變更的數(shù)據(jù)頁指的是"頁"的LSN大于xtrabackup_checkpoints中給定的LSN)。增量備份是基于全備的,第一次增備的數(shù)據(jù)必須要基于上一次的全備,之后的每次增備都是基于上一次的增備,最終達(dá)到一致性的增備。增量備份的過程如下,和全備的過程很類似,區(qū)別僅在第2步。

增量備份從哪增量?

基于上一次的備份進(jìn)行增量。

redo默認(rèn)情況下是一組兩個(gè)文件,并且有固定大小。其使用的文件是一種輪詢使用方式,他不是永久的,文件隨時(shí)可能被覆蓋。

注意:千萬不要在業(yè)務(wù)繁忙時(shí)做備份。

備份什么內(nèi)容

1、可以使用binlog作為增量

2、自帶的增量備份,基于上次備份后的變化的數(shù)據(jù)頁,還要備份在備份過程中的undo、redo變化

怎么備份

     1**、先進(jìn)行第一次全備

innobackupex  --user=root --password=123 --no-timestamp /bakcup/xfull

     對原庫做了修改,修改了小紅那行然后commit。

     2**、再進(jìn)行增量備份

innobackupex --user=root --password=123  --incremental --no-timestamp --incremental-basedir=/backup/xfull/  /backup/xinc1

怎么恢復(fù)

1、先應(yīng)用全備日志(--apply-log,暫時(shí)不需要做回滾操作--redo-only)

innobackupex --apply-log --redo-only /backup/xfull/     

2、合并增量到全備中(一致性的合并)

innobackupex --apply-log --incremental-dir=/backup/xinc1 /backup/xfull/
innobackupex --apply-log /backup/xfull

3、合并完成進(jìn)行恢復(fù)

方法一:直接將備份文件復(fù)制回來

cp -a /backup/full/ /application/mysql/data
chown -R mysql.mysql /application/mysql/data

方法二:使用innobackupex命令進(jìn)行恢復(fù)(推薦)

[root@db02 mysql]# innobackupex --copy-back /backup/xfull
[root@db02 mysql]# chown -R mysql.mysql /application/mysql/

            說明:無論使用那種恢復(fù)方法都要恢復(fù)后需改屬組屬主,保持與程序一致。

1.8.3 數(shù)據(jù)庫備份策略

每周的周日進(jìn)行一次全備;周一到周六每天做上一天增量,每周輪詢一次。

xfull       --apply-log --redo-only   保證last-lsn=周一增量開始lsn
xinc1        合并周一的增量到全備,并apply-log --redo-only  保證last-lsn=周二增量開始lsn
xinc2        合并周二的增量到全備,并apply-log --redo-only  保證last-lsn=周三增量開始lsn
xinc3       合并周三的增量到全備,并apply-log --redo-only  保證last-lsn=周四增量開始lsn
xinc4       合并周四的增量到全備,并apply-log --redo-only  保證last-lsn=周五增量開始lsn
xinc5       合并周五的增量到全備,并apply-log --redo-only  保證last-lsn=周六增量開始lsn
xinc6        合并周六的增量到全備,--apply-log  準(zhǔn)備恢復(fù)即可

1.8.4 真實(shí)生產(chǎn)實(shí)戰(zhàn)案例分析

背景:某物流公司網(wǎng)站核心系統(tǒng),數(shù)據(jù)量是220G,每日更新量100M-200M

備份方案: xtrabackup全備+增量

備份策略(crontab):

1、周六 晚上0點(diǎn)全備

0 0   6 zjs_full.sh ---這行可以沒有

2、周一至周五、周日  是增量,基于上一天增量

0 1   0-5 zjs_inc.sh---這行可以沒有

故障場景:

周三的時(shí)候,下午兩點(diǎn),開發(fā)人員誤刪除了一張表zjs_base,大約10G。

項(xiàng)目職責(zé):

1)  指定恢復(fù)方案、利用現(xiàn)有備份;

2)  恢復(fù)誤刪除數(shù)據(jù);

3)  制定運(yùn)維、開發(fā)流程規(guī)范。

恢復(fù)流程:

    a)    準(zhǔn)備上周六全備。
    b)    合并周日、周一 、周二增量。
    c)    在測試庫恢復(fù)以上數(shù)據(jù),數(shù)據(jù)的目前狀態(tài)應(yīng)該周三凌晨1:00
    d)    需要恢復(fù)的數(shù)據(jù)狀態(tài)是,下午2點(diǎn)鐘左右
    e)    從1點(diǎn)開始的binlog恢復(fù)到刪除之前轉(zhuǎn)臺
    f)    導(dǎo)出刪除的表zjs_base,恢復(fù)到生產(chǎn)庫,驗(yàn)證數(shù)據(jù)可用性、完整性。
    g)    啟動(dòng)應(yīng)用連接數(shù)據(jù)庫。

總結(jié):經(jīng)過30分鐘將誤刪表恢復(fù)了。服務(wù)總共停止40分鐘。

1.8.5 故障恢復(fù)小結(jié)

     恢復(fù)思路:

              1、首先確保斷開所有應(yīng)用,保證數(shù)據(jù)的安全。

              2、檢查用于恢復(fù)的備份存在嗎。

              3、設(shè)計(jì)快速、安全恢復(fù)簡單方案,制定突發(fā)問題解決辦法。

     具體恢復(fù)流程:

        1、準(zhǔn)備上周六全備,并--apply-log --redo-only
        2、合并增量,周日、周一 、周二  --apply-log --redo-only 周三 --apply-log
        3、在測試庫恢復(fù)以上數(shù)據(jù),數(shù)據(jù)的目前狀態(tài)應(yīng)該周三凌晨1:00
        4、需要恢復(fù)的數(shù)據(jù)狀態(tài)是,下午2點(diǎn)鐘左右,刪除zjs_base之前的數(shù)據(jù)狀態(tài)
              從1點(diǎn)開始的binlog恢復(fù)到刪除之前的那個(gè)events的position。
        5、導(dǎo)出刪除的表zjs_base,恢復(fù)到生產(chǎn)庫,驗(yàn)證數(shù)據(jù)可用性、完整性。
        6、啟動(dòng)應(yīng)用連接數(shù)據(jù)庫。

     確定恢復(fù)所需時(shí)間

恢復(fù)窗口要多長?----> 預(yù)計(jì)3小時(shí)
        和你恢復(fù)+驗(yàn)證+意外情況有關(guān)。
業(yè)務(wù)停多長時(shí)間?----> 6小時(shí)?或者更多?更少?    

1.8.6 【模擬】生產(chǎn)事故恢復(fù)

數(shù)據(jù)創(chuàng)建階段

1、創(chuàng)建備份需要的目錄

mkdir full  inc1 inc2

2、周日全備

innobackupex --user=root --password=123 --no-timestamp /backup/xbackup/full/

3、模擬數(shù)據(jù)變化

use oldboy
create table test(id int,name char(20),age int);
insert into test values(8,'outman',99);
insert into test values(9,'outgirl',100);
commit;

4、周一增量備份

innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/backup/xbackup/full/ /backup/xbackup/inc1

5、模擬數(shù)據(jù)變化

use oldboy
insert into test values(8,'outman1',119);
insert into test values(9,'outgirl1',120);
commit;

6、周二的增量備份

innobackupex --user=root --password=123 --incremental --no-timestamp --incremental-basedir=/backup/xbackup/inc1 /backup/xbackup/inc2
  1. 再插入新的行操作

    use oldboy
    insert into test values(10,'outman2',19);
    insert into test values(11,'outgirl2',10);
    commit;

模擬誤操作事故

模擬場景,周二下午2點(diǎn)誤刪除test表

    use oldboy;
    drop table test;

準(zhǔn)備恢復(fù)數(shù)據(jù)

1.準(zhǔn)備xtrabackup備份,合并備份

innobackupex --apply-log --redo-only /backup/xbackup/full
innobackupex --apply-log --redo-only --incremental-dir=/backup/xbackup/inc1 /backup/xbackup/full
innobackupex --apply-log  --incremental-dir=/backup/xbackup/inc2 /backup/xbackup/full
innobackupex --apply-log /backup/xbackup/full

2.確認(rèn)binlog起點(diǎn),準(zhǔn)備截取binlog。

 cd /backup/xbackup/inc2/
 cat xtrabackup_binlog_info 
 mysql-bin.000001    1121

3.截取到drop操作之前的binlog

    mysqlbinlog  --start-position=1121 /tmp/mysql-bin.000003 
    找到drop之前的event和postion號做日志截取,假如 1437
    mysqlbinlog  --start-position=1121 --stop-position=1437    /tmp/mysql-bin.000003 >/tmp/incbinlog.sql

4.關(guān)閉數(shù)據(jù)庫、備份二進(jìn)制日志

/etc/init.d/mysqld stop
cd /application/mysql/data/
cp mysql-bin.000001 /tmp

5.刪除MySQL所有數(shù)據(jù)

cd /application/mysql/data/
rm -rf *

恢復(fù)數(shù)據(jù)

1.將全量備份的數(shù)據(jù)恢復(fù)到數(shù)據(jù)目錄下

innobackupex --copy-back /backup/xbackup/full/
chown -R mysql.mysql /application/mysql/data/
/etc/init.d/mysqld start

2.恢復(fù)binlog記錄

set sql_log_bin=0
source /tmp/incbinlog.sql

1.8.7 xtarbackup導(dǎo)出

(1)“導(dǎo)出”表 導(dǎo)出表是在備份的prepare階段進(jìn)行的,因此,一旦完全備份完成,就可以在prepare過程中通過--export選項(xiàng)將某表導(dǎo)出了:

innobackupex --apply-log --export /path/to/backup

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

(2)“導(dǎo)入”表 要在mysql云服務(wù)器上導(dǎo)入來自于其它云服務(wù)器的某innodb表,需要先在當(dāng)前云服務(wù)器上創(chuàng)建一個(gè)跟原表表結(jié)構(gòu)一致的表,而后才能實(shí)現(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)入”:(記得改權(quán)限)

mysql> ALTER TABLE mydatabase.mytable  IMPORT TABLESPACE;

示例:

innobackupex --user=root --password=123 --no-timestamp /backup/xbackup/full/

     進(jìn)入到全備的數(shù)據(jù)庫目錄下

[root@db02 haha]# ls
db.opt  PENALTIES.frm  PENALTIES.ibd  PLAYERS.frm  PLAYERS.ibd
[root@db02 haha]# pwd
/backup/xbackup/full/haha

     導(dǎo)出表

[root@db02 haha]# innobackupex --apply-log --export /backup/xbackup/full/  
[root@db02 haha]# ls
db.opt         PENALTIES.exp  PENALTIES.ibd  PLAYERS.exp  PLAYERS.ibd
PENALTIES.cfg  PENALTIES.frm  PLAYERS.cfg    PLAYERS.frm

     創(chuàng)建出同結(jié)構(gòu)表

CREATE TABLE `PLAYERS` (
  `PLAYERNO` int(11) NOT NULL,
  `NAME` char(15) NOT NULL,
  `INITIALS` char(3) NOT NULL,
  `BIRTH_DATE` date DEFAULT NULL,
  `SEX` char(1) NOT NULL,
  `JOINED` smallint(6) NOT NULL,
  `STREET` varchar(30) NOT NULL,
  `HOUSENO` char(4) DEFAULT NULL,
  `POSTCODE` char(6) DEFAULT NULL,
  `TOWN` varchar(30) NOT NULL,
  `PHONENO` char(13) DEFAULT NULL,
  `LEAGUENO` char(4) DEFAULT NULL,
  PRIMARY KEY (`PLAYERNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

     復(fù)制恢復(fù)數(shù)據(jù)到庫下

[root@db02 haha]# cp  PLAYERS.ibd  PLAYERS.exp  /application/mysql/data/backup/
cp: overwrite `/application/mysql/data/backup/PLAYERS.ibd'? y

     恢復(fù)數(shù)據(jù)

mysql> ALTER TABLE backup.PLAYERS  DISCARD TABLESPACE;
Query OK, 0 rows affected (0.00 sec)

1.8.8 innobackupex參數(shù)說明

參數(shù)                            參數(shù)說明                                    
--compress                    該選項(xiàng)表示壓縮innodb數(shù)據(jù)文件的備份。                  
--compress-threads            該選項(xiàng)表示并行壓縮worker線程的數(shù)量。                  
--compress-chunk-size         該選項(xiàng)表示每個(gè)壓縮線程worker buffer的大小,單位是字節(jié),默認(rèn)是64K。
--encrypt                     該選項(xiàng)表示通過ENCRYPTION_ALGORITHM的算法加密innodb數(shù)據(jù)文件的備份,目前支持的算法有ASE128,AES192,AES256。
--encrypt-threads             該選項(xiàng)表示并行加密的worker線程數(shù)量。                  
--encrypt-chunk-size          該選項(xiàng)表示每個(gè)加密線程worker buffer的大小,單位是字節(jié),默認(rèn)是64K。
--encrypt-key                 該選項(xiàng)使用合適長度加密key,因?yàn)闀?huì)記錄到命令行,所以不推薦使用。      
--encryption-key-file         該選項(xiàng)表示文件必須是一個(gè)簡單二進(jìn)制或者文本文件,加密key可通過以下命令行命令生成:openssl rand -base64 24。
--include                     該選項(xiàng)表示使用正則表達(dá)式匹配表的名字[db.tb],要求為其指定匹配要備份的表的完整名稱,即databasename.tablename。
--user                        該選項(xiàng)表示備份賬號。                              
--password                    該選項(xiàng)表示備份的密碼。                            
--port                        該選項(xiàng)表示備份數(shù)據(jù)庫的端口。                          
--host                        該選項(xiàng)表示備份數(shù)據(jù)庫的地址。                          
--databases                   該選項(xiàng)接受的參數(shù)為數(shù)據(jù)名,如果要指定多個(gè)數(shù)據(jù)庫,彼此間需要以空格隔開;如:"xtra_test dba_test",同時(shí),在指定某數(shù)據(jù)庫時(shí),也可以只指定其中的某張表。如:"mydatabase.mytable"。該選項(xiàng)對innodb引擎表無效,還是會(huì)備份所有innodb表。此外,此選項(xiàng)也可以接受一個(gè)文件為參數(shù),文件中每一行為一個(gè)要備份的對象。
--tables-file                 該選項(xiàng)表示指定含有表列表的文件,格式為database.table,該選項(xiàng)直接傳給--tables-file。
--socket                      該選項(xiàng)表示mysql.sock所在位置,以便備份進(jìn)程登錄mysql。      
--no-timestamp                該選項(xiàng)可以表示不要?jiǎng)?chuàng)建一個(gè)時(shí)間戳目錄來存儲(chǔ)備份,指定到自己想要的備份文件夾。  
--ibbackup                    該選項(xiàng)指定了使用哪個(gè)xtrabackup二進(jìn)制程序。IBBACKUP-BINARY是運(yùn)行percona xtrabackup的命令。這個(gè)選項(xiàng)適用于xtrbackup二進(jìn)制不在你是搜索和工作目錄,如果指定了該選項(xiàng),innoabackupex自動(dòng)決定用的二進(jìn)制程序。
--slave-info                  該選項(xiàng)表示對slave進(jìn)行備份的時(shí)候使用,打印出master的名字和binlog pos,同樣將這些信息以change master的命令寫入xtrabackup_slave_info文件??梢酝ㄟ^基于這份備份啟動(dòng)一個(gè)從庫。
--safe-slave-backup           該選項(xiàng)表示為保證一致性復(fù)制狀態(tài),這個(gè)選項(xiàng)停止SQL線程并且等到show status中的slave_open_temp_tables為0的時(shí)候開始備份,如果沒有打開臨時(shí)表,bakcup會(huì)立刻開始,否則SQL線程啟動(dòng)或者關(guān)閉知道沒有打開的臨時(shí)表。如果slave_open_temp_tables在--safe-slave-backup-timeount(默認(rèn)300秒)秒之后不為0,從庫sql線程會(huì)在備份完成的時(shí)候重啟。
--kill-long-queries-timeout   該選項(xiàng)表示從開始執(zhí)行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的這些查詢之間等待的秒數(shù)。默認(rèn)值為0,不會(huì)kill任何查詢,使用這個(gè)選項(xiàng)xtrabackup需要有Process和super權(quán)限。
--kill-long-query-type        該選項(xiàng)表示kill的類型,默認(rèn)是all,可選select。          
--ftwrl-wait-threshold        該選項(xiàng)表示檢測到長查詢,單位是秒,表示長查詢的閾值。              
--ftwrl-wait-query-type       該選項(xiàng)表示獲得全局鎖之前允許那種查詢完成,默認(rèn)是ALL,可選update。  
--galera-info                 該選項(xiàng)表示生成了包含創(chuàng)建備份時(shí)候本地節(jié)點(diǎn)狀態(tài)的文件xtrabackup_galera_info文件,該選項(xiàng)只適用于備份PXC。
--stream                      該選項(xiàng)表示流式備份的格式,backup完成之后以指定格式到STDOUT,目前只支持tar和xbstream。
--defaults-file               該選項(xiàng)指定了從哪個(gè)文件讀取MySQL配置,必須放在命令行第一個(gè)選項(xiàng)的位置。  
--defaults-extra-file         該選項(xiàng)指定了在標(biāo)準(zhǔn)defaults-file之前從哪個(gè)額外的文件讀取MySQL配置,必須在命令行的第一個(gè)選項(xiàng)的位置。一般用于存?zhèn)浞萦脩舻挠脩裘兔艽a的配置文件。
----defaults-group            該選項(xiàng)表示從配置文件讀取的組,innobakcupex多個(gè)實(shí)例部署時(shí)使用。  
--no-lock                     該選項(xiàng)表示關(guān)閉FTWRL的表鎖,只有在所有表都是Innodb表并且不關(guān)心backup的binlog pos點(diǎn),如果有任何DDL語句正在執(zhí)行或者非InnoDB正在更新時(shí)(包括mysql庫下的表),都不應(yīng)該使用這個(gè)選項(xiàng),后果是導(dǎo)致備份數(shù)據(jù)不一致,如果考慮備份因?yàn)楂@得鎖失敗,可以考慮--safe-slave-backup立刻停止復(fù)制線程。
--tmpdir                      該選項(xiàng)表示指定--stream的時(shí)候,指定臨時(shí)文件存在哪里,在streaming和拷貝到遠(yuǎn)程server之前,事務(wù)日志首先存在臨時(shí)文件里。在使用參數(shù)stream=tar備份的時(shí)候,你的xtrabackup_logfile可能會(huì)臨時(shí)放在/tmp目錄下,如果你備份的時(shí)候并發(fā)寫入較大的話 xtrabackup_logfile可能會(huì)很大(5G+),很可能會(huì)撐滿你的/tmp目錄,可以通過參數(shù)--tmpdir指定目錄來解決這個(gè)問題。
--history                     該選項(xiàng)表示percona server 的備份歷史記錄在percona_schema.xtrabackup_history表。
--incremental                 該選項(xiàng)表示創(chuàng)建一個(gè)增量備份,需要指定--incremental-basedir。
--incremental-basedir         該選項(xiàng)表示接受了一個(gè)字符串參數(shù)指定含有full backup的目錄為增量備份的base目錄,與--incremental同時(shí)使用。
--incremental-dir             該選項(xiàng)表示增量備份的目錄。                          
--incremental-force-scan      該選項(xiàng)表示創(chuàng)建一份增量備份時(shí),強(qiáng)制掃描所有增量備份中的數(shù)據(jù)頁。        
--incremental-lsn             該選項(xiàng)表示指定增量備份的LSN,與--incremental選項(xiàng)一起使用。  
--incremental-history-name    該選項(xiàng)表示存儲(chǔ)在PERCONA_SCHEMA.xtrabackup_history基于增量備份的歷史記錄的名字。Percona Xtrabackup搜索歷史表查找最近(innodb_to_lsn)成功備份并且將to_lsn值作為增量備份啟動(dòng)出事lsn.與innobackupex--incremental-history-uuid互斥。如果沒有檢測到有效的lsn,xtrabackup會(huì)返回error。
--incremental-history-uuid    該選項(xiàng)表示存儲(chǔ)在percona_schema.xtrabackup_history基于增量備份的特定歷史記錄的UUID。
--close-files                 該選項(xiàng)表示關(guān)閉不再訪問的文件句柄,當(dāng)xtrabackup打開表空間通常并不關(guān)閉文件句柄目的是正確的處理DDL操作。如果表空間數(shù)量巨大,這是一種可以關(guān)閉不再訪問的文件句柄的方法。使用該選項(xiàng)有風(fēng)險(xiǎn),會(huì)有產(chǎn)生不一致備份的可能。
--compact                     該選項(xiàng)表示創(chuàng)建一份沒有輔助索引的緊湊的備份。                  
--throttle                    該選項(xiàng)表示每秒IO操作的次數(shù),只作用于bakcup階段有效。apply-log和--copy-back不生效不要一起用。

看完Mysql 與 xtrabackup如何實(shí)現(xiàn)備份與恢復(fù)這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。


新聞名稱:Mysql與xtrabackup如何實(shí)現(xiàn)備份與恢復(fù)
文章轉(zhuǎn)載:http://weahome.cn/article/ipiodi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部