zoukankan      html  css  js  c++  java
  • mysql迁移:ibd表空间迁移库表

    问题描述:将一个库中的表迁移到另一个数据库或实例下,利用ibd文件物理迁移,可适用情况为数据库起不来,强制迁移数据文件恢复

    将数据库中的zabbix数据迁移到另一个库中

    frm:存储表的列信息

    ibd:表的数据行和索引

    myd 表数据文件

    myi 表索引文件

    1.备份出来表结构,如果有历史库的情况可备份

    mysqldump -uroot -p -S /data/3307/mysql.sock -B  zabbix --no-data > /data/zabbix_20210128.sql

    2.传到测试库上进行恢复

    mysql> source /data/zabbix_20210128.sql
    
    ERROR 1813 (HY000): Tablespace '`zabbix`.`Student`' exists.
    ERROR 1813 (HY000): Tablespace '`zabbix`.`Teacher`' exists.
    ERROR 1813 (HY000): Tablespace '`zabbix`.`course`' exists.
    ...

    错误原因:

    应该在把表结构回复完成后,再把源库的,ibd文件传过来,要不然直接恢复有冲突

    3.表结构恢复完成

    mysql> show tables;
    +------------------+
    | Tables_in_zabbix |
    +------------------+
    | Student          |
    | Teacher          |
    | city             |
    | course           |
    | department       |
    | stu              |
    | zabbix_table     |
    +------------------+
    7 rows in set (0.00 sec)

    4.删除恢复库的表空间

    mysql> alter table Student discard tablespace;
    table discard tablespace;Query OK, 0 rows affected (0.00 sec)
    
    mysql> alter table Teacher discard tablespace;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> alter table city discard tablespace;
    ERROR 1031 (HY000): Table storage engine for 'city' doesn't have this option
    mysql> alter table course discard tablespace;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> alter table department discard tablespace;
    ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails ()
    mysql> alter table stu discard tablespace;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> alter table zabbix_table discard tablespace;
    Query OK, 0 rows affected (0.00 sec)

    外键冲突

    set foreign_key_checks=0 跳过外键检查。

    5.重新删除表空间

     

    mysql> alter table Student discard tablespace;
    table discard tablespace;Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> alter table Teacher discard tablespace;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> alter table city discard tablespace;
    ERROR 1031 (HY000): Table storage engine for 'city' doesn't have this option
    mysql> alter table course discard tablespace;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> alter table department discard tablespace;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> alter table stu discard tablespace;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> alter table zabbix_table discard tablespace;
    Query OK, 0 rows affected, 1 warning (0.01 sec)

     

    有一个存储引擎为MyIsam的表不支持这样恢复

    6.导入表空间

     

    mysql> alter table Student import tablespace;
    mport tablespace;Query OK, 0 rows affected, 1 warning (0.01 sec)
    
    mysql> alter table Teacher import tablespace;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> alter table city import tablespace;
    ERROR 1031 (HY000): Table storage engine for 'city' doesn't have this option
    mysql> alter table course import tablespace;
    Query OK, 0 rows affected, 1 warning (0.02 sec)
    
    mysql> alter table department import tablespace;
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    
    mysql> alter table stu import tablespace;
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    
    mysql> alter table zabbix_table import tablespace;
    Query OK, 0 rows affected, 1 warning (0.01 sec)

     

    7.验证导入数据情况

    默认存储引擎是Innodb的数据都没有问题,但是之前更改成MyIsam的导入不成功

    8.恢复MyIsam存储引擎的表

     

    MyIsam的存储方式:

     

    Innodb的存储方式:

    将源库的city表文件传输到恢复库指定位置

     

    [mysql@mysql-test /data/3307/data/zabbix ]$ cp city.frm city.MYD city.MYI /data/3308/data/zabbix/

     

    9.查询验证数据库数据

     

     

     

     

    MyIsam存储引擎的表可以直接物理迁移

     

     

     

     

     

     

  • 相关阅读:
    TCP/IP 基础知识
    30 岁的码农人生 ——人生至暗时,你依然能窥见光明
    巨经典论文!推荐系统经典模型Wide & Deep
    带你领略拼多多2020校招笔试题,这样的难度你可以搞定吗?
    做业务、做技术和打杂,你的职场现状是哪种?
    内卷预警,本科生真的很不适合算法岗位吗?
    codeforces 1424J,为了过这题,我把祖传的C++都用上了!
    有了Git这个操作,我再也不怕代码混乱了!
    学会了这一招,距离Git大神不远了!
    好端端的数据结构,为什么叫它SB树呢?
  • 原文地址:https://www.cnblogs.com/houzhiheng/p/14339784.html
Copyright © 2011-2022 走看看