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 ...
随机推荐
- 简单讲解MVC(视图/模型/控制器)
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...
- cocos IDE 编译lua 游戏程序的环境配置
因为毕业设计需要用cocosIDE编译一个apk在手机上跑,所以搭建这个环境还是需要的. ps:是针对win系统的. 需要的工具: 1.cocosIDE:点击链接 (ps:据说这个软件设计有点反人类, ...
- SAP Query工具(一 Overview)
SAP提供了3种Query工具 1,SAP Query 2,InfoSet (Ad Hoc) Query 3,QuickViewer 一般说Query是指第一种,SAP Query 1,SAP Que ...
- 显示Class 'Think\Controller\FuController' not found和Call to a member function assign() on a non-object 的错误问题
Class 'Think\Controller\FuController' not found 错误位置 FILE: D:\wamp\www\tinkphp\Application\Come\Cont ...
- Excel 2007 批量删除隐藏的文本框
该方法取自百度知道,该朋友给出函数,我详细写一下方法. 打开有文本框的excel文件. 按 Alt+F11 打开编辑器. 将下面的函数复制进去: Sub deltxbox()Dim s As Shap ...
- 30-React JSX IN DEPTH
JSX IN DEPTH JSX 从根本上说,JSX只是提供了语法糖React.createElement(component, props, ...children)的功能.以下JSX代码: < ...
- Cardboard开发教程:使用Unity制作Cardboard全景图片浏览器
这两年,虚拟现实(VR)领域很火,很多人认为这将会是下一个手机般改变人们生活的技术.目前全球最领先的还是Facebook旗下的Oculus,HTC VIVE,以及最流行的Cardboard.国内多家厂 ...
- ubuntu一些常用的命令
1.docker里的ubuntu不知道密码,更新密码 sudo passwd 2.解压zip文件 unzip xx.zip 3.安装LAMP (1)sudo apt-get install apach ...
- 记SpannableString设多少span时注意事项
public void setSpan(Object what, int start, int end, int flags) { } 这个方法里的第一个参数,也就是一些span的对象,不能重复使用. ...
- 如何解决sublime text 2总是在新窗口中打开文件及文件夹
如何在原窗口打开文件 具体设置:Preferences -> Settings – Default -> 搜索open_files_in_new_window,将其true 改为 fals ...