mydumper 快速高效备份mysql,按照表生成备份文件,快速恢复
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)
下载链接
wget https://launchpad.net/mydumper/0.6/0.6.1/+download/mydumper-0.6.1.tar.gz
安装
cd /usr/local/tools
tar -xzvf /tmp/mydumper-0.6.1.tar.gz
cd mydumper-0.6.1
[root@db01 mydumper-0.6.1]# cmake .
-- Using mysql-config: /usr/bin/mysql_config
-- Found MySQL: /usr/include/mysql, /usr/lib64/mysql/libmysqlclient_r.so;/usr/lib64/libz.so;
/usr/lib64/libpthread.so;/usr/lib64/libcrypt.so;/usr/lib64/libnsl.so;
/usr/lib64/libm.so;/usr/lib64/libpthread.so;/usr/lib64/libssl.so;/usr/lib64/libcrypto.so
-- checking for module 'libpcre'
-- found libpcre, version 6.6
-- Found PCRE: /usr/include WARNINGUnable to find Sphinx documentation generator
-- ------------------------------------------------
-- MYSQL_CONFIG = /usr/bin/mysql_config
-- CMAKE_INSTALL_PREFIX = /usr/local
-- BUILD_DOCS = ON
-- RUN_CPPCHECK = OFF
-- Change a values with: cmake -D=
-- ------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/tools/mydumper-0.6.1 [root@db01 mydumper-0.6.1]# make
Scanning dependencies of target mydumper
[ 20%] Building C object CMakeFiles/mydumper.dir/mydumper.c.o
[ 40%] Building C object CMakeFiles/mydumper.dir/binlog.c.o
[ 60%] Building C object CMakeFiles/mydumper.dir/server_detect.c.o
[ 80%] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.o
Linking C executable mydumper
[ 80%] 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 [root@db01 mydumper-0.6.1]# make install
[ 80%] 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"
测试用例
(1) 单线程,无压缩
mydumper -u root -p root -P 3308 -h 10.211.55.5 -B ymz -o /backup -b
(2) 单线程,输出更多信息
mydumper -u root -p root -P 3308 -h 10.211.55.5 -B ymz -o /backup -b -v 3
(3) 2线程无压缩备份
mydumper -u root -p root -P 3308 -h 10.211.55.5 -t 2 -B ymz -o /backup -b -v 3
(4) 2线程、压缩备份
mydumper -u root -p root -P 3308 -h 10.211.55.5 -t 2 -c -B ymz -o /backup -b -v 3
(5) -e 参数,即使没有数据,会生成空文件
mydumper -u root -p root -P 3308 -h 10.211.55.5 -t 2 -c -e -B ymz -o /backup -b -v 3
(6) 排除yiqifa_bs_push、yiqifa_bs和yiqifa_an及mysql库,相当于只备份test库
mydumper –regex=’^(?!(yiqifa_bs_push|yiqifa_bs|yiqifa_an|mysql))’ -u root -p xxx –binlogs -c -v 3 -o /data/mysql_bak/
总结:
(1)数据不一致情况:
在备份期间先对表t 执行了insert 操作,然后执行alter table t drop name 而此时备份记录的binlog pos点是在insert 之前的点,当基于时间点恢复的时候因为备份文件里T的字段name 已经被drop 那么在解析binlog 执行insert的时候就会报列匹配不上的错误
这也是为何mysql5.5加入metadata lock的主要原因—-防止事物被ddl语句破坏
(2)mydumper 无法备份view和trigger (无论是整库还是单独指定库),不过整库备份模式下可以备份procedure和function(因为存储在mysql.proc里),但是单库备份依然无法备份procedure和function,希望想使用mydumper进行备份的小伙伴们引起重视
mydumper 参数介绍
-B, --database 需要备份的库
-T,--tables-list需要备份的表,用,分隔
-o,--outputdir输出目录
-s,--statement-sizeAttemptedsizeofINSERTstatementinbytes,default1000000
-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-querieskill掉长时间执行的查询(insteadofaborting)
-b,--binlogs导出binlog
-D,--daemon启用守护进程模式
-I,--snapshot-intervaldump快照间隔时间,默认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,default2
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,default2
参考网站:
https://launchpad.net/mydumper
http://www.ttlsa.com/mysql/mysql-backup-tool-mydumper/
http://blog.csdn.net/lidan3959/article/details/20867711
mydumper 快速高效备份mysql,按照表生成备份文件,快速恢复的更多相关文章
- 无备份mysql删除表后恢复
mysql从5.6.17开始自动设置innodb_file_per_table为on,每个表设置单独表空间,数据不是集中存放在ibdata1里.下面测试下无备份后drop表后的恢复. 前奏生成数据字典 ...
- MySQL数据表生成ER图
遇到没有说明文档的数据库的时候,一张一张表去分析,需要花费很长时间和精力. 幸好有一些工具,可以帮助我们生成ER图,这样看起来就一目了然: 下面我将自己的一次实践记录于下,供参考: 1.下载并安装工具 ...
- shell 批量创建_备份 mysql 数据库 表
#!/bin/bash user=root password= socket=/var/lib/mysql/mysql.sock mycmd="mysql -u$user -p$passwo ...
- FoxOne---一个快速高效的BS框架--生成增删改查
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- MySQL MyISAM和Innodb表生成序列
目录 背景 分析 测试 结论 背景 应用端需要生成依次递增的序列来做流水序号等,方案有1.redis /MySQL SEQUENCE引擎生成序列:2.MySQL中myisam表 replace int ...
- mysql之冷备和mysqldump、mydumper、xtrabackup备份
1.冷备流程: 停库备份,冷备份一般用于非核心业务,这类业务一般都允许停库. 在停止数据库后,将数据文件拷贝出来,然后对原始数据文件进行备份. 流程: 1.关闭数据库备份 2.拷贝数 ...
- mysql表生成JavaBean
MySQLToBean.java package org.just.util; import java.io.File; import java.io.FileInputStream; import ...
- mysql 和 sqlserver中备份一张表的区别
sqlserver中备份一张表 SELECT * into qa_buglist_bak FROM qa_buglist 不管表的数据有多大,速度很快: mysql中上述语句就无效了,须得新建一张表, ...
- mysql误删表,无备份
mysql误删表,无备份 1.操作步骤:https://blog.csdn.net/u011277123/article/details/78018513?tdsourcetag=s_pctim_ai ...
随机推荐
- Glide 图片加载库
compile 'com.github.bumptech.glide:glide:3.7.0' Glide.with(context) //图片url .load("http://www.b ...
- divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句
#!/usr/bin/env python a = 10/3 print(a) #divmod计算商与余数 r = divmod(10001,20) print(r) #eval可以执行一个字符串形式 ...
- 荒废了很久的java以及微信公众平台今天拿起来看了看:这里有很好的教程
我的微信公众号刚刚起步: ,感兴趣可以关注一下. 关于java开发微信公众号有一个很好的教程博客:推荐一下:http://blog.csdn.net/lyq8479/article/details/8 ...
- Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
maven构建项目的时候遇到这个错误: 一.直接原因 制定路径下确实没有sqljdbc4.jar文件. 二.根本原因 微软不允许以maven的方式直接下载该文件. 三.解决办法 3.1 手动下载相关库 ...
- Spark学习(二) -- Spark整体框架
标签(空格分隔): Spark 还记得上次的wordCount程序嘛?通过这个小程序,我们来一窥Spark的框架是什么样子的. sc.textFile("/usr/local/Cellar/ ...
- SpringMVC生成任意文件,访问链接即下载
原理上讲就是返回的 ResponseEntity<byte[]> 形式的值就可以了 @RequestMapping("/api/watermark_download") ...
- [Linux]cmd to use
0x01 Linux Perfermance Analysis in 60s 1> uptime ---load averages 2> dmesg -r | tail ---kernel ...
- B/S网站中IE6兼容问题
在HTML中定义的样式,部分样式在IE7以前的版本中的效果是不同的,所以需要在网页中定义让浏览器以IE8的模式启动. 在HEAD中定义标签meta如下: <meta http-equiv=&qu ...
- c++ STL 学习记录 草稿。
非常丑陋的尝试实现stl.慢慢修改吧. 1)简单实现 vector和list. 2)思索如何开始编写算法. 1,所有容器继承一个抽象容器.那么算法就可以使用抽象基类的next方法来遍历元素. 容器间耦 ...
- python成长之路【第十二篇】:RabbitMQ入门
一.RabbitMQ介绍 解释RabbitMQ,就不得不提到AMQP(Advanced Message Queuing Protocol)协议. AMQP协议是一种基于网络的消息传输协议,它能够在应用 ...