houbin 发表于 2018-9-29 13:18:21

MySQL多线程备份工具mydumper

  Mydumper介绍(摘自网上):   http://www.mydumper.org/
  Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自MySQL,Facebook,SkySQL公司。目前已经在一些线上使用了Mydumper。
  Mydumper主要特性:
  1.轻量级C语言写的
  2.执行速度比mysqldump快10倍
  3.事务性和非事务性表一致的快照(适用于0.2.2以上版本)
  4.快速的文件压缩
  5.支持导出binlog
  6.多线程恢复(适用于0.2.1以上版本)
  7.以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)
  8.开源 (GNU GPLv3)
  Mydumper安装使用
  wget http://launchpad.net/mydumper/0.5/0.5.1/+download/mydumper-0.5.1.tar.gz
  yum install glib2-devel.x86_64 zlib-devel.x86_64 pcre-devel.x86_64 cmake gcc gcc-c++
  #tar zxvf mydumper-0.5.1.tar.gz
  #cd mydumper-0.5.1
  # /usr/bin/cmake .
  #make && make install
  安装完成:
  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"
  安装过程如果提示出错:
  -- The CXX compiler identification is unknown
  CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
  WARNINGUnable to find Sphinx documentation generator
  WARNINGMissing python-sphinx documentation tools, docs will not be built
  没有安装gcc gcc-c++
  yum install gcc gcc-c++
  mydumper -h 192.168.1.11 -uuser1 -p123456 -B testdb -o /data/mysqltest
  提示option parsing failed: Error parsing option -s, try --help
  不持用户名/密码选项与值连起来写格式
  参数说明:
  mydumper参数介绍:
  -B, –database 需要备份的库
  -T, –tables-list 需要备份的表,用,分隔
  -o, –outputdir 输出目录
  -s, –statement-size Attempted size of INSERT statement in bytes, default 1000000
  -r, –rows 试图分裂成很多行块表
  -c, –compress 压缩输出文件
  -e, –build-empty-files 即使表没有数据,还是产生一个空文件
  -x, –regex 支持正则表达式
  -i, –ignore-engines 忽略的存储引擎,用,分隔
  -m, –no-schemas 不导出表结构
  -k, –no-locks 不执行临时共享读锁 警告:这将导致不一致的备份
  -l, –long-query-guard 长查询,默认60s
  –kill-long-queries kill掉长时间执行的查询(instead of aborting)
  -b, –binlogs 导出binlog
  -D, –daemon 启用守护进程模式
  -I, –snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下
  -L, –logfile 日志文件
  -h, –host
  -u, –user
  -p, –password
  -P, –port
  -S, –socket
  -t, –threads 使用的线程数,默认4
  -C, –compress-protocol 在mysql连接上使用压缩
  -V, –version
  -v, –verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
  myloader参数介绍:
  -d, –directory 导入备份目录
  -q, –queries-per-transaction 每次执行的查询数量, 默认1000
  -o, –overwrite-tables 如果表存在删除表
  -B, –database 需要还原的库
  -e, –enable-binlog 启用二进制恢复数据
  -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, default 2
  mydumper输出文件:
  metadata:元数据 记录备份开始和结束时间,以及binlog日志文件位置。
  table data:每个表一个文件
  table schemas:表结构文件
  binary logs: 启用–binlogs选项后,二进制文件存放在binlog_snapshot目录下
  daemon mode:
  在这个模式下,有五个目录0,1,binlogs,binlog_snapshot,last_dump。备份目录是0和1,间隔备份,如果mydumper因某种原因失败而仍然有一个好的快照,当快照完成后,last_dump指向该备份。
  实例:
  # mydumper -h 192.168.1.11 -u user1 -p 123456 -B testdb -o /tmp/test0620
  # myloader -h 192.168.1.11 -u user1 -p 123456 -d /tmp/test0620 -o -B testdb
  默认开启4个线程,如果提示:
  ** (myloader:22583): CRITICAL **: the specified directory is not a mydumper backup
  导出的目录必须唯一指定不可移动复制到其它地方,否则不认
  已经线上使用,用mydumper来替代mysqldumper备份方式,经过校验测试(目录级恢复与mysqldumper恢复)的结果完全一致。
  mydumper开启多线程导入导出速度相比mysqldumper提升近十倍,但如果系统资源有限,线程数不可开启太多,否则不但带来不了速度提升,反而会更慢.

页: [1]
查看完整版本: MySQL多线程备份工具mydumper