Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自MySQL,Facebook,SkySQL公司。目前已经在一些线上使用了Mydumper。

一、Mydumper主要特性:
  -执行并行(速度快)、性能提升
  -易于管理
  -一致性:在所有的threads之间维护快照,提供master和slave日志的准确位置等
  -管理型:支持PCRE

默认是关闭了binlog的dump功能,要想开启,需要在cmke编译的时候添加-DWITH_BINLOG=ON

二、如何获取一致性快照的:
  -server上正在运行的慢查询或中断dump,或者慢查询被kill掉
  -需要施加全局写锁("flush tables with read lock")
  -读取不同的元数据("show slave status","show master status")
  -具有事务性和非事务性表一致的快照(0.2.2+)
  -一旦所有的工作现成通知已经创建好快照,master会执行"unlock tables",开始运行队列中的job

 三、mydumper的工作原理:

mydumper的主要工作步骤:
1 主线程 flush tables with read lock, 施加全局只读锁,以阻止dml语句写入,保证数据的一致性
2 读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中,以供恢复使用
3 start transaction with consistent snapshot; 开启读一致事务
4 启用n个(线程数可以指定,默认是4)dump线程导出表和表结构
5 备份非事务类型的表
6 主线程 unlock tables,备份完成非事务类型的表之后,释放全局只读锁
7 基于事务dump innodb tables
8 事务结束

四、mydumper的安装:

# yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel
# wget http://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
# tar zxvf mydumper-0.9.1.tar.gz -C ../software/
# cmake .

#  cmake .
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Using mysql-config: /bin/mysql_config
-- Found MySQL: /usr/include/mysql, /usr/lib64/mysql/libmysqlclient.so;/usr/lib64/libpthread.so;/usr/lib64/libz.so;/usr/lib64/libm.so;/usr/lib64/libssl.so;/usr/lib64/libcrypto.so;/usr/lib64/libdl.so
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.7")
-- Found PkgConfig: /bin/pkg-config (found version "0.27.1")
-- checking for one of the modules 'glib-2.0'
-- checking for one of the modules 'gthread-2.0'
-- checking for module 'libpcre'
-- found libpcre, version 8.32
-- Found PCRE: /usr/include CMake Warning at docs/CMakeLists.txt:9 (message):
Unable to find Sphinx documentation generator -- ------------------------------------------------
-- MYSQL_CONFIG = /bin/mysql_config
-- CMAKE_INSTALL_PREFIX = /usr/local
-- BUILD_DOCS = ON
-- WITH_BINLOG = OFF
-- RUN_CPPCHECK = OFF
-- Change a values with: cmake -D<Variable>=<Value>
-- ------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /root/mydumper-0.9.1

# make

# make
Scanning dependencies of target mydumper
[ 25%] Building C object CMakeFiles/mydumper.dir/mydumper.c.o
[ 50%] Building C object CMakeFiles/mydumper.dir/server_detect.c.o
[ 75%] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.o
Linking C executable mydumper
[ 75%] Built target mydumper
Scanning dependencies of target myloader
[100%] Building C object CMakeFiles/myloader.dir/myloader.c.o
Linking C executable myloader
[100%] Built target myloader

# make install

# make install
[ 75%] Built target mydumper
[100%] Built target myloader
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/mydumper
-- Removed runtime path from "/usr/local/bin/mydumper"
-- Installing: /usr/local/bin/myloader
-- Removed runtime path from "/usr/local/bin/myloader"

安装好之后 ,会生成两个文件:

/usr/local/bin/mydumper
/usr/local/bin/myloader

 

五、参数说明:

  -B, --database              要导出的数据库名
-T, --tables-list 要导出的表名,多个表用逗号分隔。不支持正则表达式
-o, --outputdir 导出数据文件存放的目录,mydumper会自动创建
-s, --statement-size 生成插入语句的字节数, 默认1000000字节
-r, --rows Try to split tables into chunks of this many rows. This option turns off --chunk-filesize
-F, --chunk-filesize Split tables into chunks of this output file size. This value is in MB
-c, --compress 压缩导出的文件
-e, --build-empty-files 即使是空表也为表创建文件
-x, --regex 使用正则表达式匹配'db.table'
-i, --ignore-engines 忽略的存储引擎,多个存储引擎使用逗号分隔
-m, --no-schemas 只导出数据,不导出建库建表语句
-d, --no-data 仅仅导出建表结构,创建db的语句,不导出表的数据
-G, --triggers 导出触发器
-E, --events 导出events
-R, --routines 导出存储过程和函数
-k, --no-locks 不施加临时的共享读锁,会导致备份不一致
--less-locking 最小化在innodb表上的锁表时间
-l, --long-query-guard 设置长查询定时器,单位是秒,默认是60
-K, --kill-long-queries Kill掉运行时间长的查询
-D, --daemon 以守护进程的方式执行
-I, --snapshot-interval 创建导出快照的时间间隔,默认是 60s ,该参数只有在守护进程执行的时候有用
-L, --logfile 指定mydumper输出的日志文件,默认使用控制台输出
--tz-utc SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
--skip-tz-utc
--use-savepoints 使用savepoints减少对元数据锁定的问题,需要SUPER权限
--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist
--lock-all-tables Use LOCK TABLE for all, instead of FTWRL
-U, --updated-since Use Update_time to dump only tables updated in the last U days
--trx-consistency-only Transactional consistency only
-h, --host 主机
-u, --user 用户名
-p, --password 密码
-P, --port 端口
-S, --socket 套接字文件
-t, --threads 所使用的线程数,默认是4
-C, --compress-protocol 压缩协议
-V, --version 显示版本后退出
-v, --verbose 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

  

六、mydump导出的文件类型

metadata 			:包含导出开始和结束时间,如果开启binlog会记录日志位置信息;如果启用gtid ,则记录gtid信息。
db.table.sql :数据文件,insert语句
db.table-schema.sql :包含建表语句
db-schema.sql :包含建库语句

  

Mydumper介绍的更多相关文章

  1. mydumper 介绍及使用

    1 Mydumper 介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具. Mydumper主要特性: 轻量级C语言写的 多线程备份,备份后会生成多个备份文件 事务 ...

  2. mydumper安装、原理介绍

    一.安装   安装依赖包: yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake 下载二进制包: ...

  3. mydumper原理介绍

      mydumper的安装:http://www.cnblogs.com/lizhi221/p/7010174.html   mydumper介绍   MySQL自身的mysqldump工具支持单线程 ...

  4. mydumper原理3

    Mydumper介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员主要来自MySQL,Facebook,SkySQL公司.目前已经在一些线上使用了Mydu ...

  5. mydumper原理1

    http://www.cnblogs.com/linuxnote/p/3817698.html?utm_source=tuicool&utm_medium=referral mydumper介 ...

  6. mydumper

    Mydumper介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员主要来自MySQL,Facebook,SkySQL公司.目前已经在一些线上使用了Mydu ...

  7. mydumper备份原理和使用方法

    mydumper介绍 MySQL自身的mysqldump工具支持单线程工作,依次一个个导出多个表,没有一个并行的机,这就使得它无法迅速的备份数据. mydumper作为一个实用工具,能够良好支持多线程 ...

  8. mydumper安装及使用

    mydumper 官网:https://launchpad.net/mydumper 安装方式: 1.yum install glib2-devel mysql-devel zlib-devel pc ...

  9. MySQL数据库之多线程备份工具mydumper

    Mydumper介绍: 1)Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具 2)特性: 轻量级C语言编写 执行速度比mysqldump快10倍 快速的文件压缩 支持导 ...

随机推荐

  1. POJ 1258 Agri-Net (Prim&Kruskal)

    题意:FJ想连接光纤在各个农场以便网络普及,现给出一些连接关系(给出邻接矩阵),从中选出部分边,使得整个图连通.求边的最小总花费. 思路:裸的最小生成树,本题为稠密图,Prim算法求最小生成树更优,复 ...

  2. python学习之基本数据类型

    python的基本数据类型有数字.字符串.列表.字典.元祖.布尔值 一.数字 1.1.字符转换为数字 实例: a=" b=int(a) print(b+) 运行结果: 可以用type查看数据 ...

  3. python_cookbook之路:数据结构-解压可迭代对象赋值给多个变量以及扩展的迭代解压语法(*)

    1.一一对应: >>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ] >>> name, shares, price, d ...

  4. zprofiler三板斧解决cpu占用率过高问题

    zprofiler三板斧解决cpu占用率过高问题  九居 浏览 171 2015-04-08 14:11:58 发表于:JVM性能与调试平台   zprofiler   上周五碰到了一个线上机器cpu ...

  5. Color the ball HDU1556

    这题整整debug了两个小时 不同组居然要初始化  本以为built函数里面已经初始化好了!!!!! 其他无需注意 #include<cstdio> #include<cstring ...

  6. fork调用的底层实现

    fork调用的内核实现: http://www.cnblogs.com/huangwei/archive/2010/05/21/1740794.html http://blog.csdn.net/he ...

  7. C语言 —— 贪吃蛇

    参考视频:https://www.bilibili.com/video/av29580072/?p=1 GreedySnake.h #ifndef GREEDYSNAKE_H_INCLUDED #de ...

  8. 算法进阶面试题04——平衡二叉搜索树、AVL/红黑/SB树、删除和调整平衡的方法、输出大楼轮廓、累加和等于num的最长数组、滴滴Xor

    接着第三课的内容和讲了第四课的部分内容 1.介绍二叉搜索树 在二叉树上,何为一个节点的后继节点? 何为搜索二叉树? 如何实现搜索二叉树的查找?插入?删除? 二叉树的概念上衍生出的. 任何一个节点,左比 ...

  9. BZOJ.3884.上帝与集合的正确用法(扩展欧拉定理)

    \(Description\) 给定p, \(Solution\) 欧拉定理:\(若(a,p)=1\),则\(a^b\equiv a^{b\%\varphi(p)}(mod\ p)\). 扩展欧拉定理 ...

  10. angular.js--------demo1

    <!doctype html><html ng-app> <head> <meta charset="utf-8"> </he ...