首页 > 数据库 >MYSQL 表对表快速迁移-直接拷贝表空间文件.ibd进行迁移

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

时间:2024-10-18 15:10:17浏览次数:1  
标签:文件 name 表对表 数据库 ibd mysql table 迁移 path

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

前提条件

  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的位置

标签:文件,name,表对表,数据库,ibd,mysql,table,迁移,path
From: https://www.cnblogs.com/darling331/p/18474349

相关文章

  • ef core migrations 创建新的迁移程序
    EFCoreMigrations创建一个WebAPI.Migrationsdotnetnewwebapi-nWebAPI.MigrationsProgram.csusingSystem.Reflection;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.EntityFrameworkCore;usingMicrosoft.Extensions.Configuration;usingDataA......
  • 用迁移学习促进竞争影响最大化中的强化学习
    【文献阅读】【2018IEEE/WIC/ACM(WI)】BoostingReinforcementLearninginCompetitiveInfluenceMaximizationwithTransferLearning目录【文献阅读】【2018IEEE/WIC/ACM(WI)】BoostingReinforcementLearninginCompetitiveInfluenceMaximizationwith......
  • 【DBA Part03】国产Linux上Oracle RAC安装-升级-ADG-迁移
    本阶段内容如下:01.国产统信UOS-Oracle19c安装配置02.国产龙蜥AnolisOS-Oracle19cRAC集群安装配置03.Linux-Oracle11gR2数据库升级到Oracle19C04.Linux-Oracle11gR2RAC数据库升级到Oracle19cRAC05.Linux-Oracle19cADG容灾配置(1+1+1级联)06.OracleXTTS跨平台数据库迁移0......
  • 【DBA Part01】国产Linux上安装Oracle进行数据迁移
    内容如下:1.1.生产环境RHEL/OELLinux8+Oracle11gR2安装配置1.2.国产麒麟操作系统+Oracle11gR2安装配置1.3.国产麒麟操作系统+Oracle11gR2RAC集群安装配置1.4.Oracle11gR2迁移到国产麒麟操作系统(单机/RAC)本阶段课程项目需求说明:某单位原有两套核心业务fgeduwx:itpux-com,运......
  • mysql 数据存储路径迁移
    目录mysql数据存储路径迁移迁移事项mysql数据存储路径迁移*重要在开始之前,我们用mysqldump对所有数据库做下备份,防止数据损坏导致数据丢失迁移事项1.mysql配置文件备份#停止数据库systemctlstopmysqldcp/etc/my.cnf/etc/my.cnf.bak#然后修改数据存储路径为你要调......
  • 自然语言处理之语音识别:Convolutional Neural Networks(CNN)与迁移学习_
    自然语言处理之语音识别:ConvolutionalNeuralNetworks(CNN)与迁移学习自然语言处理与语音识别基础自然语言处理概览自然语言处理(NLP)是人工智能领域的一个重要分支,它关注如何使计算机能够理解、解释和生成人类语言。NLP技术广泛应用于文本分类、情感分析、机器翻译、问......
  • 知识迁移和联邦学习区别
    目录知识迁移和联邦学习区别一、定义二、应用场景三、运作机制四、总结知识迁移和联邦学习区别知识迁移和联邦学习是两个不同领域的概念,它们在定义、应用场景和运作机制上都存在显著的差异。以下是对这两个概念的详细比较:一、定义知识迁移:定义:知识迁移是一种......
  • 修改Docker镜像和容器的默认存储目录(迁移原有数据)
    docker根目录占用的磁盘空间太大,将其迁移到新的磁盘上,后续的镜像和容器存储空间将在新的磁盘上1、查看docker现有的存储目录dockerinfo在打印的信息中查看DockerRootDir,即为当前的根目录,默认是/var/lib/docker,如下图:2、查看docker的service位置systemctlstatusdocker.s......
  • Docker 迁移数据目录
    Centos7环境,采用yum安装的,默认数据目录在/var/lib/docker中1.关闭docker服务systemctlstopdocker2.备份和迁移#迁移cp-r/var/lib/docker/data/docker#备份mv/var/lib/docker/var/lib/docker.bak3.使用新的数据目录(二选一)3.1软连接方式ln-s/data......
  • 云音乐贵州机房迁移总体方案回顾
    2024年网易云音乐宕机几个小时 一、背景2023年确定要将云音乐整体服务搬迁至贵州机房,项目需要在各种限制条件下,保障2000+应用、100w+QPS的服务稳定迁移,是云音乐历史上规模最大、人员最多、难度最高的技术项目。在此过程中,解决了大量历史技术债务,同时化解了大量新增系统性风险......