亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL系列連載之XtraBackup?備份原理解析

 更新時(shí)間:2022年11月02日 15:04:47   作者:寰宇001  
關(guān)于mysql的備份和恢復(fù),比較傳統(tǒng)的是用mysqldump工具,今天本文推薦另一個(gè)備份工具innobackupex,重點(diǎn)給大家介紹XtraBackup?備份的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧

MySQL 系列連載之 XtraBackup 備份原理(1)

導(dǎo)讀

在日常的linux運(yùn)維工作中,大數(shù)據(jù)量備份與還原,始終是個(gè)難點(diǎn)。關(guān)于mysql的備份和恢復(fù),比較傳統(tǒng)的是用mysqldump工具,今天本文推薦另一個(gè)備份工具innobackupex。

Xtrabackup簡(jiǎn)介

innobackupex和mysqldump都可以對(duì)mysql進(jìn)行熱備份的,mysqldump對(duì)mysql的innodb的備份可以使用single-transaction參數(shù)來(lái)開(kāi)啟一個(gè)事務(wù),利用innodb的mvcc來(lái)不進(jìn)行鎖表進(jìn)行熱備份,mysqldump備份是邏輯備份,備份出來(lái)的文件是sql語(yǔ)句,所以備份和恢復(fù)的時(shí)候很慢,但是備份和恢復(fù)時(shí)候很清楚。當(dāng)MYSQL數(shù)據(jù)超過(guò)10G時(shí),用mysqldump來(lái)導(dǎo)出備份就比較慢了,此種情況下用innobackupex這個(gè)工具就比mysqldump要快很多。利用它對(duì)mysql做全量和增量備份.

Percona XtraBackup可以說(shuō)是一個(gè)相對(duì)完美的免費(fèi)開(kāi)源數(shù)據(jù)備份工具,是使用perl語(yǔ)言完成的腳本工具,能夠非??焖俚貍浞菖c恢復(fù)mysql數(shù)據(jù)庫(kù),且支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫)
此工具調(diào)用xtrabackup和tar4ibd工具,實(shí)現(xiàn)很多對(duì)性能要求并不高的任務(wù)和備份邏輯,可以說(shuō)它是innodb熱備工具ibbackup的一個(gè)開(kāi)源替代品。

XtraBackup是目前首選的備份方案之一

原理

1、MySQL主從同步原理

MySQL主從同步是在MySQL主從復(fù)制(Master-Slave Replication)基礎(chǔ)上實(shí)現(xiàn)的
通過(guò)設(shè)置在Master MySQL上的binlog(使其處于打開(kāi)狀態(tài)),Slave MySQL上通過(guò)一個(gè)I/O線程從Master MySQL上讀取binlog,然后傳輸?shù)絊lave MySQL的中繼日志中,然后Slave MySQL的SQL線程從中繼日志中讀取中繼日志,然后應(yīng)用到Slave MySQL的數(shù)據(jù)庫(kù)中。這樣實(shí)現(xiàn)了主從數(shù)據(jù)同步功能。

2、XtraBackup備份原理

innobackupex在后臺(tái)線程不斷追蹤InnoDB的日志文件,然后復(fù)制InnoDB的數(shù)據(jù)文件。數(shù)據(jù)文件復(fù)制完成之后,日志的復(fù)制線程也會(huì)結(jié)束。這樣就得到了不在同一時(shí)間點(diǎn)的數(shù)據(jù)副本和開(kāi)始備份以后的事務(wù)日志。完成上面的步驟之后,就可以使用InnoDB崩潰恢復(fù)代碼執(zhí)行事務(wù)日志(redo log),以達(dá)到數(shù)據(jù)的一致性。

3、備份的兩個(gè)過(guò)程

backup,備份階段,追蹤事務(wù)日志和復(fù)制數(shù)據(jù)文件(物理備份)。

preparing,重放事務(wù)日志,使所有的數(shù)據(jù)處于同一個(gè)時(shí)間點(diǎn),達(dá)到一致性狀態(tài)。

4、XtraBackup的優(yōu)點(diǎn)

1、可以快速可靠的完成數(shù)據(jù)備份(復(fù)制數(shù)據(jù)文件和追蹤事務(wù)日志)

2、數(shù)據(jù)備份過(guò)程中不會(huì)中斷事務(wù)的處理(熱備份)

3、節(jié)約磁盤空間和網(wǎng)絡(luò)帶寬

4、自動(dòng)完成備份鑒定

5、因更快的恢復(fù)時(shí)間而提高在線時(shí)間

5、Xtrabackup的兩個(gè)工具

1)xtrabackup :只能用于熱備份innodb,xtradb兩種數(shù)據(jù)引擎表的工具,不能備份其他表。

2)innobackupex:是一個(gè)對(duì)xtrabackup封裝的perl腳本,提供了用于myisam(會(huì)鎖表)和innodb引擎,及混合使用引擎?zhèn)浞莸哪芰ΑV饕菫榱朔奖阃瑫r(shí)備份InnoDB和MyISAM引擎的表,但在處理myisam時(shí)需要加一個(gè)讀鎖。并且加入了一些使用的選項(xiàng)。如slave-info可以記錄備份恢 復(fù)后,作為slave需要的一些信息,根據(jù)這些信息,可以很方便的利用備份來(lái)重做slave。 innobackupex比xtarbackup有更強(qiáng)的功能,它整合了xtrabackup和其他的一些功能,它不但可以全量備份/恢復(fù),還可以基于時(shí)間的增量備份與恢復(fù)。innobackupex同時(shí)支持innodb,myisam。

6、Xtrabackup可以做什么

1)在線(熱)備份整個(gè)庫(kù)的InnoDB, XtraDB表

2)在xtrabackup的上一次整庫(kù)備份基礎(chǔ)上做增量備份(innodb only)

3)以流的形式產(chǎn)生備份,可以直接保存到遠(yuǎn)程機(jī)器上(本機(jī)硬盤空間不足時(shí)很有用)

MySQL數(shù)據(jù)庫(kù)本身提供的工具并不支持真正的增量備份,二進(jìn)制日志恢復(fù)是point-in-time(時(shí)間點(diǎn))的恢復(fù)而不是增量備份。

7、Xtrabackup工具工作原理

支持對(duì)InnoDB存儲(chǔ)引擎的增量備份

1)首先完成一個(gè)完全備份,并記錄下此時(shí)檢查點(diǎn)的LSN(Log Sequence Number)。

2)在進(jìn)行增量備份時(shí),比較表空間中每個(gè)頁(yè)的LSN是否大于上次備份時(shí)的LSN,如果是,則備份該頁(yè),同時(shí)記錄當(dāng)前檢查點(diǎn)的LSN。首先,在logfile中找到并記錄最后一個(gè)checkpoint(“last checkpoint LSN”),然后開(kāi)始從LSN的位置開(kāi)始拷貝InnoDB的logfile到xtrabackup_logfile;接著,開(kāi)始拷貝全部的數(shù)據(jù)文件.ibd;在拷貝全部數(shù)據(jù)文件結(jié)束之后,才停止拷貝logfile。因?yàn)閘ogfile里面記錄全部的數(shù)據(jù)修改情況,所以,即時(shí)在備份過(guò)程中數(shù)據(jù)文件被修改過(guò)了,恢復(fù)時(shí)仍然能夠通過(guò)解析xtrabackup_logfile保持?jǐn)?shù)據(jù)的一致。

8、innobackupex備份mysql數(shù)據(jù)的流程

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

9、innobackupex恢復(fù)mysql數(shù)據(jù)的流程

innobackupex首先讀取my.cnf,查看變量(datadir,innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir)對(duì)應(yīng)的目錄是存在,確定相關(guān)目錄存在后,然后先copy myisam表和索引,然后在copy innodb的表、索引和日志。

10、innobackupex備份和恢復(fù)的工作原理

(1)備份的工作原理
MySQL 系列連載之 XtraBackup 備份原理(1)插圖(2)

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

2、之后復(fù)制innodb的數(shù)據(jù)文件和系統(tǒng)表空間文件ibdata1,待復(fù)制結(jié)束后。

3、執(zhí)行flush tables with read lock操作。

4、復(fù)制.frm,MYI,MYD,等文件(執(zhí)行flush tableswith read
lock的目的是為了防止數(shù)據(jù)表發(fā)生DDL操作,并且在這一時(shí)刻獲得binlog的位置)。

5、最后會(huì)發(fā)出unlock tables,把表設(shè)置為可讀可寫狀態(tài)。

6、最終停止xtrabackup_log。

(2)恢復(fù)的工作原理

1、為了恢復(fù)一個(gè)備份,innobackupex需要以–copy-back選項(xiàng)啟動(dòng)。

2、innobackupex將會(huì)首先通過(guò)my.cnf文件讀取如下變量:datadir,innodb_data_home_dir,innodb_data_file_path,
innodb_log_group_home_dir,并確定這些目錄存在。

3、接下來(lái),此腳本將會(huì)首先拷貝MyISAM表、索引文件、其他類型的文件(如:.frm, .MRG, .MYD, .MYI, .TRG,
.TRN, .ARM, .ARZ, .CSM, .CSV, par and .opt files)

4、接下來(lái)拷貝InnoDB表數(shù)據(jù)文件,最后拷貝日志文件。

5、拷貝執(zhí)行時(shí)將會(huì)保留文件屬性,在使用備份文件啟動(dòng)MySQL前,可能需要更改文件的owener(如從拷貝文件的user更改到mysql用戶)。

MySQL 系列連載之 XtraBackup 全量熱備 or 恢復(fù)實(shí)踐(2)

1、準(zhǔn)備工作

#系統(tǒng)環(huán)境

[root@master tools]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@master tools]# uname -r
2.6.32-642.el6.x86_64

#主數(shù)據(jù)庫(kù)版本

[root@master ~]# mysql -V
mysql Ver 14.14 Distrib 5.5.32, for Linux (x86_64) using readline 5.1

#檢查數(shù)據(jù)庫(kù)引擎

mysql> show engines;

#主從數(shù)據(jù)庫(kù)同步注意點(diǎn) [mysqld]

#主從之間的id不能相同 server-id

#啟用二進(jìn)制日志 log-bin

#一般在從庫(kù)開(kāi)啟(可選) read_only #推薦使用InnoDB并做好相關(guān)配置

#檢查主從數(shù)據(jù)庫(kù)狀態(tài)

[root@master ~]# mysql -e "show global variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 241 |
+---------------+-------+
[root@slave01 ~]# mysql -e "show global variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 242 |
+---------------+-------+

2、安裝percona-xtrabackup

官網(wǎng)安裝包地址 - https://www.percona.com/downloads/XtraBackup/LATEST/

1)源碼安裝Xtrabackup

將源碼包下載到/usr/local/src下

源碼包下載

cd /usr/local/src

#安裝依賴
yum -y install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool zlib-devel libgcrypt-devel libcurl-devel crypt* libgcrypt* python-sphinx openssl imake libxml2-devel expat-devel ncurses5-devel ncurses-devle vim-common libgpg-error-devel libidn-devel perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL

#下載源碼包
wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/source/percona-xtrabackup-2.1.9.tar.gz

#解壓源碼包
tar -zvxf percona-xtrabackup-2.1.9.tar.gz

cd percona-xtrabackup-2.1.9

[root@master percona-xtrabackup-2.1.9]# ./utils/build.sh //執(zhí)行該安裝腳本,會(huì)出現(xiàn)下面信息
Build an xtrabackup binary against the specified InnoDB flavor.

Usage: build.sh CODEBASE
where CODEBASE can be one of the following values or aliases:
innodb51 | plugin build against InnoDB plugin in MySQL 5.1
innodb55 | 5.5 build against InnoDB in MySQL 5.5
innodb56 | 5.6,xtradb56, build against InnoDB in MySQL 5.6
| mariadb100,galera56
xtradb51 | xtradb,mariadb51 build against Percona Server with XtraDB 5.1
| mariadb52,mariadb53
xtradb55 | galera55,mariadb55 build against Percona Server with XtraDB 5.5

根據(jù)上面提示和你使用的存儲(chǔ)引擎及版本,選擇相應(yīng)的參數(shù)即可。因?yàn)槲矣玫氖荕ySQL 5.5版本,所以執(zhí)行如下語(yǔ)句安裝:

[root@master percona-xtrabackup-2.1.9]# ./utils/build.sh innodb55

以上語(yǔ)句執(zhí)行成功后,表示安裝完成。

最后,把生成的二進(jìn)制文件拷貝到一個(gè)自定義目錄下(本例中為/home/mysql/admin/bin/percona-xtrabackup-2.1.9),并把該目錄放到環(huán)境變量PATH中。

mkdir -p /home/mysql/admin/bin/percona-xtrabackup-2.1.9/

cp ./innobackupex /home/mysql/admin/bin/percona-xtrabackup-2.1.9/

mv /usr/local/src/percona-xtrabackup-2.1.9/src/xtrabackup_innodb55 xtrabackup_55

cp /usr/local/src/percona-xtrabackup-2.1.9/src/xtrabackup_55 /usr/local/src/percona-xtrabackup-2.1.9/src/xbstream /home/mysql/admin/bin/percona-xtrabackup-2.1.9/

vim /etc/profile

export PATH=$PATH:/home/mysql/admin/bin/percona-xtrabackup-2.1.9/

刷新profile并測(cè)試下innobackupex是否正常使用

source /etc/profile

測(cè)試下innobackupex是否正常使用

innobackupex --help

3、全量備份和恢復(fù)

1)全量備份操作

執(zhí)行下面語(yǔ)句進(jìn)行全備: mysql的安裝目錄是/application/mysql/ mysql的配置文件路徑/etc/my.cnf 全量備份后的數(shù)據(jù)存放目錄是/backup/mysql/data

mkdir -p /backup/mysql/data/

innobackupex --defaults-file=/etc/my.cnf --user=root /backup/mysql/data/

170404 12:46:29 innobackupex: Waiting for log copying to finish

xtrabackup: The latest check point (for incremental): '1639325'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1639325)

xtrabackup: Creating suspend file '/backup/mysql/data/2017-04-04_12-46-24/xtrabackup_log_copied' with pid '21223'
xtrabackup: Transaction log of lsn (1639325) to (1639325) was copied.
170404 12:46:30 innobackupex: All tables unlocked

innobackupex: Backup created in directory '/backup/mysql/data/2017-04-04_12-46-24'
innobackupex: MySQL binlog position: filename 'mysql-bin.000019', position 967
170404 12:46:30 innobackupex: Connection to database server closed
170404 12:46:30 innobackupex: completed OK!

出現(xiàn)上面的信息,表示備份已經(jīng)ok。

上面執(zhí)行的備份語(yǔ)句會(huì)將mysql數(shù)據(jù)文件(即由my.cnf里的變量datadir指定)拷貝至備份目錄下(/backup/mysql/data)

注意:如果不指定–defaults-file,默認(rèn)值為/etc/my.cnf。 備份成功后,將在備份目錄下創(chuàng)建一個(gè)時(shí)間戳目錄(本例創(chuàng)建的目錄為/backup/mysql/data/2017-04-04_12-46-24),在該目錄下存放備份文件。

[root@master data]# ll /backup/mysql/data/
 
總用量 4
 
drwxr-xr-x 6 root root 4096 4月 4 16:56 2017-04-04_16-56-35
 
[root@master data]# ll 2017-04-04_16-56-35/
 
總用量 18468
 
-rw-r--r-- 1 root root 188 4月 4 16:56 backup-my.cnf
 
-rw-r----- 1 root root 18874368 4月 4 16:56 ibdata1
 
drwxr-xr-x 2 root root 4096 4月 4 16:56 mysql
 
drwxr-xr-x 2 root root 4096 4月 4 16:56 performance_schema
 
drwxr-xr-x 2 root root 4096 4月 4 16:56 test
 
-rw-r--r-- 1 root root 13 4月 4 16:56 xtrabackup_binary
 
-rw-r--r-- 1 root root 23 4月 4 16:56 xtrabackup_binlog_info
 
-rw-r----- 1 root root 89 4月 4 16:56 xtrabackup_checkpoints
 
-rw-r----- 1 root root 2560 4月 4 16:56 xtrabackup_logfile
 
drwxr-xr-x 2 root root 4096 4月 4 16:56 xtra_test

還可以在遠(yuǎn)程進(jìn)行全量備份,命令如下:

innobackupex --defaults-file=/etc/my.cnf --user=root --host=127.0.0.1 --parallel=2 --throttle=200 /backup/mysql/data 2>/backup/mysql/data/bak.log 1>/backup/mysql/data/
data +%Y-%m-%d_%H-%M%S

參數(shù)解釋:

--user=root 備份操作用戶名,一般都是root用戶

--host=127.0.0.1 主機(jī)ip,本地可以不加(適用于遠(yuǎn)程備份)。注意要提前在mysql中授予連接的權(quán)限,最好備份前先測(cè)試用命令中的用戶名、密碼和host能否正常連接mysql。

--parallel=2 --throttle=200 并行個(gè)數(shù),根據(jù)主機(jī)配置選擇合適的,默認(rèn)是1個(gè),多個(gè)可以加快備份速度。

/backup/mysql/data 備份存放的目錄

2>/backup/mysql/data/bak.log 備份日志,將備份過(guò)程中的輸出信息重定向到bak.log

這種備份跟上面相比,備份成功后,不會(huì)自動(dòng)在備份目錄下創(chuàng)建一個(gè)時(shí)間戳目錄,需要如上命令中自己定義。

[root@master src]# ll /backup/mysql/data/
總用量 8
drwxr-xr-x 6 root root 4096 4月 4 12:46 2017-04-04_12-46-24
-rw-r--r-- 1 root root 106 4月 4 12:57 bak.log //備份信息都記錄在這個(gè)日志里,如果備份失敗,可以到這里日志里查詢

2)全量備份后的恢復(fù)操作

#進(jìn)入數(shù)據(jù)庫(kù)
[root@master data]# mysql

#查看當(dāng)前所有數(shù)據(jù)庫(kù)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| xtra_test |
+--------------------+
5 rows in set (0.09 sec)

#切換到 xtra_test數(shù)據(jù)庫(kù)下
mysql> use xtra_test;
Database changed

#查看當(dāng)前數(shù)據(jù)庫(kù)里的表
mysql> show tables;
+---------------------+
| Tables_in_xtra_test |
+---------------------+
| I |
| M |
+---------------------+
2 rows in set (0.04 sec)

#刪除整個(gè) xtra_test庫(kù)
mysql> drop database xtra_test;
Query OK, 2 rows affected (0.34 sec)

#現(xiàn)在已經(jīng)看不到 xtra_test庫(kù)了
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)

注意:恢復(fù)之前

1)要先關(guān)閉數(shù)據(jù)庫(kù)

2)要?jiǎng)h除數(shù)據(jù)文件和日志文件(也可以mv移到別的地方,只要確保清空mysql數(shù)據(jù)存放目錄就行)

[root@master data]# ps -ef|grep mysqld
root 10929 1 0 10:32 pts/0 00:00:00 /bin/sh /application/mysql/bin/mysqld_safe --datadir=/application/mysql/data --pid-file=/application/mysql/data/master.pid
mysql 11227 10929 0 10:32 pts/0 00:00:14 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/application/mysql/data/master.err --pid-file=/application/mysql/data/master.pid --port=3306
root 21514 1896 0 13:55 pts/0 00:00:00 grep mysqld

由上面可以看出mysql的數(shù)據(jù)和日志存放目錄是/application/mysql/data

#關(guān)閉MySQL數(shù)據(jù)庫(kù)服務(wù)
[root@master data]# service mysqld stop
Shutting down MySQL.... SUCCESS!

#移動(dòng)數(shù)據(jù)文件和日志文件到/tmp(當(dāng)然刪除也可以)
[root@master data]# mv /application/mysql/data/* /tmp/

[root@master data]# innobackupex --defaults-file=/etc/my.cnf --user=root --use-memory=1G --apply-log /backup/mysql/data/2017-04-04_13-04-05/

[root@master data]# innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /backup/mysql/data/2017-04-04_13-04-05/

[root@master ~]# chown -R mysql.mysql /application/mysql/data/

可能報(bào)錯(cuò):

sh: xtrabackup: command not found innobackupex: Error: no ‘mysqld’
group in MySQL options at
/home/mysql/admin/bin/percona-xtrabackup-2.1.9/innobackupex line 4350.

解決:將xtrabackup_55復(fù)制成xtrabackup即可

[root@master src]# ls /home/mysql/admin/bin/percona-xtrabackup-2.1.9/
innobackupex xbstream xtrabackup_55 xtrabackup_innodb55

[root@master src]# cd /home/mysql/admin/bin/percona-xtrabackup-2.1.9/

[root@master percona-xtrabackup-2.1.9]# cp xtrabackup_55 xtrabackup

[root@master percona-xtrabackup-2.1.9]# ls
innobackupex xbstream xtrabackup xtrabackup_55 xtrabackup_innodb55

檢驗(yàn):執(zhí)行之后就OK了

[root@master percona-xtrabackup-2.1.9]# innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /backup/mysql/data/2017-04-04_13-04-05/

innobackupex: Copying '/backup/mysql/data/2017-04-04_13-04-05/ib_logfile1' to '/application/mysql/data/ib_logfile1'
innobackupex: Copying '/backup/mysql/data/2017-04-04_13-04-05/ib_logfile0' to '/application/mysql/data/ib_logfile0'
innobackupex: Finished copying back files.

170404 14:24:07 innobackupex: completed OK!

出現(xiàn)上面的信息,說(shuō)明數(shù)據(jù)恢復(fù)成功了?。?/p>

從上面的恢復(fù)操作可以看出,執(zhí)行恢復(fù)分為兩個(gè)步驟:

1)第一步恢復(fù)步驟是應(yīng)用日志(apply-log),為了加快速度,一般建議設(shè)置–use-memory(如果系統(tǒng)內(nèi)存充足,可以使用加大內(nèi)存進(jìn)行備份 ),這個(gè)步驟完成之后,目錄/backup/mysql/data/2017-04-04_13-04-05/下的備份文件已經(jīng)準(zhǔn)備就緒。

2)第二步恢復(fù)步驟是拷貝文件(copy-back),即把備份文件拷貝至原數(shù)據(jù)目錄下。

最后,啟動(dòng)mysql,查看數(shù)據(jù)是否恢復(fù)回來(lái)了

#啟動(dòng)數(shù)據(jù)庫(kù)
[root@master ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!

#進(jìn)入MySQL
[root@master ~]# mysql

#顯示所有數(shù)據(jù)庫(kù)(可以看到我們之前刪除的xtra_test 庫(kù)已經(jīng)恢復(fù)了)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| xtra_test |
+--------------------+
5 rows in set (0.00 sec)

#進(jìn)入xtra_test 庫(kù)
mysql> use xtra_test;
Database changed

#查看xtra_test 庫(kù)內(nèi)表內(nèi)容(已經(jīng)全部恢復(fù))
mysql> show tables;
+---------------------+
| Tables_in_xtra_test |
+---------------------+
| I |
| M |
+---------------------+
2 rows in set (0.00 sec)

MySQL 系列連載之 XtraBackup 增量熱備 or 恢復(fù)實(shí)踐(3)

增量備份和恢復(fù)
特別注意:

innobackupex 增量備份僅針對(duì)InnoDB這類支持事務(wù)的引擎,對(duì)于MyISAM等引擎,則仍然是全備。

1)增量備份操作
增量備份需要基于全量備份

先假設(shè)我們已經(jīng)有了一個(gè)全量備份(如上面的/backup/mysql/data/2017-04-04_16-56-35),我們需要在該全量備份的基礎(chǔ)上做第一次增量備份。

[root@master ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/backup/mysql/data/2017-04-04_16-56-35/ --incremental /backup/mysql/data

其中:

–incremental-basedir 指向全量備份目錄 --incremental 指向增量備份的目錄

上面語(yǔ)句執(zhí)行成功之后,會(huì)在–incremental執(zhí)行的目錄下創(chuàng)建一個(gè)時(shí)間戳子目錄(本例中為:/backup/mysql/data/2017-04-04_14-37-24),在該目錄下存放著增量備份的所有文件。

[root@master data]# ll
總用量 8
drwxr-xr-x 6 root root 4096 4月 4 16:56 2017-04-04_16-56-35 //全量備份目錄
drwxr-xr-x 6 root root 4096 4月 4 16:59 2017-04-04_16-58-58 //增量備份目錄

在備份目錄下,有一個(gè)文件xtrabackup_checkpoints記錄著備份信息,其中可以查出

1)全量備份的信息如下:

[root@master data]# cd /backup/mysql/data/2017-04-04_16-56-35/
[root@master 2017-04-04_16-56-35]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1639436
last_lsn = 1639436
compact = 0

2)基于以上全量備份的增量備份的信息如下:

[root@master data]# cd /backup/mysql/data/2017-04-04_16-58-58/
[root@master 2017-04-04_16-58-58]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1639436
to_lsn = 1639436
last_lsn = 1639436
compact = 0

從上面可以看出,增量備份的from_lsn正好等于全備的to_lsn。

那么,我們是否可以在增量備份的基礎(chǔ)上再做增量備份呢?

答案是肯定的,只要把–incremental-basedir執(zhí)行上一次增量備份的目錄即可,如下所示:

[root@master data]# innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/backup/mysql/data/2017-04-04_16-58-58/ --incremental /backup/mysql/data

[root@master ~]# ll /backup/mysql/data/
總用量 12
drwxr-xr-x 6 root root 4096 4月 4 16:56 2017-04-04_16-56-35 //全量備份目錄
drwxr-xr-x 6 root root 4096 4月 4 16:59 2017-04-04_16-58-58 //增量備份目錄1
drwxr-xr-x 6 root root 4096 4月 4 17:02 2017-04-04_17-02-35 //增量備份目錄2

它的trabackup_checkpoints記錄著備份信息如下:

[root@master ~]# cd /backup/mysql/data/2017-04-04_17-02-35/
[root@master 2017-04-04_17-02-35]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1639436
to_lsn = 1639436
last_lsn = 1639436
compact = 0

可以看到,第二次增量備份的from_lsn是從上一次增量備份的to_lsn開(kāi)始的

2)增量備份后的恢復(fù)操作
增量備份的恢復(fù)要比全量備份復(fù)雜很多,增量備份與全量備份有著一些不同,尤其要注意的是:

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

2)基于所有的備份將未提交的事務(wù)進(jìn)行“回滾”。于是,操作就變成了:不能回滾,因?yàn)橛锌赡艿谝淮蝹浞輹r(shí)候沒(méi)提交,在增量中已經(jīng)成功提交

第一步是在所有備份目錄下重做已提交的日志(注意備份目錄路徑要跟全路徑)

其中:

一定要全路徑

BASE-DIR 是指全量備份的目錄

INCREMENTAL-DIR-1 是指第一次增量備份的目錄

INCREMENTAL-DIR-2 是指第二次增量備份的目錄,以此類推。

這里要注意的是:

1)最后一步的增量備份并沒(méi)有–redo-only選項(xiàng)!回滾進(jìn)行崩潰恢復(fù)過(guò)程

2)可以使用–use_memory提高性能。

3)以上語(yǔ)句執(zhí)行成功之后,最終數(shù)據(jù)在BASE-DIR(即全量目錄)下,其實(shí)增量備份就是把增量目錄下的數(shù)據(jù),整合到全變量目錄下,然后在進(jìn)行,全數(shù)據(jù)量的還原。

第一步完成之后,我們開(kāi)始下面關(guān)鍵的第二步,即拷貝文件,進(jìn)行全部還原!注意:必須先停止mysql數(shù)據(jù)庫(kù),然后清空數(shù)據(jù)庫(kù)目錄(這里是指/data/mysql/data)下的文件。

4)innobackupex --copy-back BASE-DIR

同樣地,拷貝結(jié)束之后,記得檢查下數(shù)據(jù)目錄(這里指/data/mysql/data)的權(quán)限是否正確(修改成mysql:mysql),然后再重啟mysql。

接下來(lái)進(jìn)行案例說(shuō)明:

假設(shè)我們已經(jīng)有了一個(gè)全量備份2017-04-04_16-56-35 刪除在上面測(cè)試創(chuàng)建的兩個(gè)增量備份

[root@master ~]# cd /backup/mysql/data/

[root@master data]# ll
drwxr-xr-x 6 root root 4096 4月 4 17:08 2017-04-04_16-56-35
drwxr-xr-x 6 root root 4096 4月 4 17:08 2017-04-04_16-58-58
drwxr-xr-x 6 root root 4096 4月 4 17:08 2017-04-04_17-02-35

[root@master data]# rm -fr 2017-04-04_16-58-58 2017-04-04_17-02-35

[root@master data]# ll
drwxr-xr-x 6 root root 4096 4月 4 17:08 2017-04-04_16-56-35

假設(shè)在全量備份后,mysql數(shù)據(jù)庫(kù)中又有新數(shù)據(jù)寫入

#進(jìn)入數(shù)據(jù)庫(kù)
[root@master data]# mysql

#創(chuàng)建一個(gè)叫做 ceshi 的數(shù)據(jù)庫(kù)
mysql> create database ceshi;
Query OK, 1 row affected (0.00 sec)

#切換到 ceshi 庫(kù)下
mysql> use ceshi
Database changed

#創(chuàng)建一個(gè)叫做 test1 的表
mysql> create table test1(
-> id int3,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.26 sec)

#往test1表中插入數(shù)據(jù)
mysql> insert into test1 values(1,"chenbaojia");
Query OK, 1 row affected (0.05 sec)

#查看 test1 表中的內(nèi)容
mysql> select * from test1;
+------+------------+
| id | name |
+------+------------+
| 1 | chenbaojia |
+------+------------+
1 row in set (0.00 sec)

#查看當(dāng)前所有數(shù)據(jù)庫(kù)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ceshi |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

然后進(jìn)行一次增量備份:

[root@master data]# innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/backup/mysql/data/2017-04-04_16-56-35/ --incremental /backup/mysql/data/

[root@master data]# ll
總用量 8
drwxr-xr-x 6 root root 4096 4月 4 17:08 2017-04-04_16-56-35 //全量備份目錄
drwxr-xr-x 6 root root 4096 4月 4 17:28 2017-04-04_17-28-14 //增量備份目錄

接著再在mysql數(shù)據(jù)庫(kù)中寫入新數(shù)據(jù)

[root@master data]# mysql

mysql> use ceshi;
Database changed

mysql> insert into test1 values(2,"pelosi");
Query OK, 1 row affected (0.11 sec)

mysql> insert into test1 values(3,"hiofo");
Query OK, 1 row affected (0.06 sec)

mysql> insert into test1 values(4,"mac");
Query OK, 1 row affected (0.09 sec)

mysql> select * from test1;
+------+------------+
| id | name |
+------+------------+
| 1 | chenbaojia |
| 2 | pelosi |
| 3 | hiofo |
| 4 | mac |
+------+------------+
4 rows in set (0.00 sec)

接著在增量的基礎(chǔ)上再進(jìn)行一次增量備份

–incremental-basedi 要寫上次最后增量備份的目錄

[root@master ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/backup/mysql/data/2017-04-04_17-28-14/ --incremental /backup/mysql/data

[root@master ~]# ll /backup/mysql/data/
總用量 12
drwxr-xr-x 6 root root 4096 4月 4 17:08 2017-04-04_16-56-35 //全量備份目錄
drwxr-xr-x 6 root root 4096 4月 4 17:28 2017-04-04_17-28-14 //全量備份目錄
drwxr-xr-x 6 root root 4096 4月 4 17:38 2017-04-04_17-37-58 //全量備份目錄

現(xiàn)在刪除數(shù)據(jù)庫(kù)ceshi 、 test

[root@master ~]# mysql

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ceshi |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database ceshi;
Query OK, 1 row affected (0.07 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

接下來(lái)就開(kāi)始進(jìn)行數(shù)據(jù)恢復(fù)操作:

先恢復(fù)應(yīng)用日志(注意最后一個(gè)不需要加–redo-only參數(shù))

[root@master ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /backup/mysql/data/2017-04-04_16-56-35/

[root@master ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /backup/mysql/data/2017-04-04_16-56-35/ --incremental-dir=/backup/mysql/data/2017-04-04_17-28-14/

[root@master ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /backup/mysql/data/2017-04-04_16-56-35/ --incremental-dir=/backup/mysql/data/2017-04-04_17-37-58/

到此,恢復(fù)數(shù)據(jù)工作還沒(méi)有結(jié)束!還有最重要的一個(gè)環(huán)節(jié),就是把增量目錄下的數(shù)據(jù)整合到全量備份目錄下,然后再進(jìn)行一次全量還原。

停止mysql數(shù)據(jù)庫(kù),并清空數(shù)據(jù)目錄

[root@master ~]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS!
[root@master ~]# rm -fr /application/mysql/data/*

最后拷貝文件,并驗(yàn)證數(shù)據(jù)目錄的權(quán)限

[root@master ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /backup/mysql/data/2017-04-04_16-56-35/

[root@master ~]# chown -R mysql.mysql /application/mysql/data/*

[root@master ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!

[root@master ~]# mysql

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ceshi |
| mysql |
| performance_schema |
| test |
| xtra_test |
+--------------------+
6 rows in set (0.00 sec)

mysql> select * from ceshi.test1;
+------+------------+
| id | name |
+------+------------+
| 1 | chenbaojia |
| 2 | pelosi |
| 3 | hiofo |
| 4 | mac |
+------+------------+
4 rows in set (0.00 sec)

另外注意: **上面在做備份的時(shí)候,將備份目錄和增量目錄都放在了同一個(gè)目錄路徑下,其實(shí)推薦放在不同的路徑下,方便管理!**比如:

/backup/mysql/data/full 存放全量備份目錄

/backup/mysql/data/daily1 存放第一次增量備份目錄

/backup/mysql/data/daily2 存放第二次增量目錄

以此類推

在恢復(fù)的時(shí)候,注意命令中的路徑要跟對(duì)!

innobackupex 參數(shù)
innobackupex全量、增量備份腳本

可以根據(jù)自己線上數(shù)據(jù)庫(kù)情況,編寫全量和增量備份腳本,然后結(jié)合crontab設(shè)置計(jì)劃執(zhí)行。

比如:每周日的1:00進(jìn)行全量備份,每周1-6的1:00進(jìn)行增量備份。

還可以在腳本里編寫郵件通知信息(可以用mail或sendemail)

FAQ

1、可能報(bào)錯(cuò)1

Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/mysql/admin/bin/percona-xtrabackup-2.1.9/innobackupex line 23.
BEGIN failed--compilation aborted at /home/mysql/admin/bin/percona-xtrabackup-2.1.9/innobackupex line 23.

解決方案:

.pm實(shí)際上是Perl的包,只需安裝perl-Time-HiRes即可:

[root@test-huanqiu percona-xtrabackup-2.1.9]# yum install -y perl-Time-HiRes

2、可能報(bào)錯(cuò)2

Can't locate DBI.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/local/webserver/mysql5.1.57/bin/mysqlhotcopy line 25.
BEGIN failed--compilation aborted at /usr/local/webserver/mysql5.1.57/bin/mysqlhotcopy line 25.

報(bào)錯(cuò)原因:系統(tǒng)沒(méi)有按安裝DBI組件。

DBI(Database Interface)是perl連接數(shù)據(jù)庫(kù)的接口。其是perl連接數(shù)據(jù)庫(kù)的最優(yōu)秀方法,他支持包括Orcal,Sybase,mysql,db2等絕大多數(shù)的數(shù)據(jù)庫(kù)。

解決辦法:

安裝DBI組件(Can't locate DBI.pm in @INC-mysql接口)
或者單獨(dú)裝DBI、Data-ShowTable、DBD-mysql 三個(gè)組件
[root@test-huanqiu percona-xtrabackup-2.1.9]# yum -y install perl-DBD-MySQL
接著使用innobackupex命令測(cè)試是否正常
[root@test-huanqiu percona-xtrabackup-2.1.9]# innobackupex --help
Options:
--apply-log
Prepare a backup in BACKUP-DIR by applying the transaction log file
named "xtrabackup_logfile" located in the same directory. Also,
create new transaction logs. The InnoDB configuration is read from
the file "backup-my.cnf".

--compact
Create a compact backup with all secondary index pages omitted. This
option is passed directly to xtrabackup. See xtrabackup
documentation for details.
--compress
This option instructs xtrabackup to compress backup copies of InnoDB
data files. It is passed directly to the xtrabackup child process.
Try 'xtrabackup --help' for more details.

3、可能報(bào)錯(cuò)3

161130 05:56:48 innobackupex: Connecting to MySQL server with DSN ‘dbi:mysql:;mysql_read_default_file=/usr/local/mysql/my.cnf;mysql_read_default_group=xtrabackup’ as ‘root’ (using password: YES).
innobackupex: Error: Failed to connect to MySQL server as DBD::mysql module is not installed at /home/mysql/admin/bin/percona-xtrabackup-2.1.9/innobackupex line 2956.

解決辦法:

[root@test-huanqiu ~]# yum -y install perl-DBD-MySQL.x86_64
......
Package perl-DBD-MySQL-4.013-3.el6.x86_64 already installed and latest version //發(fā)現(xiàn)本機(jī)已經(jīng)安裝了

[root@test-huanqiu ~]# rpm -qa|grep perl-DBD-MySQL
perl-DBD-MySQL-4.013-3.el6.x86_64
發(fā)現(xiàn)本機(jī)已經(jīng)安裝了最新版的perl-DBD-MYSQL了,但是仍然報(bào)出上面的錯(cuò)誤??! 莫慌~~繼續(xù)下面的操作進(jìn)行問(wèn)題的解決

查看mysql.so依賴的lib庫(kù)

[root@test-huanqiu ~]# ldd /usr/lib64/perl5/auto/DBD/mysql/mysql.so
linux-vdso.so.1 => (0x00007ffd291fc000)
libmysqlclient.so.16 => not found //這一項(xiàng)為通過(guò)檢查,缺失libmysqlclient.so.16庫(kù)導(dǎo)致
libz.so.1 => /lib64/libz.so.1 (0x00007f78ff9de000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f78ff7a7000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f78ff58e000)
libm.so.6 => /lib64/libm.so.6 (0x00007f78ff309000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f78ff09d000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f78fecb9000)
libc.so.6 => /lib64/libc.so.6 (0x00007f78fe924000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f78fe721000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f78fe4dd000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f78fe1f5000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f78fdff1000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f78fddc5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f78fdbc0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f78ffe1d000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f78fd9b5000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f78fd7b2000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f78fd597000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f78fd37a000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f78fd15a000)
以上結(jié)果說(shuō)明缺少libmysqlclient.so.16這個(gè)二進(jìn)制包,找個(gè)官方原版的mysql的libmysqlclient.so.16替換了即可!

[root@test-huanqiu~]# find / -name libmysqlclient.so.16 //查看本機(jī)并沒(méi)有l(wèi)ibmysqlclient.so.16庫(kù)文件
查看mysql/lib下的libmysqlclinet.so庫(kù)文件

[root@test-huanqiu~]# ll /usr/local/mysql/lib/
total 234596
-rw-r--r--. 1 mysql mysql 19520800 Nov 29 12:27 libmysqlclient.a
lrwxrwxrwx. 1 mysql mysql 16 Nov 29 12:34 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx. 1 mysql mysql 17 Nov 29 12:34 libmysqlclient_r.so -> libmysqlclient.so
lrwxrwxrwx. 1 mysql mysql 20 Nov 29 12:34 libmysqlclient_r.so.18 -> libmysqlclient.so.18
lrwxrwxrwx. 1 mysql mysql 24 Nov 29 12:34 libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0
lrwxrwxrwx. 1 mysql mysql 20 Nov 29 12:34 libmysqlclient.so -> libmysqlclient.so.18
lrwxrwxrwx. 1 mysql mysql 24 Nov 29 12:34 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0
-rwxr-xr-x. 1 mysql mysql 8858235 Nov 29 12:27 libmysqlclient.so.18.1.0
-rw-r--r--. 1 mysql mysql 211822074 Nov 29 12:34 libmysqld.a
-rw-r--r--. 1 mysql mysql 14270 Nov 29 12:27 libmysqlservices.a
drwxr-xr-x. 3 mysql mysql 4096 Nov 29 12:34 plugin
將mysql/lib/libmysqlclient.so.18.1.0庫(kù)文件拷貝到/lib64下,拷貝后命名為libmysqlclient.so.16

[root@test-huanqiu~]# cp /usr/local/mysql/lib/libmysqlclient.so.18.1.0 /lib64/libmysqlclient.so.16

[root@test-huanqiu~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib/
/lib64/
[root@test-huanqiu~]# ldconfig

最后卸載perl-DBD-MySQL,并重新安裝perl-DBD-MySQL
[root@test-huanqiu~]# rpm -qa|grep perl-DBD-MySQL
perl-DBD-MySQL-4.013-3.el6.x86_64
[root@test-huanqiu~]# rpm -e --nodeps perl-DBD-MySQL
[root@test-huanqiu~]# rpm -qa|grep perl-DBD-MySQL
[root@test-huanqiu~]# yum -y install perl-DBD-MySQL
待重新安裝后,再次重新檢查mysql.so依賴的lib庫(kù),發(fā)現(xiàn)已經(jīng)都通過(guò)了

[root@test-huanqiu~]# ldd /usr/lib64/perl5/auto/DBD/mysql/mysql.so
linux-vdso.so.1 => (0x00007ffe3669b000)
libmysqlclient.so.16 => /usr/lib64/mysql/libmysqlclient.so.16 (0x00007f4af5c25000)
libz.so.1 => /lib64/libz.so.1 (0x00007f4af5a0f000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f4af57d7000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f4af55be000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4af533a000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4af50cd000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4af4ce9000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4af4955000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f4af4751000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f4af450d000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f4af4226000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f4af4021000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f4af3df5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4af3bf1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4af61d1000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f4af39e5000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f4af37e2000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f4af35c8000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4af33aa000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4af318b000)

4、可能報(bào)錯(cuò)4
sh: xtrabackup_56: command not found

innobackupex: Error: no ‘mysqld’ group in MySQL options at /home/mysql/admin/bin/percona-xtrabackup-2.1.9/innobackupex line 4350.
有可能是percona-xtrabackup編譯安裝后,在編譯目錄的src下存在xtrabackup_innodb55,只需要其更名為xtrabackup_55,然后拷貝到上面的/home/mysql/admin/bin/percona-xtrabackup-2.1.9/下即可!

參連接:

http://www.yunweipai.com/13462.html

到此這篇關(guān)于MySQL系列連載之XtraBackup 備份原理的文章就介紹到這了,更多相關(guān)MySQL XtraBackup 備份內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql線上查詢前要注意資源限制的實(shí)現(xiàn)

    mysql線上查詢前要注意資源限制的實(shí)現(xiàn)

    在數(shù)據(jù)庫(kù)管理中,限制查詢資源是避免單個(gè)查詢消耗過(guò)多資源導(dǎo)致系統(tǒng)性能下降的重要手段,本文就來(lái)介紹了mysql線上查詢前要注意資源限制的實(shí)現(xiàn),感興趣的可以了解一下
    2024-10-10
  • linux系統(tǒng)中使用openssl實(shí)現(xiàn)mysql主從復(fù)制

    linux系統(tǒng)中使用openssl實(shí)現(xiàn)mysql主從復(fù)制

    在MySQL的主從復(fù)制中,其傳輸過(guò)程是明文傳輸,并不能保證數(shù)據(jù)的安全性,今天我們就來(lái)討論下linux系統(tǒng)中使用openssl實(shí)現(xiàn)mysql主從復(fù)制,有需要的小伙伴可以參考下
    2016-11-11
  • Mysql如何通過(guò)binlog日志恢復(fù)數(shù)據(jù)詳解

    Mysql如何通過(guò)binlog日志恢復(fù)數(shù)據(jù)詳解

    binlog日志用于記錄所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的所有語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于Mysql如何通過(guò)binlog日志恢復(fù)數(shù)據(jù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • mysql中over partition by的具體使用

    mysql中over partition by的具體使用

    在數(shù)據(jù)庫(kù)中,我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行分組排序等操作,MySQL的over partition by可以幫助我們更方便地進(jìn)行這些操作,本文主要介紹了mysql中over partition by的具體使用,感興趣的可以了解一下
    2024-02-02
  • mysql千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)查詢性能優(yōu)化

    mysql千萬(wàn)級(jí)數(shù)據(jù)分頁(yè)查詢性能優(yōu)化

    本文給大家分享的是作者在使用mysql進(jìn)行千萬(wàn)級(jí)數(shù)據(jù)量分頁(yè)查詢的時(shí)候進(jìn)行性能優(yōu)化的方法,非常不錯(cuò)的一篇文章,對(duì)我們學(xué)習(xí)mysql性能優(yōu)化非常有幫助
    2017-11-11
  • Mysql事務(wù)索引知識(shí)匯總

    Mysql事務(wù)索引知識(shí)匯總

    這篇文章主要介紹了Mysql事務(wù)索引知識(shí)匯總,mysql事務(wù)是用于處理操作量大、復(fù)雜性高的數(shù)據(jù),索引能加快數(shù)據(jù)庫(kù)的查詢速度并高效獲取指定的數(shù)據(jù),下文相關(guān)詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • MySQL與sqlyog安裝教程圖文詳解

    MySQL與sqlyog安裝教程圖文詳解

    這篇文章主要介紹了MySQL與sqlyog安裝教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 使用Shell腳本進(jìn)行MySql權(quán)限修改的實(shí)現(xiàn)教程

    使用Shell腳本進(jìn)行MySql權(quán)限修改的實(shí)現(xiàn)教程

    原先數(shù)據(jù)配置文件中有bind-address=127.0.0.1,注釋掉此配置后,原數(shù)據(jù)庫(kù)中默認(rèn)帶%root的權(quán)限,現(xiàn)在需要通過(guò)腳本實(shí)現(xiàn)白名單列表中的ip添加權(quán)限允許訪問(wèn)數(shù)據(jù)庫(kù),本文給大家介紹了使用Shell腳本進(jìn)行MySql權(quán)限修改的實(shí)現(xiàn)教程,需要的朋友可以參考下
    2024-03-03
  • 一篇文章帶你掌握MySQL索引下推

    一篇文章帶你掌握MySQL索引下推

    索引條件下推,也叫索引下推,英文全稱Index Condition Pushdown,簡(jiǎn)稱ICP,索引下推是MySQL5.6新添加的特性,用于優(yōu)化數(shù)據(jù)的查詢,下面這篇文章主要給大家介紹了關(guān)于MySQL索引下推的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 基于explain性能詳細(xì)分析

    基于explain性能詳細(xì)分析

    這篇文章主要介紹了基于explain性能詳細(xì)分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論