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 ...
随机推荐
- error: could not read CFBundleIdentifier from Info.plist (null)解决方法之一
出现这种错误的原因可能很多,以下是我遇到的一种情况: 项目移植到新的环境 编译报错: error: could not read CFBundleIdentifier from Info.plist ...
- 【Normal Form】数据库表结构设计所遵从的范式
参考的优秀文章 数据库(第一范式,第二范式,第三范式) 数据库设计是件严肃.关键的事儿,一毕业,加入一个大型的行业项目,那儿的前辈资深工程师,就给我灌输数据库如何关键.神圣.深不可测的观念,所以,我一 ...
- memcached安装
memcached安装 一.安装gcc # yum -y install gcc 二.安装libevent # wget http://www.monkey.org/~provos/libevent- ...
- 利用JS制作简便计算器
var d; var a=prompt("请输入数字"); a=parseInt(a); if(isNaN(a)){ alert("請輸入正確數字"); } e ...
- WinForm开发框架【细化权限至操作按钮】
有不少园友经常问我程序有没有更新,真的很抱歉,最近因为工作原因一直很忙,导致程序有很长时间都没有更新了,首先在这里感谢关心俺的朋友们. 这几天好好看了一下原来的程序,还有很多地方需要改进,比如操作数据 ...
- React 高级指南小记
接上篇,还是笔记,还是干货. 深入 JSX 如果使用 JSX 表达式 <Foo />,Foo 必须在范围内,因为这些标签被编译为对指定变量的直接引用. 由于 JSX 编译为对 React. ...
- Cocos2d-x 核心概念 - 坐标系(UI.OpenGL.世界坐标系.模型坐标系)
UI坐标系与OpenGL坐标系 UI坐标就是Android和IOS等应用开发时候使用的二维坐标系,原点在左上角 OpenGL坐标是三维坐标,由于Cocos2d-x Lua 底层采用OpenGL渲染,因 ...
- Jquery Json 下拉联动
#region dataTable转换成Json格式 /// <summary> /// dataTable转换成Json格式 /// </summary> /// <p ...
- Photoshop投影和CSS box-shadow转换
"混合模式":Photoshop提供了各式各样的混合模式,但是CSS3阴影只支持正常模式(normal). "颜色(color)":阴影颜色.对应于CSS3阴影 ...
- 实验二 用C语言表示进程的调度
实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...