爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Mydumper和Myloader多线程备份恢复

      首页 知识中心 软件开发 文章详情页

      Mydumper和Myloader多线程备份恢复

      2023-08-09 06:39:31 阅读次数:75

      【mydumper介绍】

       mydumper是一个针对 MySQL 和 Drizzle 的高性能多线程备份和恢复工具。此工具的开发人员分别来自  MySQL、Facebook、SkySQL公司,目前已经有一些大型产品业务测试并使用了该工具。我们在恢复数据  时也可以使用myloader工具

      【mydumper特性】

       1、采用轻量级C语言写的代码

       2、相比于mysqldump,其速度快了近10倍

       3、具有事务性和非事务性表一致的快照(适用于0.2.2+)

       4、可快速进行文件压缩

       5、支持导出binlog
       6、可多线程恢复(适用于0.2.1+)

       可以用守护进程的工作方式,定时扫描和输出连续的二进制日志

      【mydumper参数】 

       注:标红的为必须掌握参数

       -h:连接的MySQL服务器

       -u:用户备份的连接用户

       -c:压缩导出的文件

       -p:用户的密码

       -P:连接端口

       -S:连接socket文件 

       -B:指定导出的数据库名,不加该参数,默认将执行的mysql实例下的所有数据库全部导出

       -T:需要备份的表,用逗号(,)分隔

       -o: 输出的目录

       -t: 要使用的并发线程数,默认为4,需要综合存储IO性能等因素确定具体值

       -V:查看版本

       -v:详细级别输出 0 = 沉默, 1 = 错误, 2 = 警告, 3 = 信息,默认是2

       -e: 默认无数据则只有表结构文件,加了-e则有表数据文件。但是表数据文件仍然为空

       -x:支持正则表达式,如 mydumper -regx '^(?!(mysql|test))'

       -i:忽略的存储引擎,用逗号(,)分隔

       -m:不导出表结构和库结构,只导表数据,甚用

       -d: 不导出表数据,只导表结构和库结构

       -long-query-quard:长查询,默认60秒

       -k:kill杀了长时间运行的查询

       -b:导出binlog

       -D:启用守护进程模式

       -I:dump快照间隔,默认60s

       -L:mysqldumper的日志输出,一般在Daemon模式下使用

       

      【mydumper安装方法】

       yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel gcc gcc-c++

       wget -c https://launchpad.net/ubuntu/+archive/primary/+files/mydumper_0.9.1.orig.tar.gz

       tar xzvf mydumper_0.9.1.orig.tar.gz

       cd mydumper-0.9.1/

       cmake .
       make 

       make install

      【mydumper效率测试】

       mysqldump 与 mydumper 的执行时间的对比

       

       [root@localhost mysql]# du -sh test

       20M     test

       可看到一共有20兆数据

       mysqldump执行的时间情况:

       [root@localhost opt]# time mysqldump -uroot -pxxx -B test > test.sql

       

       real    0m0.671s

       user    0m0.382s

       sys     0m0.033s

       

       mydumper执行的时间情况:

       [root@localhost backup]# time mydumper -u root -p wsyht -B test -o /data/backup/

       

       real    0m0.480s

       user    0m0.233s

       sys     0m0.028s


       总结:mydumper的速度是远远比mysqldump的速度快的多的

       

      【mydumer导出实战】 

       1、导出所有库

          不加 -B 会导出所有库,不加 -o 会在当前目录下以当前日期时间命名创建一个目录,如下:

          [root@localhost backup]# mydumper -u root -p wsyht      #不指定参数进行全备

          [root@localhost backup]# ls

          export-20160619-192629   #自已创建的备份目录

          一般不用全备就用-B参数指定库名,不想他自已在当前路径创建备份目录就用-o指定他备份的路径

       

       2、压缩导出   

          说明:

          -c 压缩参数

          压缩导出后,后辍名会变成.sql.gz

          [root@localhost backup]# mydumper -u root -p wsyht -B test -c -o /data/backup/

          [root@localhost backup]# ls

          metadata  test-schema-create.sql.gz  test.t1-schema.sql.gz  test.t1.sql.gz  

       

       3、不压缩备份

          导出来的文件则是.sql

          [root@localhost backup]# mydumper -u root -p wsyht -B test -o /data/backup/ 

          metadata  test-schema-create.sql  test.t1-schema.sql  test.t1.sql  

        

          注意!注意!注意!重要事情说三篇。在终端输入命令备份数据的时候,参数 跟 后面的值

          一定要以空格分隔,否则会报如下错误

          [root@localhost ~]#  mydumper -h 127.0.0.1 -uroot -p 'wsyht' -B test -o /data/backup/ 

          option parsing failed: Error parsing option -r, try --help

          上面报错就是因为-u 没有跟 root 以空格分隔,而是黏在一起写,所以报错

       

      【mydumper导出的文件介绍】

        在导出文件的时候,可以看到生成了四个文件,下面我们来逐一介绍:

        metadata:这个文件指定了你从开始备份文件到结束备份文件的时间

        test.t1-schema-create.sql: 这个文件是备份创建库的sql语句

        test.t1-schema.sql:这个文件是备份创建表的sql语句 

        test.t1.sql  这个文件是备份插入表数据的sql语句

       

       

      【myloader参数】

        注:标红的为必须掌握参数

        -d: 指定恢复备份的目录,该目录必须是mydumper生成的,myloader会判断该目录是否存在metadata文件

        -h:连接的MySQL服务器

        -u:用户备份的连接用户

        -C:导入压缩份备出来的文件

        -p:用户的密码

        -P:连接端口

        -S:连接socket文件 

        -B:指定恢复的数据库名

        -o: 表存在则会删除

        -t: 要使用的并发线程数,默认为4,需要综合存储IO性能等因素确定具体值

        -V:查看版本

        -v:详细级别输出 0 = 沉默, 1 = 错误, 2 = 警告, 3 = 信息,默认是2

        -s: 该参数为myloader新增参数,用于恢复备份目录中指定的数据库

        -e:启用恢复数据的二进制日志

        -q: 表示在工作线程导入表数据时,多少条记录做一次提交,默认为1000

       

      【myloader导入实战】

       1、恢复所有库 

          说明,不加-B指定要导的库,默认导入当初备份出来的那个库

          这里之前备份的是test库,则导进库的时候会创建一个test库

          如果是所有库,原理一样,自动创建所有库,因为备份时,库语句也备份了

       

          [root@localhost test]# mysql -uroot -pwsyht -e "show databases;"     

          +--------------------+

          | Database           |

          +--------------------+

          | information_schema |

          | mysql              |

          +--------------------+

          [root@localhost test]# myloader -u root -p wsyht  -d /data/backup/test/ 

          [root@localhost test]# mysql -uroot -pwsyht -e "show databases;"        

          +--------------------+

          | Database           |

          +--------------------+

          | information_schema |

          | mysql              |

          | test               |

          +--------------------+

       

       

      2、恢复到新库

         说明:

         无论库存在与否都可以直接导

         如果-B指定需要导入的库不存在,他也会先帮你创建,无需你再手动创建,非常方便

         [root@localhost test]# mysql -uroot -pwsyht -e "show databases;"                     

         +--------------------+

         | Database           |

         +--------------------+

         | information_schema |

         | mysql              |

         | test               |

         +--------------------+

         [root@localhost test]# myloader -u root -p wsyht -B wsyht  -d /data/backup/test/ 

         [root@localhost test]# mysql -uroot -pwsyht -e "show databases;"                

         +--------------------+

         | Database           |

         +--------------------+

         | information_schema |

         | mysql              |

         | test               |

         | wsyht              |

         +--------------------+

       

      3、恢复到原库 

         说明:

         即恢复到已创建好的库和表中,如果已存在了表,则必须加-o参数

         [root@localhost test]# mysql -uroot -pwsyht -e "show databases;"                

         +--------------------+

         | Database           |

         +--------------------+

         | information_schema |

         | mysql              |

         | test               |

         | wsyht              |

         +--------------------+

         [root@localhost test]# myloader -u root -p wsyht -B test  -d /data/backup/test/ 

         ** (myloader:20499): CRITICAL **: Error restoring test.t1 from file test.t1-                  schema.sql.gz: Table 't1' already exists

         上面说我表已经存在,则加-o参数自动删除已存在的表再导进

         [root@localhost test]# myloader -u root -p wsyht -B test -o -d /data/backup/test/ 

       

      4、恢复指定目录的库

         说明:

         即一个目录备份了多个库,我不想恢复这个目录下的所有库,只想恢复这个目录下的一个库

         则需要加-s参数指定要恢复那个目录下的哪个库   

         [root@localhost test]# ls

         metadata                              mysql.plugin-schema.sql.gz

         mysql.columns_priv-schema.sql.gz      mysql.proc-schema.sql.gz

         mysql.db-schema.sql.gz                mysql.procs_priv-schema.sql.gz

         mysql.db.sql.gz                       mysql-schema-create.sql.gz

         mysql.event-schema.sql.gz             mysql.servers-schema.sql.gz

         mysql.func-schema.sql.gz              mysql.tables_priv-schema.sql.gz

         mysql.help_category-schema.sql.gz     mysql.time_zone_leap_second-schema.sql.gz

         mysql.help_category.sql.gz            mysql.time_zone_name-schema.sql.gz

         mysql.help_keyword-schema.sql.gz      mysql.time_zone-schema.sql.gz

         mysql.help_keyword.sql.gz             mysql.time_zone_transition-schema.sql.gz

         mysql.help_relation-schema.sql.gz     mysql.time_zone_transition_type-schema.sql.gz

         mysql.help_relation.sql.gz            mysql.user-schema.sql.gz

         mysql.help_topic-schema.sql.gz        mysql.user.sql.gz

         mysql.help_topic.sql.gz               test-schema-create.sql.gz

         mysql.host-schema.sql.gz              test.t1-schema.sql.gz

         mysql.ndb_binlog_index-schema.sql.gz  test.t1.sql.gz

         可看到上面有两种不同颜色的压缩包,即存了两个库在这个目录下

         [root@localhost test]# myloader -u root -p wsyht -B auth -s mysql -d /data/backup/test/

         [root@localhost test]# mysql -uroot -pwsyht -e"show databases;"                            +--------------------+

         | Database           |

         +--------------------+

         | information_schema |

         | auth               |

         | mysql              |

         | test               |

         +--------------------+

         [root@localhost test]# mysql -uroot -pwsyht -e"use auth;show tables;"

         +---------------------------+

         | Tables_in_auth            |

         +---------------------------+

         | columns_priv              |

         | db                        |

         | event                     |

         | func                      |

         | help_category             |

         | help_keyword              |

         | help_relation             |

         | help_topic                |

         | host                      |

         | ndb_binlog_index          |

         | plugin                    |

         | proc                      |

         | procs_priv                |

         | servers                   |

         | tables_priv               |

         | time_zone                 |

         | time_zone_leap_second     |

         | time_zone_name            |

         | time_zone_transition      |

         | time_zone_transition_type |

         | user                      |

         +---------------------------+

         可看到上面已经把备份的库导进新库auth里面

         注:如果上面不加 -s 参数指定需要导入该目录的哪个库,则会两个库都导进auth库

             如果 -s 和 -B 两个参数都不加,则会默认导入之前原来导出的那个库

             则从test库导出来的库,会再导进test库,从mysql库导出来的会再导进mysql库

       

      最后再啰嗦两句,总结一下:

           库存在,导进没影响,库不存在,也不需要事先创建,因为当时备份库的时候也一起把建库  语句也备份了,更方便的和神奇是,你加-B参数随便起一个库名,导数据的时候,他也可以帮你  建好该库,然后导数据,但如果表存在的话,则需加-o参数,他会帮自已帮你删了表然后再继续  导,而不需要我们手动去删库删表再导,而且使用多线程导入速度杠杠的,是不是觉得减轻了我  们许多工作,并且提高了我们运维不少的工作效率,哈哈!!!

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/yht1990/1790852,作者:yht_1990,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:模板语言继承使用

      下一篇:查看及测试网络、配置网络地址、内核及模块管理

      相关文章

      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5225546

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号