mydumper的安装与使用

安装

首先去官网https://launchpad.net/mydumper下载对应的版本

 

rpm -qa|grep 检测下面的包是否有未安装的

glib2-devel zlib-devel pcre-devel openssl-devel cmake

有没安装的用yun -y install 安装

解压压缩包:tar -zxvf mydumper-0.9.1.tar.gz

然后继续安装

cd mydumper-0.9.1

cmake .

make

make install

至此安装完成

进入到 cd /usr/local/bin目录

mydumper --help

这时候出现报错

mydumper: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

表面看缺少依赖

确定检查:

这时候能清晰看到这个包没有,知道问题,接下来的处理方式就简单了

找到对应的包:find / -name libmysqlclient.so.20

然后拷贝一份 cp /home/it_tool/mysql/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20

ldconfig

这样就可以解决了

使用

mydumper:多线程备份工具

文件介绍:其生成文件夹一共有四个文件

  • metadata                                                 日志文件
  • db_name-schema-create.sql                  建库文件
  • db_name.tb_name-schema.sql               建表文件
  • db_name.tb_name.sql                             数据文件

 

基础备份:mydumper -u root -p *** -B dumper_test -o /home/backup/

基础恢复:myloader -u root -p *** -d /home/backup

mydumper参数详解:

-B, --database              要备份的数据库,不指定则备份所有库
  -T, --tables-list           需要备份的表,多表用逗号隔开
  -o, --outputdir             备份文件输出的目录
  -s, --statement-size        生成的 insert 语句的字节数,默认 1000000(这个参数不能太小,不然会报 Row bigger than statement_size for tools.t_serverinfo)
  -r, --rows                  将表按行分块时,指定的块行数,指定这个选项会关闭 --chunk-filesize        
  -F, --chunk-filesize        将表按大小分块时,指定的块大小,单位是 MB
  -c, --compress              压缩输出文件(压缩级别为1-9,可以不指定,也可以指定)
  -e, --build-empty-files     如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件)
  -x, --regex                 支持正则表达式匹配'db.table',如mydumper –regex '^(?!(mysql|test))'
  -i, --ignore-engines        忽略的存储引擎,用逗号分割
  -m, --no-schemas            不备份表结构
  -d, --no-data               不备份表数据
  -G, --triggers              备份触发器
  -E, --events                备份事件
  -R, --routines              备份存储过程和函数
  -k, --no-locks              不使用临时共享只读锁,使用这个选项会造成数据不一致
  --less-locking              减少对 InnoDB 表的锁定时间
  -l, --long-query-guard      设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出)
  -K, --kill-long-queries     杀掉长查询 (而不是退出 mydumper)
  -D, --daemon                启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份
  -I, --snapshot-interval     每个备份快照之间的间隔(以分钟为单位),需要 --daemon 选项,默认为 60
  -L, --logfile               使用的日志文件名(mydumper所产生的日志), 默认使用标准输出
  --tz-utc                    设置时区,只有备份应用到不同时区时使用。默认使用 --skip-tz-utc 来关闭该选项
  --skip-tz-utc               见上
  --use-savepoints            使用 savepoints 来减少采集 metadata 所造成的锁时间,需要 SUPER 权限
  --success-on-1146           不增加错误计数,如果表不存在,则警告而不是严重
  --lock-all-tables           锁住实例上所有表,而不是给实例施加 FTWRL
  -U, --updated-since         使用 update_time 来备份最近 U 天内有过更新记录的表
  --trx-consistency-only      Transactional consistency only
  -h, --host                  连接的主机名
  -u, --user                  备份所使用的用户
  -p, --password              密码(不支持交互式输入密码)
  -P, --port                  端口
  -S, --socket                使用 socket 方式备份实例(使用不成功,暂时只成功的使用了基于 host 的方式备份)
  -t, --threads               开启的备份线程数,默认是 4
  -C, --compress-protocol     压缩与 mysql 通信的数据
  -V, --version               显示版本号
  -v, --verbose               输出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为 2

 

myloader参数详解:

-d, --directory                   备份文件的文件夹
-q, --queries-per-transaction     每次事物执行的查询数量,默认是1000
-o, --overwrite-tables            如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
-B, --database                    需要还原的数据库
-e, --enable-binlog               启用还原数据的二进制日志
-h, --host                        主机
-u, --user                        还原的用户
-p, --password                    密码
-P, --port                        端口
-S, --socket                      socket文件
-t, --threads                     还原所使用的线程数,默认是4
-C, --compress-protocol           压缩协议
-V, --version                     显示版本
-v, --verbose                     输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

实操演练

首先,赋予账号只读权限做一个基本的备份

mydumper -h 127.0.0.1 -P 3307 -u mydumper_test -p mydumper_123 -B pt_test  -o /home/backup/pt_test

打开通用日志,可以看到备份的基本操作

 (注:这里的多个Connect代表了开启多个线程

1.这里可以看到备份账号是先查看线程是否有DDL操作,如果没有则加全局锁(注:加全局锁需要账号有reload权限,否则默认会警告加锁失败,这时候就无法保证数据一致性

2.开始事务

3.检查主从信息,获取当前数据库的状态信息,就是数据库当前正在使用的二进制日志及当前执行二进制日志位置,执行了哪些GTID,设置一些session级别的配置项,如隔离级别等

4.查看表状态,建库语句,表数据,建表语句

5.解除全局锁

特别参数:

--no-locks(可以通过当前时间的备份加上备份开始时间之后的二进制日志来做备份恢复,极特别情况会出现数据不一致)

mydumper --no-locks -h 127.0.0.1 -P 3307 -u mydumper_test -p mydumper_123 -B pt_test  -o /home/backup/pt_test

** (mydumper:10719): WARNING **: 15:19:47.371: Executing in no-locks mode, snapshot will notbe consistent

加上--no-lock之后查看通用日志可以发现不加全局锁了

--less-locking

mydumper --less-locking -h 127.0.0.1 -P 3307 -u mydumper_test -p mydumper_123 -B pt_test  -o /home/backup/pt_test

查看通用日志,可以发现与没加参数时接触锁定的时间要早,具体原因还没有研究明白,后续补充

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值