乐趣区

关于mysql:mydumper备份工具介绍与使用

前言:

后面文章有介绍过 MySQL 零碎自带的 mysqldump 备份工具的应用,其实还有一个开源工具 mydumper 同样实用于 MySQL 的逻辑备份。之前始终没有正式体验过,只是据说比 mysqldump 要快很多,具体应用成果如何,一起来看下吧。

1. mydumper 简介

mydumper 是一款社区开源的逻辑备份工具。该工具次要由 C 语言编写,目前由 MySQL、Facebook 等公司人员开发保护。

官网地址:https://launchpad.net/mydumper
GitHub 地址:https://github.com/maxbube/mydumper

参考官网介绍,mydumper 次要有以下几点个性:

  • 反对多线程导出数据,速度更快。
  • 反对一致性备份。
  • 反对将导出文件压缩,节约空间。
  • 反对多线程复原。
  • 反对以守护过程模式工作,定时快照和间断二进制日志。
  • 反对依照指定大小将备份文件切割。
  • 数据与建表语句拆散。

2. mydumper 装置

装置办法大略有两种,一种是编译装置,一种是 yum 间接装置 rpm 包。上面以 CentOS 零碎为例,简略展现下装置办法:

# 1. 编译装置
[root@localhost ~]# yum -y  install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake
[root@localhost ~]# wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
[root@localhost ~]# tar zxf mydumper-0.9.1.tar.gz
[root@localhost ~]# cd mydumper-0.9.1/
[root@localhost mydumper-0.9.1]# cmake .
[root@localhost mydumper-0.9.1]# make
[root@localhost mydumper-0.9.1]# make install
# 装置实现后生成两个二进制文件 mydumper 和 myloader 位于 /usr/local/bin 目录下
[root@localhost bin]# ls /usr/local/bin/
mydumper  myloader

# 2. 间接装置 rpm 包
# rpm 包地址:https://github.com/maxbube/mydumper/releases 请依据本人的零碎类型抉择下载版本
[root@localhost ~]# yum install https://github.com/maxbube/mydumper/releases/download/v0.10.7-2/mydumper-0.10.7-2.el7.x86_64.rpm
# 装置实现后生成两个二进制文件 mydumper 和 myloader 位于 /usr/bin 目录下 

3. mydumper 应用

装置实现后,能够很显著看出,mydumper 和 myloader 是绝对应的一组可执行程序,二者的作用别离是导出数据与导入数据。咱们先来看下如何应用 mydumper 来备份数据。

首先执行 mydumper –help 命令能够获取帮忙信息,同 mysqldump 相似,mydumper 也能够自定义很多参数,参考官网介绍,以下简要阐明局部罕用的参数。

参数名 缩写 含意
–user -u 备份所应用的用户
–pasword -p 连贯所用的用户明码
–host -h MySQL 服务端地址
–port -P MySQL 端口号
–threads -t 开启的备份线程数,默认是 4
–database -B 要备份的数据库,不指定则备份所有库
–tables-list -T 须要备份的表,名字用逗号隔开
–outputdir -o 备份文件输入的目录
–statement-size -s 生成的 insert 语句的字节数,默认 1000000
–rows -r 将表按行宰割,指定这个选项会敞开 –chunk-filesize
–chunk-filesize -F 将表按大小宰割时,指定宰割大小,单位是 MB
–regex -x 应用正则表达式匹配 ’db.table’
–compress -c 压缩输入文件
–ignore-engines -i 疏忽的存储引擎
–no-schemas -m 不备份表构造
–no-data -d 不备份表数据
–triggers -G 备份触发器
–events -E 备份事件
–routines -R 备份存储过程和函数
–no-views -W 不备份视图
–no-locks -k 不应用长期共享只读锁,应用这个选项会造成数据不统一
–daemon -D 启用守护过程模式,守护过程模式以某个距离不间断对数据库进行备份
–where 只导出抉择的数据

看完这些参数,是不是想蠢蠢欲动尝试下啦,上面咱们来具体应用下,感触下成果如何。

# 备份全副数据库 
mydumper -u root -p 123456 -o /mysql_backup/all/
# 全量备份 会备份 mysql、sys 零碎库及其他自建库

# 备份全副数据库 蕴含触发器、事件、存储过程及函数
mydumper -u root -p 123456 -G -R -E -o /mysql_backup/all2/

# 备份指定库
mydumper -u root -p 123456 -G -R -E -B db1 -o /mysql_backup/db1/

# 应用正则 排除零碎库
mydumper -u root -p 123456 -G -R -E --regex '^(?!(mysql|sys))' -o /mysql_backup/all3

# 备份指定表
mydumper -u root -p 123456 -B db1 -T tb1,tb2 -o /mysql_backup/tb/

# 只备份表构造
mydumper -u root -p 123456 -d -B db1 -o /mysql_backup/nodata/

# 只备份表数据
mydumper -u root -p 123456 -m -B db1 -o /mysql_backup/noschema/

# 压缩备份某个表
mydumper -u root -p 123456 -B db1 -T tb1 -c -o /mysql_backup/compress/

以上是针对不同场景给出的相应备份语句,理论执行后,咱们发现:mydumper 备份会产生多个文件,比方建库、建表、表数据等都别离在不同文件中。以 db1 库的全备为例,来看下备份出的文件命名规定及作用。

[root@localhost ~]# cd /mysql_backup/db1/
[root@localhost db1]# tree .
.
├── db1-schema-create.sql
├── db1-schema-post.sql
├── db1.tb1.metadata
├── db1.tb1-schema.sql
├── db1.tb1-schema-triggers.sql
├── db1.tb1.sql
├── db1.tb2.metadata
├── db1.tb2-schema.sql
├── db1.tb2.sql
├── db1.tb3.metadata
├── db1.tb3-schema.sql
├── db1.view1-schema.sql
├── db1.view1-schema-view.sql
└── metadata

0 directories, 14 files

可能各个版本备份进去的文件命名稍有不同,从文件命名能够较为显著的看出该文件的内容,大抵总结下文件命名规定如下:

  • dbname-schema-create.sql:建库语句。
  • dbname-schema-post.sql:蕴含事件、存储过程及函数创立语句(若存在则有该文件)。
  • dbname.tbname.metadata:记录这个表的行数。
  • dbname.tbname-schema.sql:此表的创立语句。
  • dbname.tbname-schema-triggers.sql:创立触发器语句(若该表存在触发器 则有此文件)。
  • dbname.tbname.sql:该表的插入数据语句(若该表为空 则不存在此文件)。
  • dbname.viewname-schema.sql:创立视图语句(只列举出视图字段)。
  • dbname.viewname-schema-view.sql:创立视图的真正语句。
  • metadata:记录开始及完结备份的工夫以及二进制日志地位。

总结:

本篇文章简略介绍了 mydumper 备份工具的装置及应用办法,作为本人学习的一种记录,心愿本篇文章能对各位有所帮忙,想体验 mydumper 工具的小伙伴能够参考下。要想用好这个工具还须要本人积攒实战经验,只有用得多了才会更棘手。

退出移动版