美文网首页
备份数据- 物理备份与数据迁移

备份数据- 物理备份与数据迁移

作者: 墨鬁 | 来源:发表于2023-06-28 20:11 被阅读0次

    一、InnoDB 引擎的表 备份导出 数据库文件,以及表结构
    在待迁移/备份的 数据库中 执行: show variables like 'datadir';
    确定数据库文件存放的目录。


    image.png

    cd 进入目录下面 数据库名称是文件夹名称
    里面有 .frm和 .ibd文件
    frm 是表结构 , .ibd 是数据
    把数据库下的所有 以上文件 拷贝复制到 目标服务器下面
    找到目标服务器数据库存放目录。

    导出数据库表结构:
    -d 参数 标示只导出结构,不导出数据
    mysqldump -uroot -h127.0.0.1 -proot -P3306 -d dbname tablename>d:/dbstaust.sql

    二、目标服务器、待迁入、待恢复数据的 服务器上的Mysql上,创建数据库,并恢复表结构。
    在目标服务器上 创建新数据库 ,用于存放恢复的数据 ,假设为数据库A。
    CREATE DATABASE A ;
    USE A; 选择数据库、
    SOURCE 表结构.sql # 创建表结构
    因为不清楚表结构 ,如果直接替换了 表名.frm 文件会导致错误, 所以新建一个表结构一致的表,
    执行 表结构.sql 之后, Mysql 数据库目录下会生成 表名对应的 .frm和 .ibd文件,但是数据是空的

    二、把拷贝出来的 .idb 文件进行数据恢复到 新的数据库里面

    1. 执行以下语句,删除表本身的 .ibd文件 , 这个命令是 删除 InnoDB 结构的 表空间 用的 ,所以不适用于 MyISAM 类型的表
      ALTER TABLE t_hospital_order DISCARD TABLESPACE;
    2. 拷贝原始库里面的 .ibd文件到 数据库目录下面 ,执行下面的命令进行恢复
      ALTER TABLE t_hospital_order IMPORT TABLESPACE;

    发现在 .ibd 文件比较大的时候 1.64G 左右 了 执行 IMPORT TABLESPACE 命令会报错: ERROR 2013 (HY000): Lost connection to MySQL server during query
    导致后续整个数据库无法操作: No connection. Trying to reconnect...
    ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 102

    image.png

    三、如果是 MySAM 引擎的表
    直接吧 先关闭数据库,然后拷贝 .frm、.MYD、.MYI 三个文件 到目标数据库的原文件目录下,启动数据库,数据就自动导入恢复了

    四、 总结
    这种方式备份和迁移数据库,还是非常麻烦的, 比较繁琐, 所以有条件,还是直接 通过 mysqldump 命令全量导出sql 语句,然后在 执行 sourc 命令进行回复。

    相关文章

      网友评论

          本文标题:备份数据- 物理备份与数据迁移

          本文链接:https://www.haomeiwen.com/subject/qtzoydtx.html