设为首页 加入收藏

TOP

MySQL逻辑备份工具-mydumper(一)
2017-03-01 08:15:28 】 浏览:513
Tags: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/dbback

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇RedHat Linux上MySQL主从建立 下一篇使用Sentinel机制实现Redis高可用..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目