mysql tablespace(独立表空间)备份大数据

2019-03-19 17:04:26  阅读 84 次 评论 1 条

前序

对于用户自主创建的表,会采用此种模式,每个表由一个独立的表空间进行管理备份(速度相当的猛)

首先介绍一下文件

    .ibd就被称之为独立表空间的数据文件

    .frm就是元数据文件  就是创建表后生成的

独立表空间可以通过开关控制,默认状态查询一下

    show variables like '%per_table%';

image.png


环境

实例

    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

1198387-20190319163418279-2032293887.png

2.备份cas_user.idb文件到相关目录

    cp /data/mysql/zskdb/cas_user.ibd ./

image.png

3.把备份文件传输到137.176上面

    [root@localhost cheng]#  scp cas_user.* root@192.168.137.176:/home/cheng


192.168.137.176

1.验证

111.png22.png

保证文件在传输过程中没有收到破坏。

2.创建数据库

    CREATE DATABASE `zskdb` CHARACTER SET utf8 COLLATE utf8_general_ci;

33.png

3.导入表结构

    source /home/cheng/cas_user.sql

表中是没有数据的,验证一下

    mysql> show tables;

4.删除表空间

    mysql> alter table zskdb.cas_user discard tablespace;

44.png

5.把刚才备份的idb文件丢上来(扔到当前数据库表目录文件夹), 授权用户/组

    cp cas_user.ibd /data/mysql/zskdb/ chown -R mysql:mysql /data/mysql/zskdb/

55.png

6.重新赋予表空间

    alter table zskdb.cas_user import tablespace;

66.png

7.现在数据已经全部扔进去了, 验证一下

    mysql> select count(1) from zskdb.cas_user;

 

成功!!


本文地址:http://blog.ailinux.net/post/93.html
版权声明:本文为原创文章,版权归 深圳-夏天 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

评论列表

  1. admin
    admin  @回复

    方法,虽然可以迁移Innodb,但是出问题之后可能会引其Innodb的页损坏,所以最安全的还是直接用mysqldump、xtrabackup等进行迁移