《MySQL 系列連載之 XtraBackup 增量熱備 or 恢復實踐(3)》要點:
本文介紹了MySQL 系列連載之 XtraBackup 增量熱備 or 恢復實踐(3),希望對您有用。如果有疑問,可以聯系我們。
如果您在本文遇到任何問題或疑問請到QQ群中與我們交流.也可在下方進行評論.我將在第一時間和您進行交流,共同學習.
QQ群:201777608、526871767、1689067(加群時注明:運維派)
特別注意:
innobackupex 增量備份僅針對InnoDB這類支持事務的引擎,對于MyISAM等引擎,則仍然是全備.
增量備份需要基于全量備份
先假設我們已經有了一個全量備份(如上面的/backup/mysql/data/2017-04-04_16-56-35),我們需要在該全量備份的基礎上做第一次增量備份.
[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 指向增量備份的目錄
上面語句執行成功之后,會在–incremental執行的目錄下創建一個時間戳子目錄(本例中為:/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 //增量備份目錄
在備份目錄下,有一個文件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.
那么,我們是否可以在增量備份的基礎上再做增量備份呢?
答案是肯定的,只要把–incremental-basedir執行上一次增量備份的目錄即可,如下所示:
[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開始的
增量備份的恢復要比全量備份復雜很多,增量備份與全量備份有著一些不同,尤其要注意的是:
1)需要在每個備份(包括完全和各個增量備份)上,將已經提交的事務進行“重放”.“重放”之后,所有的備份數據將合并到完全備份上.
2)基于所有的備份將未提交的事務進行“回滾”.于是,操作就變成了:不能回滾,因為有可能第一次備份時候沒提交,在增量中已經成功提交
第一步是在所有備份目錄下重做已提交的日志(注意備份目錄路徑要跟全路徑)
其中:
一定要全路徑
BASE-DIR 是指全量備份的目錄
INCREMENTAL-DIR-1 是指第一次增量備份的目錄
INCREMENTAL-DIR-2 是指第二次增量備份的目錄,以此類推.
這里要注意的是:
1)最后一步的增量備份并沒有–redo-only選項!回滾進行崩潰恢復過程
2)可以使用–use_memory提高性能.
3)以上語句執行成功之后,最終數據在BASE-DIR(即全量目錄)下,其實增量備份就是把增量目錄下的數據,整合到全變量目錄下,然后在進行,全數據量的還原.
第一步完成之后,我們開始下面關鍵的第二步,即拷貝文件,進行全部還原!注意:必須先停止mysql數據庫,然后清空數據庫目錄(這里是指/data/mysql/data)下的文件.
4)innobackupex –copy-back BASE-DIR
同樣地,拷貝結束之后,記得檢查下數據目錄(這里指/data/mysql/data)的權限是否正確(修改成mysql:mysql),然后再重啟mysql.
接下來進行案例說明:
假設我們已經有了一個全量備份2017-04-04_16-56-35 刪除在上面測試創建的兩個增量備份
[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
假設在全量備份后,mysql數據庫中又有新數據寫入
#進入數據庫
[root@master data]# mysql#創建一個叫做 ceshi 的數據庫
mysql> create database ceshi;
Query OK, 1 row affected (0.00 sec)#切換到 ceshi 庫下
mysql> use ceshi
Database changed#創建一個叫做 test1 的表
mysql> create table test1(
-> id int3,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.26 sec)#往test1表中插入數據
mysql> insert into test1 values(1,”chenbaojia”);
Query OK, 1 row affected (0.05 sec)#查看 test1 表中的內容
mysql> select * from test1;
+——+————+
| id | name |
+——+————+
| 1 | chenbaojia |
+——+————+
1 row in set (0.00 sec)#查看當前所有數據庫
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| ceshi |
| mysql |
| performance_schema |
| test |
+——————–+
5 rows in set (0.00 sec)
然后進行一次增量備份:
[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數據庫中寫入新數據
[root@master data]# mysql
mysql> use ceshi;
Database changedmysql> 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)
接著在增量的基礎上再進行一次增量備份
–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 //全量備份目錄
現在刪除數據庫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)
接下來就開始進行數據恢復操作:
先恢復應用日志(注意最后一個不需要加–redo-only參數)
[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/
到此,恢復數據工作還沒有結束!還有最重要的一個環節,就是把增量目錄下的數據整合到全量備份目錄下,然后再進行一次全量還原.
停止mysql數據庫,并清空數據目錄
[root@master ~]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS!
[root@master ~]# rm -fr /application/mysql/data/*
最后拷貝文件,并驗證數據目錄的權限
[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)
另外注意: 上面在做備份的時候,將備份目錄和增量目錄都放在了同一個目錄路徑下,其實推薦放在不同的路徑下,方便管理!比如:
/backup/mysql/data/full 存放全量備份目錄
/backup/mysql/data/daily1 存放第一次增量備份目錄
/backup/mysql/data/daily2 存放第二次增量目錄
以此類推
在恢復的時候,注意命令中的路徑要跟對!
xtrabackup命令只備份數據文件,并不備份數據表結構(.frm),所以使用xtrabackup恢復的時候必須有對應表結構文件(.frm).用innobackupex命令,此命令相當于冷備份,復制數據目錄的索引,數據,結構文件,但會有短暫的鎖表(時間依賴于MyISAM大小).
innobackupex 常用參數說明 –defaults-file 同xtrabackup的–defaults-file參數
–apply-log 對xtrabackup的–prepare參數的封裝
–copy-back 做數據恢復時將備份數據文件拷貝到MySQL服務器的datadir ;
–remote-host=HOSTNAME 通過ssh將備份數據存儲到進程服務器上;
–stream=[tar] 備 份文件輸出格式, tar時使用tar4ibd , 該文件可在XtarBackup binary文件中獲得.如果備份時有指定–stream=tar, 則tar4ibd文件所處目錄一定要在$PATH中(因為使用的是tar4ibd去壓縮, 在XtraBackup的binary包中可獲得該文件). 在 使用參數stream=tar備份的時候,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候并發寫入較大的話 xtrabackup_logfile可能會很大(5G+),很可能會撐滿你的/tmp目錄,可以通過參數–tmpdir指定目錄來解決這個問題.
–tmpdir=DIRECTORY 當有指定–remote-host or –stream時, 事務日志臨時存儲的目錄, 默認采用MySQL配置文件中所指定的臨時目錄tmpdir
–redo-only –apply-log組, 強制備份日志時只redo ,跳過rollback.這在做增量備份時非常必要.
–use-memory=# 該參數在prepare的時候使用,控制prepare時innodb實例使用的內存量
–throttle=IOS 同xtrabackup的–throttle參數
–sleep=是給ibbackup使用的,指定每備份1M數據,過程停止拷貝多少毫秒,也是為了在備份時盡量減小對正常業務的影響,具體可以查看ibbackup的手冊 ;
–compress[=LEVEL] 對備份數據迚行壓縮,僅支持ibbackup,xtrabackup還沒有實現;
–include=REGEXP 對 xtrabackup參數–tables的封裝,也支持ibbackup.備份包含的庫表,例如:–include=”test.”,意思是要備份 test庫中所有的表.如果需要全備份,則省略這個參數;如果需要備份test庫下的2個表:test1和test2,則寫 成:–include=”test.test1|test.test2″.也可以使用通配符,如:–include=”test.test”.
–databases=LIST 列出需要備份的databases,如果沒有指定該參數,所有包含MyISAM和InnoDB表的database都會被備份;
–uncompress 解壓備份的數據文件,支持ibbackup,xtrabackup還沒有實現該功能;
–slave-info, 備 份從庫, 加上–slave-info備份目錄下會多生成一個xtrabackup_slave_info 文件, 這里會保存主日志文件以及偏移, 文件內容類似于:CHANGE MASTER TO MASTER_LOG_FILE=”, MASTER_LOG_POS=0
–socket=SOCKET 指定mysql.sock所在位置,以便備份進程登錄mysql.
更多參數見:http://www.percona.com/doc/percona-xtrabackup/2.1/innobackupex/innobackupex_option_reference.html
innobackupex全量、增量備份腳本
可以根據自己線上數據庫情況,編寫全量和增量備份腳本,然后結合crontab設置計劃執行.
比如:每周日的1:00進行全量備份,每周1-6的1:00進行增量備份.
還可以在腳本里編寫郵件通知信息(可以用mail或sendemail)
1、可能報錯1
解決方案:
.pm實際上是Perl的包,只需安裝perl-Time-HiRes即可:
[root@test-huanqiu percona-xtrabackup-2.1.9]# yum install -y perl-Time-HiRes
2、可能報錯2
報錯原因:系統沒有按安裝DBI組件.
DBI(Database Interface)是perl連接數據庫的接口.其是perl連接數據庫的最優秀方法,他支持包括Orcal,Sybase,mysql,db2等絕大多數的數據庫.
解決辦法:
安裝DBI組件(Can’t locate DBI.pm in @INC-mysql接口)
或者單獨裝DBI、Data-ShowTable、DBD-mysql 三個組件
[root@test-huanqiu percona-xtrabackup-2.1.9]# yum -y install perl-DBD-MySQL
接著使用innobackupex命令測試是否正常[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、可能報錯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 //發現本機已經安裝了[root@test-huanqiu ~]# rpm -qa|grep perl-DBD-MySQL
perl-DBD-MySQL-4.013-3.el6.x86_64
發現本機已經安裝了最新版的perl-DBD-MYSQL了,但是仍然報出上面的錯誤!! 莫慌~~繼續下面的操作進行問題的解決查看mysql.so依賴的lib庫
[root@test-huanqiu ~]# ldd /usr/lib64/perl5/auto/DBD/mysql/mysql.so
linux-vdso.so.1 => (0x00007ffd291fc000)
libmysqlclient.so.16 => not found //這一項為通過檢查,缺失libmysqlclient.so.16庫導致
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)
以上結果說明缺少libmysqlclient.so.16這個二進制包,找個官方原版的mysql的libmysqlclient.so.16替換了即可![root@test-huanqiu~]# find / -name libmysqlclient.so.16 //查看本機并沒有libmysqlclient.so.16庫文件
查看mysql/lib下的libmysqlclinet.so庫文件[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庫文件拷貝到/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庫,發現已經都通過了[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、可能報錯4
有可能是percona-xtrabackup編譯安裝后,在編譯目錄的src下存在xtrabackup_innodb55,只需要其更名為xtrabackup_55,然后拷貝到上面的/home/mysql/admin/bin/percona-xtrabackup-2.1.9/下即可!
第一篇 MySQL 系列連載之 XtraBackup 備份原理(1)
第二篇 MySQL 系列連載之 XtraBackup全量熱備 or 恢復實踐(2)
第三篇 MySQL 系列連載之 XtraBackup 增量熱備 or 恢復實踐(3)
感謝您閱讀.