zoukankan      html  css  js  c++  java
  • 体验一下5分钟快速迁移mysql近亿数据量大表的速度!!!

    案例场景:

      需求将 源库 A服务器mysql实例下日志表t_service_log 迁移到 目标库  B 服务器 mysql实例下

      t_server_log

      

       数据量:

      

     详细操作步骤:

      1、在服务器B 目标库下 创建表结构 并执行 ALTER TABLE t_service_log DISCARD TABLESPACE;

      此时表 t_service_log  只剩下 frm 文件
      

       2. 源库,开启 2 个会话

        a)  session1:执行 FLUSH TABLES t_service_log FOR EXPORT ,该命令会对 t_service_log  加锁,将 t_service_log  的脏数据从 buffer
          pool 同步到表文件,同时新生成 1 个文件 t_service_log .cfg ,该文件存储了表的数据字典信息
        b)  session2:保持 session1 打开状态,此时将 t_service_log.cfg 和 t_service_log.ibd 远程传输到目标库的数据目录,
          如果目标库是主从结构,需要分别传输到主从两个实例,传输完毕后修改属主为 mysql:mysql
          内网传输可采用 nc 隧道模式 ,30G 传输完成大约在3分钟左右完成
          

          c)  源库,session1 执行 unlock tables ,解锁表 t_service_log ,此时 t_service_log 恢复正常读写

        d) 目标库,执行 ALTER TABLE t_service_log IMPORT TABLESPACE ,如果是主从结构,只需要在主库执行即可
          

        e)  此时目标库 t_service_log  已可用,迁移完成

                          

     总结:

        此次利用 mysql 可传输复制表空间方案,复制大表 t_service_log 到目录库 整个过程耗时在 5分钟左右  ,主要耗时在 传输 ibd 文件
       耗时3分钟左右与 目标库 "ALTER TABLE t_service_log IMPORT TABLESPACE " 耗时 2分钟左右;对比dump+source sql 方案在时间成本上有大利
       
        缺点:在源库上需要锁表 传输ibd文件的时间;所以对于业务低峰期或日志表可考虑使用,值适用innodb存储引擎,切源库与目标库版本及表结构一样
     
  • 相关阅读:
    C#对HTTP数据还原
    Nancy.Host的Web应用
    Deep Learning
    业务规则引擎扩展模块
    LB 负载均衡的层次结构(转)
    主要的核心思想是取cookie然后发查询请求,不需要浏览器做代理(转)
    关于java mail 发邮件的问题总结(转)
    使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单(转)
    利用Javamail接收QQ邮箱和Gmail邮箱(转)
    android ListView隐藏FooterView(headerView)
  • 原文地址:https://www.cnblogs.com/liangshaoye/p/14118757.html
Copyright © 2011-2022 走看看