MySQL多线程数据导入导出工具Mydumper
http://afei2.sinaapp.com/?p=456
今天在线上使用mysqldump将数据表从一个库导入到另外一个库,结果速度特别慢,印象中有个多线程的数据导入导出工具Mydumper,于是简单的调查和测试一下。
下午导数据的过程中,这个表是没有更新的,因此不需要确保多个数据之间的一致性,就简单的写个shell脚本启动多个mysqldumper来导数据,这样有几个问题:
- 需要处理表数据大小不均匀的问题,有的会很快结束,有的会比较慢。
- 如果需要保证多个导出之间的一致性时,则无法保证。
一、原理
lock和start transaction with consistent snapshot,在flush tables with read
lock时开启所有的线程,并且通过show master status和show slave
status获得当前的position(便于使用Mydumper重建slave以及确保多个表之间的数据一致性)。
- Global write lock is acquired (“FLUSH TABLES WITH READ LOCK”)
- Various metadata is read (“SHOW SLAVE STATUS”,”SHOW MASTER STATUS”)
- Other threads connect and establish snapshots (“START TRANSACTION
WITH CONSISTENT SNAPSHOT”),On pre-4.1.8 it creates dummy InnoDB table,
and reads from it. - Once all worker threads announce the snapshot establishment, master executes “UNLOCK TABLES” and starts queueing jobs.
二、安装
- 下载源码,https://launchpad.net/mydumper
- 阅读README,根据不同的OS,安装不同的依赖
- cmake .
- make
三、使用
Mydumper不能读取/etc/my.cnf中配置文件,需要手工制定用户名、密码等等
mydumper -P 3306 -u admin -p '***' -h db23 -B meituan -T test1,test2,test3,test4,test5 -o ./ |
四、测试
五、结论
MySQL多线程数据导入导出工具Mydumper的更多相关文章
- pt-archiver(数据导入导出工具)
数据导入导出工具pt-archiver 工具可以将MySQL的表数据导出到一个新表或者一个文件,也有自己的应用场景,比如数据归档,删除数据,数据合并等. 具体用法: pt-archiver [OPTI ...
- HData——ETL 数据导入/导出工具
HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC.Hive.HDFS.HBase.MongoDB.FTP.Http.CSV.Excel.Kafka等)之间数据 ...
- mysql多线程备份与还原工具mydumper
(一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...
- MySQL之数据导入导出
日常开发中,经常会涉及到对于数据库中数据的导入与导出操作,格式也有很多: TXT,CSV,XLS,SQL等格式,所以,在此总结一下,省的总是百度查询. 一 导出 1) 常用的方式就是使用现成的工具例如 ...
- Mysql 的数据导入导出
一. mysqldump工具基本用法,不适用于大数据备份 1. 备份所有数据库: mysqldump -u root -p --all-databases > all_database_sq ...
- Oracle exp/imp数据导入导出工具基本用法
一.获取帮助 exp/imp help=y 二.数据导出 1.将数据库完全导出,设置full选项exp system/manager@orcl file=d:\db.dmp full=y 2.导出数据 ...
- HBase数据导入导出工具
hbase中自带一些数据导入.导出工具 1. ImportTsv直接导入 1.1 hbase中建表 create 'testtable4','cf1','cf2' 1.2 准备数据文件data.txt ...
- PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)
一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间.oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间, ...
- mysql的数据导入导出
1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...
随机推荐
- MVC地区多级联动扩展实现(非递归形式)
MVC前台界面调用方式如下: @Html.AreaDropDownList(, string.Empty) 参数说明: 第一个参数控件的名称: 第二个参数选中的地区编码: 第三个参数地区层级: 第四个 ...
- URAL 1826. Minefield(数学 递归)
题目链接:http://acm.timus.ru/problem.aspx? space=1&num=1826 1826. Minefield Time limit: 0.5 second M ...
- 初识——Vim
有些东西吧,总是碰见,低头不见抬头见,但又不知道是什么.用来干嘛的?总是搞的心里痒痒.所以一定要学习一下. 近期一段时间,总是碰到一个词儿:VIM,在这儿看到了,我不理他,隔一会儿丫的又跑我眼睛里,总 ...
- Sinowal Bootkit 分析-中国红客网络技术联盟 - Powered by Discuz!
訪问原文 (一)模块组成 感染过Sinowal的电脑,Sinaowal在硬盘中的分布例如以下图: ; Sector Offset ...
- 高可用技术工具包 High Availability Toolkit
HighAvailabilityToolkit High Availability Toolkit includes several solutions by which achieving arch ...
- luogu2618 数字工程 DP
题目大意:ACM实验室开启了一个数字工程项目,希望把正整数n通过一些特殊方法变成1.可采用的方法有:(1)减去1:(2)除以它的任意一个素因子. 每操作一次消耗一个单位的能量.问,把n变成1最少需要消 ...
- luogu1120 小木棍【数据加强版】 暴力剪枝
题目大意 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50.现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度.给出每段小木棍的长度,编程帮 ...
- Linux - shell壳脚本
shell脚本. 壳,充当一个翻译,让计算机能够认识的二进制程序,并将结果翻译给我们. 加在内核上,可以跟内核打交道的壳. 可以通过/etc/shells 来查看. [root@local ~]# c ...
- Java Colections 集合类 —— List、ArrayList、Set(HashSet)
0. List<T> 是一个接口 该接口定义的高级成员函数有: contains() ⇒ 是否包含: String[] people; List names = Arrays.asList ...
- BZOJ 1537 cdq分治
思路: 我只是想写一下cdq-- 二维偏序 一维排序 一维cdq分治 (我忘了归并排序怎么写了,,,) 写了个sort- 复杂度是O(nlog^2n) //By SiriusRen #include ...