Centos 推薦使用xtrabackup備份數據庫

mysqldump是一種邏輯備份方式,將數據轉換成sql文件,其最大的缺陷就是備份和恢復時間很長,對於一個小於10G的資料庫而言,這個速度還是可以接受的,但是如果資料庫較大,那在使用mysqldump備份就非常不合適瞭。

 

lvm是一種采用邏輯卷快照功能對數據進行備份,可以實現幾乎熱備,但是備份過程較為復雜(來回切換終端),很難用shell腳本直接實現,不過現在似乎有個工具mylvmbackup可以實現自動化備份,但是沒有嘗試過,改天我也試試。

 

Xtrabackup對MyISAM表隻能實現溫備,並且不支持增量備份,所以每次對MyISAM表備份都是全備

 

XtraBackup更多高級特性通常隻能在innodb存儲引擎上實現,而且高級特性還都依賴於mysql資料庫對innodb引擎實現瞭單獨表空間,否則沒辦法實現單表或單庫導出

 

mysql> show global variables like '%innodb_file_per_table%';

+———————–+——-+

| Variable_name         | Value |

+———————–+——-+

| innodb_file_per_table | ON    |

+———————–+——-+

1 row in set (0.00 sec)

 

那麼今天就和大傢聊聊第三款開源備份工具xtrabackup:

官方站點:https://www.percona.com

官方在線文檔:https://www.percona.com/doc/percona-xtrabackup/2.2/

最新軟件包下載地址:https://www.percona.com/downloads/XtraBackup/

 

一、簡介

Xtrabackup是由percona提供的mysql資料庫開源熱備工具。特點如下:

 

(1)備份過程快速、可靠;

 

(2)備份過程不會打斷正在執行的事務;

 

(3)能夠基於壓縮等功能節約磁盤空間和流量;

 

(4)自動實現備份檢驗;

 

(5)還原速度快;

 

二、安裝

 

XtraBackup目前最新版為2.2.9,本篇博客采用yum安裝方式

1、yum安裝

# yum -y install libaio perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL

# rpm -ivh https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/redhat/6/x86_64/percona-xtrabackup-2.3.2-1.el6.x86_64.rpm

 

2、查看Xtrabackup安裝的工具

 

# rpm -ql percona-xtrabackup |grep bin

 

/usr/bin/innobackupex

/usr/bin/xbcloud

/usr/bin/xbcloud_osenv

/usr/bin/xbcrypt

/usr/bin/xbstream

/usr/bin/xtrabackup

 

3、XtraBackup中主要包含瞭三個工具

 

xbsteam:支持流式備份

 

xtrbackup:用於熱備innodb、xtradb表中數據的工具,不能備份其它類型的表,也不能備份數據表結構

 

innobackupex:是將xtrabackup進行封裝的perl腳本,提供瞭備份MyISAM表的能力

xbcrypt:用於加密或解密備份的資料庫

 

xbcloud:用於從雲上上傳和下載全部或部分xbstream檔案

 

三、innobackupex幾個非常重要的參數

 

–apply-log

 

一般情況下,在備份完成後,數據尚且不能用於恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處理不一致狀態。“準備”的主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件也使得數據文件處於一致性狀態。

 

–redo-only

 

準備(prepare)增量備份與整理完全備份有著一些不同,尤其要註意的是:

 

(1)需要在每個備份(包括完全和各個增量備份)上,將已經提交的事務進行“重放”。“重放”之後,所有的備份數據將合並到完全備份上。

 

(2)基於所有的備份將未提交的事務進行“回滾”。

 

–copy-back

 

該選項用於執行恢復(還原)操作,其通過復制所有數據相關的文件至mysql伺服器DATADIR目錄中來執行恢復過程。innobackupex通過backup-my.cnf來獲取DATADIR目錄的相關信息。

 

四、innobackup備份語法

 

完全備份+完全恢復

 

完全備份

 

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

 

準備一個完全備份

 

# innobackupex –apply-log  /path/to/BACKUP-DIR

 

從一個完全備份中恢復數據

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

 

修改datadir目錄權限

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

 

完全備份+增量備份+完全恢復

 

完全備份:

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

 

第一次增量備份

# innobackupex –user=DBUSER –password=DBUSERPASS –incremental /backup –incremental-basedir=BASEDIR

 

第二次增量備份

# innobackupex –user=DBUSER –password=DBUSERPASS –incremental /backup –incremental-basedir=BASEDIR

 

準備:

 

執行完全備份redo

# innobackupex –apply-log –redo-only BASE-DIR

 

執行第一次增量備份redo

# innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-1

 

執行第二次增量備份redo

# innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-2

 

還原:

# innobackupex –copy-back BASE-DIR

 

解釋:

 

其中BASE-DIR指的是完全備份所在的目錄,

 

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

 

INCREMENTAL-DIR-2指的是第二次增量備份的目錄,

 

其它依次類推,即如果有多次增量備份,每一次都要執行如上操作;

 

五、以上兩種方式案列重放

 

完全備份+完全恢復

 

1、實驗前的準備工作

 

# service mysqld stop
# rm -rf /mydata/data/* 
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ --basedir=/usr/local/mysql/
# service mysqld start
# mysqladmin -uroot -p password 123456
# mysql -uroot -p123456
mysql> create database jiaowu;
mysql> use jiaowu;
mysql> set sql_log_bin = 0;
mysql> source /root/tutor.sql;    //導入tutor數據表
mysql> set sql_log_bin = 1;
mysql> select * from tutor;
+------+---------------+--------+------+
| TID  | Tname         | Gender | Age  |
+------+---------------+--------+------+
|    1 | ZhengYansheng | M      |   25 |
|    2 | LiJian        | M      |   26 |
|    3 | OuYangyu      | M      |   27 |
|    4 | LuoChenghui   | M      |   25 |
|    5 | LiuYunbo      | M      |   25 |
|    6 | FuJian        | M      |   24 |
|    7 | LiMenglu      | F      |   23 |
|    8 | BaoYintu      | M      |   28 |
|    9 | WangYana      | F      |   25 |
+------+---------------+--------+------+
9 rows in set (0.00 sec)

 

2、innobackupex對DB進行完全備份

# innobackupex –user=root –password=123456 /backup/

如果執行正確,其最後輸出的幾行信息通常如下:

innobackupex: Backup created in directory '/backup/2015-03-18_21-00-17'

innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 332

150318 21:00:23  innobackupex: Connection to database server closed

150318 21:00:23  innobackupex: completed OK!

 

3、查看備份目錄和文件

# ls /backup/

2015-03-18_21-00-17

# ls /backup/2015-03-18_21-00-17/

backup-my.cnf  jiaowu  performance_schema  xtrabackup_binlog_info  xtrabackup_info

ibdata1        mysql   test xtrabackup_checkpoints  xtrabackup_logfile

 

4、準備一個完全備份

# innobackupex –user=root –password=123456 –apply-log /backup/2015-03-18_21-00-17/

#####模擬資料庫故障#####

 

5、這裡還是采用老方法直接刪除所有的數據文件

# service mysqld stop

# rm -rf /mydata/data/*

 

6、從一個完全備份中恢復資料庫

# innobackupex –copy-back /backup/2015-03-18_21-00-17/

 

7、修改數據目錄權限

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

 

8、啟動mysqld服務

# service mysqld start

 

9、登陸mysql查看是否是否一致

# mysql -e 'use jiaowu;select * from tutor;'

+——+—————+——–+——+

| TID  | Tname         | Gender | Age  |

+——+—————+——–+——+

|    1 | ZhengYansheng | M      |   25 |

|    2 | LiJian        | M      |   26 |

|    3 | OuYangyu      | M      |   27 |

|    4 | LuoChenghui   | M      |   25 |

|    5 | LiuYunbo      | M      |   25 |

|    6 | FuJian        | M      |   24 |

|    7 | LiMenglu      | F      |   23 |

|    8 | BaoYintu      | M      |   28 |

|    9 | WangYana      | F      |   25 |

+——+—————+——–+——+

#數據已經成功恢復到資料庫當中

 

完全備份+增量備份+完全恢復

 

1、實驗前的準備工作

 

# service mysqld stop
# rm -rf /mydata/data/*     //刪除原來的備份文件
# rm -rf /backup/*
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ --basedir=/usr/local/mysql/
# service mysqld start
# mysqladmin -uroot -p password 123456
# mysql -uroot -p123456
mysql> create database jiaowu;
mysql> use jiaowu;
mysql> set sql_log_bin = 0;
mysql> source /root/tutor.sql;   //導入tutor數據表
mysql> set sql_log_bin = 1;
mysql> select * from tutor;
+------+---------------+--------+------+
| TID  | Tname         | Gender | Age  |
+------+---------------+--------+------+
|    1 | ZhengYansheng | M      |   25 |
|    2 | LiJian        | M      |   26 |
|    3 | OuYangyu      | M      |   27 |
|    4 | LuoChenghui   | M      |   25 |
|    5 | LiuYunbo      | M      |   25 |
|    6 | FuJian        | M      |   24 |
|    7 | LiMenglu      | F      |   23 |
|    8 | BaoYintu      | M      |   28 |
|    9 | WangYana      | F      |   25 |
+------+---------------+--------+------+
9 rows in set (0.00 sec)

 

 

2、innobackupex對DB進行完全備份

# innobackupex –user=root –password=123456 /backup/

如果執行正確,其最後輸出的幾行信息通常如下:

innobackupex: Backup created in directory '/backup/2015-03-18_21-14-49'

innobackupex: MySQL binlog position: filename 'mysql-bin.000003', position 332

150318 21:14:54  innobackupex: Connection to database server closed

150318 21:14:54  innobackupex: completed OK!

 

3、僅查看備份目錄

# ls /backup/

2015-03-18_21-14-49

 

4、操作資料庫並插入數據

 

# mysql jiaowu;
mysql> insert into tutor(TID) values(11);
mysql> insert into tutor(TID) values(12);
mysql> insert into tutor(TID) values(13);
mysql> select * from tutor;
+------+---------------+--------+------+
| TID  | Tname         | Gender | Age  |
+------+---------------+--------+------+
|    1 | ZhengYansheng | M      |   25 |
|    2 | LiJian        | M      |   26 |
|    3 | OuYangyu      | M      |   27 |
|    4 | LuoChenghui   | M      |   25 |
|    5 | LiuYunbo      | M      |   25 |
|    6 | FuJian        | M      |   24 |
|    7 | LiMenglu      | F      |   23 |
|    8 | BaoYintu      | M      |   28 |
|    9 | WangYana      | F      |   25 |
|   11 | NULL          | NULL   | NULL |
|   12 | NULL          | NULL   | NULL |
|   13 | NULL          | NULL   | NULL |
+------+---------------+--------+------+
12 rows in set (0.00 sec)

 

 

5、執行第一次增量備份並查看備份目錄

# innobackupex –user=root –password=123456 –incremental /backup/ –incremental-basedir=/backup/2015-03-18_21-14-49/

# ls /backup/

2015-03-18_21-14-49  2015-03-18_21-18-45

 

6、再次操作資料庫並插入多條數據

 

# mysql jiaowu;
mysql> insert into tutor(TID) values(21);
mysql> insert into tutor(TID) values(22);
mysql> insert into tutor(TID) values(23);
mysql> select * from tutor;
+------+---------------+--------+------+
| TID  | Tname         | Gender | Age  |
+------+---------------+--------+------+
|    1 | ZhengYansheng | M      |   25 |
|    2 | LiJian        | M      |   26 |
|    3 | OuYangyu      | M      |   27 |
|    4 | LuoChenghui   | M      |   25 |
|    5 | LiuYunbo      | M      |   25 |
|    6 | FuJian        | M      |   24 |
|    7 | LiMenglu      | F      |   23 |
|    8 | BaoYintu      | M      |   28 |
|    9 | WangYana      | F      |   25 |
|   11 | NULL          | NULL   | NULL |
|   12 | NULL          | NULL   | NULL |
|   13 | NULL          | NULL   | NULL |
|   21 | NULL          | NULL   | NULL |
|   22 | NULL          | NULL   | NULL |
|   23 | NULL          | NULL   | NULL |
+------+---------------+--------+------+
15 rows in set (0.00 sec)

 

 

7、執行第二次增量備份並查看備份文件

# innobackupex –user=root –password=123456 –incremental /backup/ –incremental-basedir=/backup/2015-03-18_21-18-45/

# ls /backup/

2015-03-18_21-14-49  2015-03-18_21-18-45  2015-03-18_21-22-31

解釋:

2015-03-18_21-14-49:為innobackupex的完全備份目錄

2015-03-18_21-18-45:為innobackupex的第一次增量備份目錄

2015-03-18_21-22-31:為innobackupex的第二次增量備份目錄

 

8、開始準備innobackupex

首先執行完全備份redo-only

# innobackupex –user=root –password=123456 –apply-log –redo-only /backup/2015-03-18_21-14-49/

執行第一個增量備份redo-only

# innobackupex –user=root –password=123456 –apply-log –redo-only /backup/2015-03-18_21-14-49/ –incremental-dir=/backup/2015-03-18_21-18-45/

執行第二個增量備份redo-only

# innobackupex –user=root –password=123456 –apply-log –redo-only /backup/2015-03-18_21-14-49/ –incremental-dir=/backup/2015-03-18_21-22-31/

#####模擬資料庫故障#####

 

9、這裡還是采用老方法直接刪除所有的數據文件

# service mysqld stop

# rm -rf /mydata/data/*

 

10、從完全備份中恢復資料庫

# innobackupex –user=root –password=123456 –copy-back /backup/2015-03-18_21-14-49/

 

11、修改數據目錄權限

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

 

12、啟動mysqld服務

# service mysqld start

 

13、登陸mysql查看是否是否一致

# mysql -e 'use jiaowu;select * from tutor;'

+——+—————+——–+——+

| TID  | Tname         | Gender | Age  |

+——+—————+——–+——+

|    1 | ZhengYansheng | M      |   25 |

|    2 | LiJian        | M      |   26 |

|    3 | OuYangyu      | M      |   27 |

|    4 | LuoChenghui   | M      |   25 |

|    5 | LiuYunbo      | M      |   25 |

|    6 | FuJian        | M      |   24 |

|    7 | LiMenglu      | F      |   23 |

|    8 | BaoYintu      | M      |   28 |

|    9 | WangYana      | F      |   25 |

|   11 | NULL          | NULL   | NULL |

|   12 | NULL          | NULL   | NULL |

|   13 | NULL          | NULL   | NULL |

|   21 | NULL          | NULL   | NULL |

|   22 | NULL          | NULL   | NULL |

|   23 | NULL          | NULL   | NULL |

+——+—————+——–+——+

#兩次增量添加的數據也已經成功添加到資料庫當中。恢復成功

 

六、Xtrabackup的高級功能

 

流式壓縮功能

 

Xtrabackup對備份的數據文件支持“流”功能,即可以將備份的數據通過STDOUT傳輸給tar程式進行歸檔,而不是默認的直接保存至某備份目錄中。要使用此功能,僅需要使用–stream選項即可。如:

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

 

甚至也可以使用類似如下命令將數據備份至其它伺服器:強烈推薦這種方式

# innobackupex –user=root –password=123456 –stream=tar  /backup | ssh root@192.168.1.100  'cat – > /backup/`date +%F_%H-%M-%S`.tar'

 

在執行本地備份時,還可以使用–parallel選項對多個文件進行並行復制(暫時還沒有看懂此選項)

 

此外,在執行本地備份時,還可以使用–parallel選項對多個文件進行並行復制。此選項用於指定在復制時啟動的線程數目。當然,在實際進行備份時要利用此功能的便利性,也需要啟用innodb_file_per_table選項或共享的表空間通過innodb_data_file_path選項存儲在多個ibdata文件中。對某一資料庫的多個文件的復制無法利用到此功能。其簡單使用方法如下:

# innobackupex –parallel  /path/to/backup

 

同時,innobackupex備份的數據文件也可以存儲至遠程主機,這可以使用–remote-host選項來實現:

# innobackupex –remote-host=root@www.magedu.com  /path/IN/REMOTE/HOST/to/backup

 

七、使用Xtrabackup對資料庫進行部分備份

 

Xtrabackup也可以實現部分備份,即隻備份某個或某些指定的資料庫或某資料庫中的某個或某些表。但要使用此功能,必須啟用innodb_file_per_table選項,即每張表保存為一個獨立的文件。同時,其也不支持–stream選項,即不支持將數據通過管道傳輸給其它程式進行處理。

 

此外,還原部分備份跟還原全部數據的備份也有所不同,即你不能通過簡單地將prepared的部分備份使用–copy-back選項直接復制回數據目錄,而是要通過導入表的方向來實現還原。當然,有些情況下,部分備份也可以直接通過–copy-back進行還原,但這種方式還原而來的數據多數會產生數據不一致的問題,因此,無論如何不推薦使用這種方式。

 

(1)創建部分備份

 

創建部分備份的方式有三種:

 

正則表達式(–include)

 

枚舉表文件(–tables-file)

 

列出要備份的資料庫(–databases)。

 

(a)使用–include

 

使用–include時,要求為其指定要備份的表的完整名稱,即形如databasename.tablename,如:

# innobackupex –include='^mageedu[.]tb1'  /path/to/backup

(b)使用–tables-file

 

此選項的參數需要是一個文件名,此文件中每行包含一個要備份的表的完整名稱;如:

# echo -e 'mageedu.tb1\nmageedu.tb2' > /tmp/tables.txt

# innobackupex –tables-file=/tmp/tables.txt  /path/to/backup

 

(c)使用–databases

 

此選項接受的參數為數據名,如果要指定多個資料庫,彼此間需要以空格隔開;同時,在指定某資料庫時,也可以隻指定其中的某張表。此外,此選項也可以接受一個文件為參數,文件中每一行為一個要備份的對象。如:

# innobackupex –databases="mageedu testdb"  /path/to/backup

 

(2)整理(preparing)部分備份

 

prepare部分備份的過程類似於導出表的過程,要使用–export選項進行:

# innobackupex –apply-log –export  /pat/to/partial/backup

 

此命令執行過程中,innobackupex會調用xtrabackup命令從數據字典中移除缺失的表,因此,會顯示出許多關於“表不存在”類的警告信息。同時,也會顯示出為備份文件中存在的表創建.exp文件的相關信息。

 

(3)還原部分備份

 

還原部分備份的過程跟導入表的過程相同。當然,也可以通過直接復制prepared狀態的備份直接至數據目錄中實現還原,不要此時要求數據目錄處於一致狀態。

 

案列演示:

 

對jiaowu資料庫進行備份和還原

 

1、查看資料庫和表

 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jiaowu             |
| mysql              |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> select * from jiaowu.tutor;
+------+---------------+--------+------+
| TID  | Tname         | Gender | Age  |
+------+---------------+--------+------+
|    1 | ZhengYansheng | M      |   25 |
|    2 | LiJian        | M      |   26 |
|    3 | OuYangyu      | M      |   27 |
|    4 | LuoChenghui   | M      |   25 |
|    5 | LiuYunbo      | M      |   25 |
|    6 | FuJian        | M      |   24 |
|    7 | LiMenglu      | F      |   23 |
|    8 | BaoYintu      | M      |   28 |
|    9 | WangYana      | F      |   25 |
|   11 | NULL          | NULL   | NULL |
|   12 | NULL          | NULL   | NULL |
|   13 | NULL          | NULL   | NULL |
|   21 | NULL          | NULL   | NULL |
|   22 | NULL          | NULL   | NULL |
|   23 | NULL          | NULL   | NULL |
+------+---------------+--------+------+

 

2、innobackupex進行備份

# innobackupex –user=root –password=123456 –databases='jiaowu' /opt/

 

3、準備並導入jiaowu表

# innobackupex –user=root –password=123456 –apply-log –export /opt/2015-03-18_22-46-47/

 

4、刪除jiaowu資料庫

# rm -rf /mydata/data/jiaowu

 

5、登陸資料庫查看是否還存在jiaowu資料庫

[root@localhost ~]# mysql -e 'show databases;'

+——————–+

| Database           |

+——————–+

| information_schema |

| mysql              |

| performance_schema |

| test |

+——————–+

#jiaowu資料庫不存在瞭

 

6、還原jiaowu資料庫

# cp -a /opt/2015-03-18_22-46-47/jiaowu/ /mydata/data/

 

7、修改jiaowu權限

# chown -R mysql.mysql /mydata/data/jiaowu

 

8、再次查看jiaowu資料庫是否存在

[root@localhost ~]# mysql -e 'use jiaowu;show tables;'

+——————+

| Tables_in_jiaowu |

+——————+

| tutor            |

+——————+

#jiaowu資料庫已經被還原並且表tutor還在。成功!!!

 

八、導入或導出單張表

 

默認情況下,InnoDB表不能通過直接復制表文件的方式在mysql伺服器之間進行移植,即便使用瞭innodb_file_per_table選項。而使用Xtrabackup工具可以實現此種功能,不過,此時需要“導出”表的mysql伺服器啟用瞭innodb_file_per_table選項(嚴格來說,是要“導出”的表在其創建之前,mysql伺服器就啟用瞭innodb_file_per_table選項),

並且“導入”表的伺服器同時啟用瞭innodb_file_per_table和innodb_expand_import選項。

 

(1)“導出”表

 

導出表是在備份的prepare階段進行的,因此,一旦完全備份完成,就可以在prepare過程中通過–export選項將某表導出瞭:

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

 

此命令會為每個innodb表的表空間創建一個以.exp結尾的文件,這些以.exp結尾的文件則可以用於導入至其它伺服器。

 

(2)“導入”表

 

要在mysql伺服器上導入來自於其它伺服器的某innodb表,需要先在當前伺服器上創建一個跟原表表結構一致的表,而後才能實現將表導入:

mysql> CREATE TABLE mytable (…)  ENGINE=InnoDB;

 

然後將此表的表空間刪除:

mysql> ALTER TABLE mydatabase.mytable  DISCARD TABLESPACE;

 

接下來,將來自於“導出”表的伺服器的mytable表的mytable.ibd和mytable.exp文件復制到當前伺服器的數據目錄,然後使用如下命令將其“導入”:

mysql> ALTER TABLE mydatabase.mytable  IMPORT TABLESPACE;

 

案列演示:

 

1、查看表

mysql> use jiaowu;

Database changed

mysql> show tables;

+——————+

| Tables_in_jiaowu |

+——————+

| tutor            |

+——————+

1 row in set (0.00 sec)

 

2、修改表的存儲引擎為InnoDB

mysql> alter table tutor engine=innodb;

Query OK, 15 rows affected (0.05 sec)

Records: 15  Duplicates: 0  Warnings: 0

 

3、innobackupex對其進行備份

# innobackupex –user=root –password=123456 –databases='jiaowu.tutor' /opt/

 

4、準備並導出

# innobackupex –user=root –password=123456 –apply-log –export /opt/2015-03-18_23-05-44/

 

5、刪除此表的表空間

mysql> ALTER TABLE jiaowu.tutor DISCARD TABLESPACE;

Query OK, 0 rows affected (0.01 sec)

mysql> use jiaowu;

Database changed

mysql> select * from tutor;        #數據已經不存在瞭

ERROR 1030 (HY000): Got error -1 from storage engine

 

6、接下來,將來自於“導出”表的伺服器的mytable表的mytable.ibd和mytable.exp文件復制到當前伺服器的數據目錄,然後使用如下命令將其“導入”:並修改權限

# cp /opt/2015-03-18_23-24-23/jiaowu/{tutor.exp,tutor.ibd} /mydata/data/jiaowu/
cp:是否覆蓋"/mydata/data/jiaowu/tutor.exp"? yes
# chown -R mysql.mysql /mydata/data/jiaowu/*
mysql> ALTER TABLE jiaowu.tutor IMPORT TABLESPACE;
Query OK, 0 rows affected (0.00 sec)
mysql> use jiaowu;
Database changed
mysql> select * from tutor;
+------+---------------+--------+------+
| TID  | Tname         | Gender | Age  |
+------+---------------+--------+------+
|    1 | ZhengYansheng | M      |   25 |
|    2 | LiJian        | M      |   26 |
|    3 | OuYangyu      | M      |   27 |
|    4 | LuoChenghui   | M      |   25 |
|    5 | LiuYunbo      | M      |   25 |
|    6 | FuJian        | M      |   24 |
|    7 | LiMenglu      | F      |   23 |
|    8 | BaoYintu      | M      |   28 |
|    9 | WangYana      | F      |   25 |
|   11 | NULL          | NULL   | NULL |
|   12 | NULL          | NULL   | NULL |
|   13 | NULL          | NULL   | NULL |
|   21 | NULL          | NULL   | NULL |
|   22 | NULL          | NULL   | NULL |
|   23 | NULL          | NULL   | NULL |
+------+---------------+--------+------+
15 rows in set (0.00 sec)

 

 

You May Also Like