mydumper 官网:https://launchpad.net/mydumper

安装方式:

  1、yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel  (现在安装这些依赖)

  2、cmake .     (解压编译tar xvf mydumper-0.9.1.tar.gz)

  3、make && make install  (编译安装)

  4、ln -s /usr/local/bin/mydumper /usr/bin/ && ln -s /usr/local/bin/myloader /usr/bin/  (软连接)

  5、myloader --help   (验证安装成功)

如果报错

mydumper
mydumper: error while loading shared libraries: libmysqlclient.so.: cannot open shared object file: No such file or directory 发现是so文件没有找到

[root@hchtest4 ~]# ldd /usr/local/bin/mydumper
linux-vdso.so.1 => (0x00007fffd77ff000)
libmysqlclient.so.20 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d3d400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003d3dc00000)
librt.so.1 => /lib64/librt.so.1 (0x0000003d3d800000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003d3cc00000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f8165982000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f816577e000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007f8165550000)
libz.so.1 => /lib64/libz.so.1 (0x0000003d3e000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003d3d000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d3c800000)

解决办法

[root@hchtest4 ~]# find / -name libmysqlclient.so.20
/opt/mysql/lib/libmysqlclient.so.20
/usr/local/mysql-bak/lib/libmysqlclient.so.20
/usr/lib/libmysqlclient.so.20
/root/mysql-5.7.17-linux-glibc2.5-x86_64/lib/libmysqlclient.so.20
/root/system_optimize/software/mysql-5.7.10/libmysql/libmysqlclient.so.20

拷贝过去

[root@hchtest4 ~]# cp /opt/mysql/lib/libmysqlclient.so.20.3.4 /lib64/libmysqlclient.so.20

[root@hchtest4 ~]# mydumper --help
Usage:
mydumper [OPTION...] multi-threaded MySQL dumping

Help Options:
-?, --help Show help options

Application Options:
-B, --database Database to dump
-T, --tables-list Comma delimited table list to dump (does not exclude regex option)
-o, --outputdir Directory to output files to
-s, --statement-size Attempted size of INSERT statement in bytes, default 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 Compress output files
-e, --build-empty-files Build dump files even if no data available from table
-x, --regex Regular expression for 'db.table' matching
-i, --ignore-engines Comma delimited list of storage engines to ignore

...

mydumper介绍

MySQL自身的mysqldump工具支持单线程工作,依次一个个导出多个表,没有一个并行的机,这就使得它无法迅速的备份数据。

mydumper作为一个实用工具,能够良好支持多线程工作,可以并行的多线程的从表中读入数据并同时写到不同的文件里,这使得它在处理速度方面快于传统的mysqldump。其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑。这样,mydumper能更好的完成备份任务。

mydumper特性

  • 多线程备份
  • 因为是多线程逻辑备份,备份后会生成多个备份文件
  • 备份时对MyISAM表施加FTWRL(FLUSH TABLES WITH READ LOCK),会阻塞DML语句
  • 保证备份数据的一致性
  • 支持文件压缩
  • 支持导出binlog
  • 支持多线程恢复
  • 支持以守护进程模式工作,定时快照和连续二进制日志
  • 支持将备份文件切块

mydumper的安装

mydumper使用c语言编写,使用glibc库

mydumper安装所依赖的软件包,glibc, zlib, pcre, pcre-devel, gcc, gcc-c++, cmake, make, mysql客户端库文件

  1. 安装依赖软件包,将mysql客户端库文件路径添加至/etc/ld.so.conf, 如/usr/local/mysql/lib
  2. 解压软件包进入目录,cmake .
  3. make && make install

安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下

mydumper备份机制

mydumper工作流程图

主要步骤概括

  1. 主线程 FLUSH TABLES WITH READ LOCK, 施加全局只读锁,以阻止DML语句写入,保证数据的一致性
  2. 读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中,以供即使点恢复使用
  3. N个(线程数可以指定,默认是4)dump线程 START TRANSACTION WITH CONSISTENT SNAPSHOT; 开启读一致的事物
  4. dump non-InnoDB tables, 首先导出非事物引擎的表
  5. 主线程 UNLOCK TABLES 非事物引擎备份完后,释放全局只读锁
  6. dump InnoDB tables, 基于事物导出InnoDB表
  7. 事物结束

备份所生成的文件

  • 所有的备份文件在一个目录中,目录可以自己指定
  • 目录中包含一个metadata文件

    记录了备份数据库在备份时间点的二进制日志文件名,日志的写入位置,

    如果是在从库进行备份,还会记录备份时同步至主库的二进制日志文件及写入位置

  • 每个表有两个备份文件:

    database.table-schema.sql 表结构文件

    database.table.sql 表数据文件

    如果对表文件分片,将生成多个备份数据文件,可以指定行数或指定大小分片

mydumper和myloader的使用

mydumper参数

-B, --database              要备份的数据库,不指定则备份所有库
-T, --tables-list 需要备份的表,名字用逗号隔开
-o, --outputdir 备份文件输出的目录
-s, --statement-size 生成的insert语句的字节数,默认1000000
-r, --rows 将表按行分块时,指定的块行数,指定这个选项会关闭 --chunk-filesize
-F, --chunk-filesize 将表按大小分块时,指定的块大小,单位是 MB
-c, --compress 压缩输出文件
-e, --build-empty-files 如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件)
-x, --regex 是同正则表达式匹配 'db.table'
-i, --ignore-engines 忽略的存储引擎,用都厚分割
-m, --no-schemas 不备份表结构
-k, --no-locks 不使用临时共享只读锁,使用这个选项会造成数据不一致
--less-locking 减少对InnoDB表的锁施加时间(这种模式的机制下文详解)
-l, --long-query-guard 设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出)
--kill-long-queries 杀掉长查询 (不退出)
-b, --binlogs 导出binlog
-D, --daemon 启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份
-I, --snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下
-L, --logfile 使用的日志文件名(mydumper所产生的日志), 默认使用标准输出
--tz-utc 跨时区是使用的选项,不解释了
--skip-tz-utc 同上
--use-savepoints 使用savepoints来减少采集metadata所造成的锁时间,需要 SUPER 权限
--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist
-h, --host 连接的主机名
-u, --user 备份所使用的用户
-p, --password 密码
-P, --port 端口
-S, --socket 使用socket通信时的socket文件
-t, --threads 开启的备份线程数,默认是4
-C, --compress-protocol 压缩与mysql通信的数据
-V, --version 显示版本号
-v, --verbose 输出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为 2

myloader使用参数

-d, --directory                   备份文件的文件夹
-q, --queries-per-transaction 每次事物执行的查询数量,默认是1000
-o, --overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
-B, --database 需要还原的数据库
-e, --enable-binlog 启用还原数据的二进制日志
-h, --host 主机
-u, --user 还原的用户
-p, --password 密码
-P, --port 端口
-S, --socket socket文件
-t, --threads 还原所使用的线程数,默认是4
-C, --compress-protocol 压缩协议
-V, --version 显示版本
-v, --verbose 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

使用案例
备份game库到/backup/01文件夹中,并压缩备份文件

mydumper -u root -p ### -h localhost -B game -c -o /backup/01

备份所有数据库,并备份二进制日志文件,备份至/backup/02文件夹

mydumper -u root -p ### -h localhost -o /backup/02

备份game.tb_player表,且不备份表结构,备份至/backup/03文件夹

mydumper -u root -p ### -h localhost -T tb_player -m -o /backup/03

还原

mysqlload -u root -p ### -h localhost -B game -d /backup/02

mydumper的less locking模式

mydumper使用--less-locking可以减少锁等待时间,此时mydumper的执行机制大致为

  • 主线程 FLUSH TABLES WITH READ LOCK (全局锁)
  • Dump线程 START TRANSACTION WITH CONSISTENT SNAPSHOT;
  • LL Dump线程 LOCK TABLES non-InnoDB (线程内部锁)
  • 主线程UNLOCK TABLES
  • LL Dump线程 dump non-InnoDB tables
  • LL DUmp线程 UNLOCK non-InnoDB
  • Dump线程 dump InnoDB tables

参考

mydumper备份原理和使用方法 - linuxnote - 博客园
https://www.cnblogs.com/linuxnote/p/3817698.html

linux下mydumper与myloader安装与使用 - 李小豪 - 博客园
https://www.cnblogs.com/li-954172807/articles/7810991.html

mydumper 安装报错处理 - digdeep - 博客园
https://www.cnblogs.com/digdeep/p/4925560.html

mydumper安装及使用的更多相关文章

  1. MySQL 之mydumper安装详解

    方法一: 安装依赖包: 1 yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake make 下载二 ...

  2. mydumper 安装报错处理

    mydumper 官网:https://launchpad.net/mydumper 下载之后,安装报错: [root@localhost local]# cd mydumper-0.6.2 [roo ...

  3. mydumper安装、原理介绍

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

  4. mydumper安装

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

  5. mydumper安装和使用

    安装下载安装包:wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz 安装依赖包:yum inst ...

  6. mydumper安装及安装故障汇总

     mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式术语逻辑备份.它支持多线程.备份速度远高于原生态的mysqldump以及众多优异特性. 因此该工具是DBA们的不二选 ...

  7. mydumper原理4

    Mydumper是一个针对mysql和Drizzle的高性能多线程备份和恢复工具.开发人员分别来自MySQL,Facebook,SkySQL公司.目前已经在有一些大型产品业务上测试并使用了Mydump ...

  8. mydumper原理3

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

  9. mydumper原理1

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

随机推荐

  1. Beta阶段敏捷冲刺前准备

    一.介绍小组新加入的成员,Ta担任的角色. 新成员一:徐璐琳 风格:酷酷哒 擅长的技术:JAVA,CCNP 编程的兴趣:折磨人的快感 新角色:管理员 一句话宣言:打开开关又是一个机会 新成员二:祁泽文 ...

  2. Alpha冲刺——day6

    Alpha冲刺--day6 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...

  3. CentOS下安装Python3

    目录 CentOS下安装Python3 下载 解压 配置 gcc sudo权限 vim 编译 安装 添加软链接 pip安装出错,找不到SSL 安装virtualenv和virtualenvwrappe ...

  4. dubbo的spi机制

    SPI SPI是一种扩展机制,在java中SPI机制被广泛应用,比如Spring中的SpringServletContainerInitializer 使得容器启动的时候SpringServletCo ...

  5. MyBatis关联查询,一对一关联查询

    数据库E-R关系 实体类 public class City { Long id; String name; Long countryId; Date lastUpdate; } public cla ...

  6. 洛谷 P2862 [USACO06JAN]把牛Corral the Cows 解题报告

    P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...

  7. luogu1082 [NOIp2012]同余方程 (扩展欧几里得)

    由于保证有解,所以1%gcd(x,y)=0,所以gcd(x,y)=1,直接做就行了 #include<bits/stdc++.h> #define pa pair<int,int&g ...

  8. [SCOI2014]方伯伯的商场之旅

    Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的 ...

  9. 【洛谷P1101】单词方阵

    题目大意:给一 \(n \times n\) 的字母方阵,内可能蕴含多个 \("yizhong"\) 单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 8 个方向的任一方向, ...

  10. 8: springMVC ModelAndView 作用与功能解析

    Spring mvc视图机制 所有的web应用的mvc框架都有它定位视图的方式.Spring提供了视图解析器供你在浏览器中显示模型数据,而不必被拘束在特定的视图技术上. Spring的控制器Contr ...