6.Mydumper和Myloader备份恢复

1.前言

  Mydumper是一个针对mysql和Drizzle的高性能多线程备份与恢复工具,其开发人员主要来自Mysql、Facebook、Skysql公司

2.Mydumper特点

  • 采用轻量C语言编写,使用glibc库
  • 执行速度比mysqldump大约快10倍
  • 支持事务性表和非事务性表一致的快照
  • 支持快速的文件压缩
  • 支持导出binlog(在新版本中已经不能备份binlog)
  • 支持到备份文件切块
  • 多线程 备份(因为是多线程逻辑备份,备份后会生成多个备份文件)
  • 多线程恢复(适用于0.2.1以上版本)
  • 在备份时对Myisam表施加FTWRL(flush tables with read lock),会阻塞DML语句
  • 支持以守护进程的方式工作,支持定时快照
  • 基于GNU GPLv3协议开源

在Mydumper安装包中包含两个可执行程序,即mydumper和myloader,前者用于将数据库中数据备份为文本文件,后者用于恢复mydumper备份的文本文件到数据库中

 3.Mysqdump安装

  安装依赖包

yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake

 4.下载源码包:

wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz

 下载并安装二进制包

 yum install https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper-0.10.1-2.el7.x86_64.rpm

5.解压安装

tar zxvf mydumper-0.9.1.tar.gz
cd mydumper-0.9.1/
cmake .
make
make install

 6.安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下

   查看是否正常:

mydumper --help

2.实战

  2.1导出/导入全库 

## 导出全库
mydumper --host=ip --port=xxxx --user=xxxx --password=xxxx --events --routines --triggers --less-locking --chunk-filesize=1024 --complete-insert --outputdir=/data/dump

## 导入全库
 
myloder --host=ip --port=xxxx --user=xxxx --password=xxxx –directory=/tmp --enable-binlog 

  2.2 导出/导入指定的库 

##导出指定的数据库
mydumper --host=ip --port=xxxx --user=xxxx --password=xxxx --events --routines --triggers --less-locking --chunk-filesize=1024 --complete-insert --database 数据库名 --outputdir=/data/dump

##导入指定的数据库
myloder --host=ip --port=xxxx --user=xxxx --password=xxxx --database 数据库名 –directory=/tmp --enable-binlog 

  2.3单表备份与恢复

## 导出指定数据库下的table1表下的数据
mydumper --host=ip --port=xxxx --user=xxxx --password=xxxx --events --routines --triggers --less-locking --chunk-filesize=1024 --complete-insert --database 数据库名 -T table1 --outputdir=/data/dump

## 导入到指定的数据库下
myloder --host=ip --port=xxxx --user=xxxx --password=xxxx --database 数据库名 -s 源库名 –directory=/tmp --enable-binlog --overwrite-tables

  2.4.快照备份与恢复

  mydumper工具使用-D ,--daemon选项启动后台进程,并结合--snapshot-interval=60选项执行快照间隔时间,以及--logfile=dump.log选项指定将信息输出到一个文件中,而不是打印到标准输出上。

mydumper  --defaluts-file=xxx   -G -E -R -D -L /var/log/mydumer.log -I 60 --skip-tz-utc --complete-insert -u xxx -p xxx -h xxxx -C -o /data/backup/mydumper

  2.5 mydumper参数说明

--events 备份事件
--routines 备份存储过程和函数
--triggers  备份触发器
--less-locking 减少对InnoDB表的锁施加时间
--chunk-filesize 将表按大小分块时,指定的块大小,单位是 MB
--complete-insert 使用完整的insert语句(包含列名称)。
--outputdir 导出的目录
-D 守护进程模式
-L 表示将输出信息打印到指定的日志文件中,如果没有指定日志we年则默认打印到标准输出上,通常在守护进程模式下使用
-C 指定使用压缩协议连接Mysql,即压缩数据进行传输。
-m 表示不备份表结构
-d 表示不备份数据

  2.6myloader参数说明

--enable-binlog 启用还原数据的二进制日志
--overwrite-tables  如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构

 

3.补充:

  过滤特定库,如本来不备份mysql及test库

mydumper -u leshami -p pwd -B sakila --regex '^(?!(mysql|test))' -o /tmp/bak

  参考文章https://blog.csdn.net/leshami/article/details/46815553

   该参考文章可以重点看一下:主要关于Mydumper的一些备份技巧

 

 

  

 

    

posted on 2021-08-16 00:01  太白金星有点烦  阅读(285)  评论(0编辑  收藏  举报

导航