對於用戶自主建立的表,會採用此種模式,每一個表由一個獨立的表空間進行管理備份(速度至關的猛)mysql
首先介紹一下文件sql
.ibd就被稱之爲獨立表空間的數據文件 .frm就是元數據文件 就是建立表後生成的
獨立表空間能夠經過開關控制,默認狀態查詢一下數據庫
show variables like '%per_table%';
實例bash
mysql1:192.168.137.176 mysql2:192.168.137.180
mysql版本spa
mysql 5.7.22
數據庫/表3d
zskdb/cas_user
137.180 原始數據(舊機器)blog
137.176 新數據(新機器)ci
目的: 把就機器的數據所有遷移到新機器176上面。table
1. 先導出數據表結構class
[root@localhost cheng]# mysqldump -u root -p123456 --add-locks -q -d zskdb > /home/cheng/cas_user.sql
2.備份cas_user.idb文件到相關目錄
cp /data/mysql/zskdb/cas_user.ibd ./
3.把備份文件傳輸到137.176上面
[root@localhost cheng]# scp cas_user.* root@192.168.137.176:/home/cheng root@192.168.137.176's password: cas_user.ibd 100% 11MB 22.5MB/s 00:00 cas_user.sql 100% 3141 1.4MB/s 00:00 [root@localhost cheng]#
1.驗證
保證文件在傳輸過程當中沒有收到破壞。
2.建立數據庫
CREATE DATABASE `zskdb` CHARACTER SET utf8 COLLATE utf8_general_ci;
3.導入表結構
source /home/cheng/cas_user.sql mysql> source /home/cheng/cas_user.sql Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
表中是沒有數據的,驗證一下
mysql> show tables; +-----------------+ | Tables_in_zskdb | +-----------------+ | cas_user | +-----------------+ 1 row in set (0.00 sec) mysql> mysql> select * from cas_user; Empty set (0.01 sec)
4.刪除表空間
mysql> alter table zskdb.cas_user discard tablespace; Query OK, 0 rows affected (0.02 sec)
5.把剛纔備份的idb文件丟上來(扔到當前數據庫表目錄文件夾), 受權用戶/組
cp cas_user.ibd /data/mysql/zskdb/ ; chown -R mysql:mysql /data/mysql/zskdb/
6.從新賦予表空間
alter table zskdb.cas_user import tablespace;
7.如今數據已經所有扔進去了, 驗證一下
mysql> select count(1) from zskdb.cas_user; +----------+ | count(1) | +----------+ | 71123345 | +----------+ 1 row in set (0.04 sec) mysql>
成功!!