MYSQL 表对表快速迁移-直接拷贝表空间文件.ibd进行迁移

news/2024/10/18 15:23:37/文章来源:https://www.cnblogs.com/darling331/p/18474349

数据无价,操作前,建议先备份

前提条件

  1. 表结构一致

    • 源数据库和目标数据库中的表结构必须完全相同。这包括表的列定义、索引、约束等。
  2. 表使用 InnoDB 存储引擎

    • 这种迁移方法仅适用于使用 InnoDB 存储引擎的表,因为 .ibd 文件是 InnoDB 表的表空间文件。
  3. 数据库版本兼容

    • 源数据库和目标数据库的 MySQL 或 MariaDB 版本应该兼容。理想情况下,两个数据库的版本应该相同或非常接近,以避免潜在的兼容性问题。
  4. 表未被使用

    • 在执行 FLUSH TABLES ... FOR EXPORTDISCARD TABLESPACE 操作时,确保表未被其他事务或会话使用。
  5. 文件系统权限

    • 确保你有足够的文件系统权限来复制和修改 .ibd.cfg 文件。通常,这需要 root 权限或数据库服务用户(如 mysql 用户)的权限。
  6. 数据库服务用户权限

    • 确保数据库服务用户(如 mysql 用户)对目标数据库目录具有读写权限。
  7. 关闭外键检查

    • 如果表中有外键约束,可能需要在导入表空间之前临时禁用外键检查。

注意事项

  1. 备份数据

    • 在进行任何操作之前,务必备份源数据库和目标数据库的数据,以防止数据丢失。
  2. 一致性检查

    • 在导入表空间后,检查表的数据一致性和完整性,确保数据没有损坏。
  3. 表定义文件

    • 确保在导出表空间时生成了表定义文件(.cfg 文件),并在导入时一并复制到目标数据库。
  4. 数据库日志

    • 在操作过程中,检查数据库日志文件以获取更多信息和错误提示。
  5. 禁用外键检查(如果有外键):

    • 在导入表空间之前,可以临时禁用外键检查,以避免外键约束问题。
    SET foreign_key_checks = 0;
    ALTER TABLE table_name IMPORT TABLESPACE;
    SET foreign_key_checks = 1;
    

迁移步骤

  1. 在源数据库中

    -- 在源数据库中执行 FLUSH TABLES table_name FOR EXPORT 命令。这将确保表的所有更改都已写入磁盘,并生成一个表定义文件(.cfg 文件)
    FLUSH TABLES table_name FOR EXPORT;
    
  2. 复制文件

    -- 复制表的表空间文件(.ibd 文件)和表定义文件(.cfg 文件)到目标数据库服务器
    -- 如果没有账号密码的情况下,可以借助nginx+wget进行传输文件scp /path/to/mysql/data/database_name/table_name.ibd user@target_server:/path/to/target/mysql/data/database_name/
    scp /path/to/mysql/data/database_name/table_name.cfg user@target_server:/path/to/target/mysql/data/database_name/
    
  3. 在目标数据库中

    -- 在目标数据库中创建一个与源表结构相同的表。直接使用源数据库表结构导出后,再目标数据库创建表
    CREATE TABLE table_name (...);
    -- 执行 ALTER TABLE table_name DISCARD TABLESPACE 命令。这将删除目标表的现有表空间文件。
    ALTER TABLE table_name DISCARD TABLESPACE;
    
  4. 复制文件到目标数据库目录

    -- 将源数据库中的表空间文件(.ibd 文件)和表定义文件(.cfg 文件)复制到目标数据库的表空间目录中
    cp /path/to/source/table_name.ibd /path/to/target/mysql/data/database_name/
    cp /path/to/source/table_name.cfg /path/to/target/mysql/data/database_name/-- 根据目标数据库文件的权限进行对应的权限修改
    chown -R polkitd:input /path/to/target/mysql/data/database_name/table_name.ibd
    chown mysql:mysql /path/to/target/mysql/data/database_name/table_name.ibd
    chown mysql:mysql /path/to/target/mysql/data/database_name/table_name.cfg
    
  5. 在目标数据库中导入表空间

    -- 执行 ALTER TABLE table_name IMPORT TABLESPACE 命令。这将导入表空间文件到目标表中。
    ALTER TABLE table_name IMPORT TABLESPACE;
    
  6. 检查

    • 结束后,检查源数据库表和目标表数据是否一一致 可使用查询语句count(*)或者其他比对方式
    • 删除源数据库和目标数据库的cfg文件

后记

  • docker 部署的mysql 可以使用 docker inspect 容器id 查询容器信息,找到docker的位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/816900.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九宫格自由流转拼图游戏

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

数据预处理-DataFrame切片

此Blog仅作为日常学习工作中记录使用,Blog中有不足之处欢迎指出 以kaggle中房屋预测的训练集为例,说明DataFrame切片常用操作 一、读入数据 import numpy as np import pandas as pdfile_path = ***\kaggle_house_pred_train.csv data = pd.read_csv(file_path)data.columns …

轻松上手-Navigation路由 H5

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

Audio

音频文件导入 常用格式wav mp3 aiff音频文件属性设置Force To Mono:多声道转单声道; Normalize:强制为单声道时,混合过程中被标准化 Load In Background:在后台加载时,不阻塞主线程 Ambisonic:立体混响声,非常适合360度视频和XR应用程序,如果音频文件包含立体混响声编…

RenderTexture

基础概念 RenderTexture 在Unity中,RenderTexture是一种纹理,它可以在运行时动态地生成图像数据,并且可以作为着色器的输入或者显示在游戏世界的任何材质上。简单来说,RenderTexture让你能够将场景或特定相机的渲染结果捕获到一个纹理中,然后这个纹理可以被用作其他渲染过…

九点共圆及其圆心证明(证明过程已更新)

九点共圆及其圆心证明主要思路:固定 \(P,L\),证明其它七个点均在以 \(PL\) 为直径的圆上。 条件的来源会备注在括号内。背景可能影响观感,建议打开极简模式阅读。这是一个三角形 \(\triangle ABC\),设 \(BC,AC,AB\) 边上垂足分别为 \(D,E,F\),其边上中点分别为 \(L,M,N\),…

【喜讯】全球电商大数据平台推出F类免费API接口服务!

好消息,全球电商大数据平台再次上线多个类别接口,首次推出F类免费API接口服务,为所有追求数据赋能、寻求创新突破的企业和个人,带来了前所未有的机遇。好消息,值此之际;全球电商大数据平台再次上线多个类别接口,首次推出F类免费API接口服务,为所有追求数据赋能、寻求创…

c# winform在线升级clickonce

说明:在线升级前提 1,一个可以访问在线的地址,2,发布前要在项目属性发布里配置好相关设置 一,可以在IIS上布署一个可以访问的地址 二,发布前配置

SQLSEVER 实现货币数字转中文汉字

SQLSEVER 实现数字转换成中文(货币) -- ============================================= -- Author: LearnerPing -- Create date: 2024/10/18 -- Description: Change Number to Chinese -- ============================================= Create FUNCTION GetNumberToChi…

javascript渲染OFD的库

目前使用javascript开发的OFD的渲染库主要有两个: ofd.js和liteofd,其中ofd.js开发比较早,liteofd是最近刚出现的js库。首先结论是ofd.js渲染效果没有liteofd好,因为ofd.js目前有一些效果没有支持,比如对字体没有比较好的解析和支持。 liteofd相对ofd.js效果更好,并且提供…

高等数学 6.1 定积分的元素法

在定积分的应用中,经常采用所谓的元素法。为了说明这种方法,先回顾一下曲边梯形的面积问题。 设 \(f(x)\) 在区间 \([a, b]\) 上连续且 \(f(x) \geqslant 0\) ,求以曲线 \(y = f(x)\) 为曲边、底为 \([a, b]\) 的曲边梯形的面积 \(A\) 。把这个面积 \(A\) 表示为定积分 \[A …

详解 JuiceFS 在多云架构下的数据同步与一致性

随着大模型流行,GPU 算力资源正变得日益稀缺,传统的“算力跟着存储跑”的策略需要转变为“存储跟着算力跑”。为了确保数据一致性和管理的便捷性,企业通常在特定地区的公有云上选择对象存储作为所有模型数据的集中存储点。当进行计算任务调度时,往往需要人工介入,手动进行…