mysql中mydumper 和 mysqldump 对比使用
如果只是备份几张表或单个库, 相比 innobackup 而言, mysqldump 和 mydumper 更为方便, 不过 mydumper 增加了相对较多的特性, 比如多线程备份, 正则匹配备份, 分组和自检等功能. 另外 mydumper 和 mysqldump 本质上是一样的导出逻辑数据, 不支持在线热备 innodb. 当然我们也可以使用 innobackup 备份部分表数据, 但是它和 mydumper 和 mysqldump 不是一类备份方式, 所以下文只测试 mydumper 和 mysqldump 之间的使用.
mydumper 导出
使用 mydumper 工具以 8 个线程导出 test(9.4G) 的数据, 并压缩, 如下所示:
mydumper -B test --regex 'test.*' -c -e -G -E -R --use-savepoints -h 10.0.21.5 -u root -P 3301 -p xxxxxx -t 8 -o /data/mysql_bak/
在目录 /data/mysql_bak 里, 库中的每个表都保存为表定义和数据两个文件.
整体执行时间如下, 一共耗时 123s
# cat metadata Started dump at: 2017-05-19 10:48:00 SHOW MASTER STATUS: Log: mysql-bin.000406 Pos: 2165426 GTID:(null) SHOW SLAVE STATUS: Host: 10.144.127.4 Log: mysql-bin.000419 Pos: 506000361 GTID:(null) Finished dump at: 2017-05-19 10:50:03
mysqldump 导出
使用默认的 mysqldump 工具导出该库并压缩, 如下所示:
# time mysqldump -B test -E -R -h 10.0.21.5 -u root -P 3301 -p | gzip >/data/test.sql.gz Enter password: real 3m19.805s user 4m47.334s sys 0m10.395s
real 一行显示 mysqldump 整个运行的时间为 199.8s
总结
整体上看, 由于数据不多, mysqldump 和 mydumper 时间相差并不大, 大多的时间都消耗在数据传输层面, 如果库足够大的话, mydumper 的优势就能体现出来. 另外低版本的 mydumper 由于高版本 MySQL 语法的变更, 会存在导出错误的问题, 比如出现下面错误:
** (mydumper:18758): CRITICAL **: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)
处理这种问题可以使用高版本的 mydumper , 如果高版本还有这个问题可以参考 github 官方代码做相应代码修改.
相关推荐
-
使用mydumper多线程备份MySQL数据库
mysqldump:其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞.但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑.这样,mydumper能更好的完成备份任务.Mydumper主要特性:是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具,开发人员主要来自MySQL,Facebook,SkySQL公司. 复制代码 代码如下: 1:轻量级C语言写的 2:执行速度比mysqldump快10倍
-
mysql mysqldump数据备份和增量备份
本篇文章主要讲如何使用shell实现mysql全量,增量备份.增量备份在周一-周六凌晨3点,会复制mysql-bin.00000*到指定目录:而全量备份则使用mysqldump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000*.然后对mysql的备份操作会保留在bak.log文件中.如下图:开始:2013年05月02日 15:10:57 结束:2013年05月02日 15:12:16 20130502.sql.tgz succ是由DBFullyBak.sh产生
-
mysqldump备份还原和mysqldump导入导出语句大全详解
MYSQLdump参数详解 mysqldump备份: 复制代码 代码如下: mysqldump -u用户名 -p密码 -h主机 数据库 a -w "sql条件" –lock-all-tables > 路径 mysqldump还原: 复制代码 代码如下: mysqldump -u用户名 -p密码 -h主机 数据库 < 路径 mysqldump按条件导出: 复制代码 代码如下: mysqldump -u用户名 -p密码 -h主机 数据库 a –where "条件语句&
-
用mysqldump备份和恢复指定表的方法
复制代码 代码如下: mysqldump -u user -p db tab1 tab2 > db.sql 恢复 复制代码 代码如下: mysql -u user -p db < db.sql 参考: 1.拷备文件 : (保证数据库没有写操作(可以给表上锁定))直接拷贝文件不能移植到其它机器上,除非你正在拷贝的表使用MyISAM存储格式 2.mysqldump : mysqldump生成能够移植到其它机器的文本文件 例: 备份整个数据库 -->
-
mysql mysqldump只导出表结构或只导出数据的实现方法
mysql mysqldump 只导出表结构 不导出数据 复制代码 代码如下: mysqldump --opt -d 数据库名 -u root -p > xxx.sql 备份数据库 复制代码 代码如下: #mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop-table -uroot -p >xxx.sql 1.导出结构不导出数据 复制代码 代码如下: mysq
-
MySQL数据库使用mysqldump导出数据详解
mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可以用来实现轻量级的快速迁移或恢复数据库.是mysql数据库实现逻辑备份的一种方式. 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有
-
Mysql导入导出工具Mysqldump和Source命令用法详解
在PHP网站开发中,时常遇到Mysql数据库备份或数据库迁移工作,这时Mysql怎么导入导出数据库中的数据就非常关键,Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式(txt)的SQL文件,通过Mysql Source命令能够将SQL文件导入Mysql数据库中,下面通过Mysql导入导出SQL实例详解Mysqldump和Source命令的用法. M
-
使用MySQL MySqldump命令导出数据时的注意事项
今天使用mysqldump命令备份数据的时候出现了一个问题. 一开始迁移 Discuz 7 论坛的 mysql 数据库时,采用 mysqldump 命令的时候一切顺利,但导入的时候却遇到了 ERROR 1062 (xxxxx) at line 1262: Duplicate entry 'XXX' for key 'XXX' 错误,并停在原地. 对于遇到相同错误的朋友千万别第一时间就尝试用 –force 参数强行导入(除非你原来的数据库已经崩溃).因为这样做的话,即使导入了,也会有一大片数据丢
-
MySQL mysqldump命令使用详解
经常地备份可以帮助防止宝贵数据地丢失:另外一个原因是,也许您希望导出数据来共享. 在这个信息技术不断成长的世界中,共享数据变得越来越常见. 比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库.这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快出版.医院越来越走向采用无纸病历记录,这样这些病历可以随时跟着你.世界变得越来越小,信息也被共享得越来越多.有很多中导出数据得方法,它们都跟导入数据很相似.因为,毕竟,这些都只是一种透视得方式.从数据库导出的数据就是从另一端
-
mysql中mydumper 和 mysqldump 对比使用
如果只是备份几张表或单个库, 相比 innobackup 而言, mysqldump 和 mydumper 更为方便, 不过 mydumper 增加了相对较多的特性, 比如多线程备份, 正则匹配备份, 分组和自检等功能. 另外 mydumper 和 mysqldump 本质上是一样的导出逻辑数据, 不支持在线热备 innodb. 当然我们也可以使用 innobackup 备份部分表数据, 但是它和 mydumper 和 mysqldump 不是一类备份方式, 所以下文只测试 mydumper 和
-
Mysql中复制详细解析
1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行,从而使复制服务器和主服务器的数据保持同步.复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slaves).主服务器将更新重新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器.从服务器在日志中读取的最后一次成功更新的位置.从服务器接受从那时起发
-
浅谈MySQL和Lucene索引的对比分析
MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr.ElasticSearch)的核心类库.两者的索引(index)有什么区别呢?以前写过一篇<Solr与MySQL查询性能对比>,只是简单的对比了下查询性能,对于内部原理却没有解释,本文简单分析下两者的索引区别. MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式. M
-
MySQL中Nested-Loop Join算法小结
不知不觉的玩了两年多的MySQL,发现很多人都说MySQL对比Oracle来说,优化器做的比较差,其实某种程度上来说确实是这样,但是毕竟MySQL才到5.7版本,Oracle都已经发展到12c了,今天我就看了看MySQL的连接算法,嗯,现在来说还是不支持Hash Join,只有Nested-Loop Join,那今天就总结一下我学习的心得吧. Nested-Loop Join基本算法实现,伪代码是这样: for each row in t1 matching range { for each r
-
MySQL中出现乱码问题的终极解决宝典
MySQL出现乱码的原因 要了解为什么会出现乱码,我们就先要理解:从客户端发起请求,到MySQL存储数据,再到下次从表取回客户端的过程中,哪些环节会有编码/解码的行为.为了更好的解释这个过程,博主制作了两张流程图,分别对应存入和取出两个阶段. 存入MySQL经历的编码转换过程 上图中有3次编码/解码的过程(红色箭头).三个红色箭头分别对应:客户端编码,MySQL Server解码,Client编码向表编码的转换.其中Terminal可以是一个Bash,一个web页面又或者是一个APP.本文中我们
-
MySQL中Order By多字段排序规则代码示例
说在前面 突发奇想,想了解一下mysql order by排序是以什么规则进行的? 好了,话不多说,直接进入正题吧. MySql order by 单字段 建一测试表如下: CREATE TABLE `a` ( `code` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT into a values('中一', '我'); INSERT
-
MySQL中的常用工具实例汇总(推荐)
前言 本文主要给大家介绍了关于MySQL常用工具的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.mysql (客户端连接工具) 使用最频繁的连接数据库的客户端工具,使用语法如下: mysql [options] [database] 这里的 options 表示 mysql 的可用选项,可以一次写一个或者多个,甚至可以不写:database 表示连接的数据库,一次只能写一个或者不写,如果不写,连接成功后需要用 "use database"命令来进入要操
-
MySQL中浮点型转字符型可能会遇的问题详解
前言 本文主要给大家介绍了MySQL中在将浮点型转字符型的时候遇到的一个问题,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一 问题描述 今天遇到一个刷数据的需求,是修改产品的重量(字段类型为float),修改了产品的重量之后,是需要记录到日志表中的(字段类型为varchar),表结构如下: 临时刷数据表: CREATE TABLE `temp_170830` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主
-
MySQL数据备份之mysqldump的使用详解
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du
-
MySQL中Innodb的事务隔离级别和锁的关系的讲解教程
前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力.所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在.这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么. 一次封锁or两段锁? 因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会
随机推荐
- java组件commons-fileupload文件上传示例
- IOS self和super详解实现原理及区别
- PHP中的print_r 与 var_dump 输出数组
- Windows服务器下MySql数据库单向主从备份详细实现步骤分享
- javascript中获取元素标签中间的内容的实现方法
- php实现查看邮件是否已被阅读的方法
- 用CSS实现的一张图完成的按钮效果
- BootStrap 导航条实例代码
- java AJAX实现级联下拉框
- java统计字符串中指定元素出现次数方法
- Textarea与懒惰渲染实现代码
- linux大于2T的磁盘使用GPT分区的方法分享
- html5的自定义data-*属性和jquery的data()方法的使用示例
- 基于Javascript实现文件实时加载进度的方法
- C++编程中break语句和continue语句的学习教程
- Android带进度条的下载图片示例(AsyncTask异步任务)
- 使用 eAccelerator加速PHP代码的方法
- Unbuntu16.04安装搜狗拼音输入法的图文教程
- react router4+redux实现路由权限控制的方法
- SpringCloud Zuul在何种情况下使用Hystrix及问题小结