MySQL逻辑备份利器-mydumper
关于mydumper的简介和下载请访问:https://launchpad.net/mydumper
简言之,mydumper是多线程逻辑备份,对于表和数据量很大的情况下,建议使用mydumper提高备份效率,比mysqldumper要快很多。
我为什么要用mydumper?是基于某个需求,比如我需要把某个库下的所有按日期分表的表备份并导入到新实例?如何实现?
table_20170101
table_20170102
......
table_20171231 一共三百多张表
开始我去尝试mysqldump,看到参数:-B [table1,table2......table n] ,多么厚颜无耻的说咱支持多个指定表备份,5个以下完全接受,但是我要备份1000个表,你要让我在那列1000个吗?我始终不相信,mysqldump怎么能不支持表名模糊匹配呢?于是我就使用下面的写法:
mysqldump -uxx -p -B xx table_* > backup.sql
执行没有报错,惊喜,我就说嘛,怎么能不支持表的模糊匹配呢!!当我打开backup.sql文件时,膀胱都气炸了,尼玛直接备份了某个数据库下所有的表了。忽视我的模糊匹配嘛。从此对mysqldump没有好印象了,(当然也可能是我能力有限,还没有找到mysqldump的多表备份方式)。
转投mydumper,当我看到-x参数时,又是一喜!看看人家,写的多么清晰,于是开始使用:
一、mydumper安装:
# yum install glib2-devel mysql-devel zlib-devel pcre-devel
# wget http://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
# tar zxvf mydumper-0.9.1.tar.gz -C ../software/
# cmake .
# make
# make install
二、使用mydumper
1、刚用时报错:
/usr/local/bin/myloader: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
解决方法:
# locate libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18.1.0
# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
# ldconfig
2、重要参数介绍:
-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指向该备份。
3、用例
# 将某个库下日表备份
mydumper -x "new_broker.broker_action_log_*" -o /data/dbbackup/tmp/ --host='xxxx' --user='xxxx' --password='xxx' --port='3306' --logfile='/data/dbbackup/tmp/mydumper.log' --threads=6 -v 3 #将备份数据恢复到新数据库broker_biz_log中
myloader -t 6 -v 3 --host='xxxx' --user='xxxx' --password='xxxx' --port='3306' -B broker_biz_log --directory='/data/dbbackup/tmp'
4、使用误区
需求1:备份多个数据库下所有表
【错误案例,有部分库导出失败】
nohup mydumper -x "(test_db.*)|(test.*)|(mysql.*)" -o /data/dbbackup/mydumper/ --host='192.168.1.20' --user='secret' --password='xx' --port='3306' --logfile='/data/dbbackup/mydumper/mydumper.log' --threads=6 -v 3 &
【正确的写法】
nohup mydumper -x "(test_db|test|mysql).*" -o /data/dbbackup/mydumper/ --host='192.168.1.20' --user='secret' --password='xx' --port='3306' --logfile='/data/dbbackup/mydumper/mydumper.log' --threads=6 -v 3 &
需求2:备份所有数据库下所有表
mydumper -o /data/dbbackup/mydumper/ --host='ip' --user='secret' --password='xx' --port='3306' --logfile='/data/dbbackup/mydumper/mydumper.log' --threads=6 -v 3
[myloader]
--将/data/dbbackup/mydumper上的所有库都恢复
【正确的写法】
nohup myloader -t 6 -v 3 -u secret -p xxx -S /tmp/mysql.sock --directory='/data/dbbackup/mydumper' &
【值得注意的是: myloader是以.为分隔符来截取库名的,所以如果本身库的名字中包含.的,那么会失败】
MySQL逻辑备份利器-mydumper的更多相关文章
- MySQL 逻辑备份工具
		
简介: Mydumper.Myloader 是一个第三方的.开源的 MySQL 逻辑备份工具. 支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyIS ...
 - (4.12)mysql备份还原——mysql逻辑备份之mysqldump
		
关键词:mysql逻辑备份介绍,mysqldump,mysqldump最佳实践 我的相关文章:https://www.cnblogs.com/gered/p/9721696.html 正文 1.mys ...
 - 图解MySQL逻辑备份的实现流程
		
1. 摘要 数据作为一家公司的重要资产,其重要程度不言而喻.数据库为数据提供存取服务,担任着重要的角色,如果因数据误删.服务器故障.病毒入侵等原因导致数据丢失或服务不可用,会对公司造成重大损失,所以数 ...
 - MySQL多线程备份工具:mydumper
		
MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper ...
 - MySQL 逻辑备份mysqldump&mysqlpump&mydumper原理解析
		
目录 准备 mysqldump备份 mysqlpump备份 mydumper备份 想弄清除逻辑备份的原理,最好的办法是开启general_log,一探究竟 准备 创建用户 CREATE USER IF ...
 - mysql逻辑备份mydumper
		
mydumper是一个针对MySQL的高性能多线程备份和恢复工具,它提供了并发备份功能,备份效率有很大提高. 安装mydumper yum安装 # rpm -ivh https://github. ...
 - mysql逻辑备份与还原工具mysqldump
		
(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...
 - MySQL逻辑备份into outfile
		
MySQL 备份之 into outfile 逻辑数据导出(备份) 用法: select xxx into outfile '/path/file' from table_name; mysql> ...
 - MySQL多线程备份工具mydumper
		
mydumper是一个针对MySQL和Drizzle的高性能多线程的备份和恢复工具.此工具的开发人员分别来自MySQL.Fackbook.SkySQL公司,目前已经有一些大型产品业务测试并使用了该工具 ...
 
随机推荐
- [Angular Tutorial] 12 -Event Handlers
			
在这一步中,您将会在电话细节页面添加一个可点击的电话图片转换器. ·电话细节页面展示了当前电话的一张大图片和几张相对较小的略图.如果我们能仅仅通过点击略图就能把大图片换成略图就好了.让我们看看用Ang ...
 - BZOJ3270: 博物馆
			
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 269 Solved: 147[Submit][Status][Discuss] ...
 - ora-12154
			
64位oracle,32位pl/sql pl/sql配置完之后,一直报错: ora-12154 配置环境变量ORACLE_HOME:D:\softInstrall\oracle\product\11. ...
 - OC--设置视图控制器,从导航栏的下边缘开始
			
self.edgesForExtendedLayout = UIRectEdgeNone;
 - fold change(ratio)
			
fold change 英文简称 : FC 中文全称 : 倍性变化 所属分类 : 生物科学 词条简介 : 一种用于描述两个用于相比的对象数量差异的方法.例如,第一个样本和第二个样本的量是50/10,那 ...
 - PHP新手之学习类与对象(4)
			
五.范围解析操作符(::) 范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员.方法和常量,还可以用于覆盖类中的成员和方法. 当在类的外 ...
 - SQLite存储区的日志模式
			
目录内包含了三个文件xxx.sqlite.xxx.sqlite-shm.xxx.sqlite-wal 默认的日志模式为Write-Ahead Logging(WAL): 支持多个并发读取和一个并发写入 ...
 - social relation & recommender system
			
由于社交网络盛行,现在许多关于推荐系统的研究都考虑了如何使用social relation来改进推荐系统.虽然有很多论文都成功的使用social relation改进了推荐效果,然而,也有一些尝试失败 ...
 - 支持wmv、mpg、mov、avi格式的网页视频播放代码
			
这2天一直在整金网奖的相关项目,比较头大的就是网页视频播放了,需要考虑各种不同格式的视频,然后找相应的视频播放器. 这次使用了2种方法对这些视频进行处理: 1.使用ckplayer网页视频播放器 ck ...
 - swift 导航的使用
			
导航还是有必要来搞一下的!!!!! 这只是一些基本的导航的使用.....感兴趣的猿可以自己去 废话不多 源码奉上 ⬇️ 首先 delegate里面 在 func application(ap ...