前序
对于用户自主创建的表,会采用此种模式,每个表由一个独立的表空间进行管理备份(速度相当的猛)
首先介绍一下文件
.ibd就被称之为独立表空间的数据文件 .frm就是元数据文件 就是创建表后生成的
独立表空间可以通过开关控制,默认状态查询一下
show variables like '%per_table%';
环境
实例
mysql1:192.168.137.176 mysql2:192.168.137.180
mysql版本
mysql 5.7.22
数据库/表
zskdb/cas_user
实践
137.180 原始数据(旧机器)
137.176 新数据(新机器)
目的: 把就机器的数据全部迁移到新机器176上面。
192.168.137.180
1. 先导出数据表结构
[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]#
192.168.137.176
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>
成功!!