mydumper 备份工具介绍与使用

开源工具 mydumper 同样适用于 MySQL 的逻辑备份。之前一直没有正式体验过,只是听说比 mysqldump 要快很多,具体使用效果如何, 一起来看下吧。

1. mydumper 简介

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

官网地址:https://launchpad.net/mydumperGitHub 地址: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 也可以自定义很多参数,参考官方介绍,以下简要说明部分常用的参数。

mydumper 备份工具介绍与使用

看完这些参数,是不是想跃跃欲试尝试下啦,下面我们来具体使用下,感受下效果如何。

# 备份全部数据库 
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 工具的小伙伴可以参考下。

转载作品,原作者:Simon,文章来源:https://xie.infoq.cn/article/a61b47d5c138a87715fd77644

(0)
打赏 微信赞赏 微信赞赏 支付宝赞赏 支付宝赞赏
上一篇 2022-01-21 14:59
下一篇 2022-02-06 21:59

相关推荐

  • MySQL 配置文件 my.cnf / my.ini 逐行详解

    MySQL 配置文件的意义充分理解 MySQL 配置文件中各个变量的意义对我们有针对性的优化 MySQL 数据库性能有非常大的意义。我们需要根据不同的数据量级,不同的生产环境情况对…

    MySQL 2022-01-09
    1.5K0
  • 做好mysql运维,必须熟练掌握备份和恢复,实战一次不行多来几次

    一、 备份恢复策略 进行备份或恢复操作时需要考虑一些因素: 1、确定要备份的表的存储引擎是事务型还是非事务型,两种不同的存储引擎备份方式在处理数据一致性方面是不太一样的。 2、确定…

    MySQL 2021-12-05
    1.2K0
  • MySQL基本数据类型与约束条件

    数据存储的演变 # 方向: 朝着更加统一和方便管理 数据库的发展史 # 由本地保存逐步演变为线上保存 数据库的本质 # 本质上就是一款CS架构的软件 “”” 数据库: 在不同场景可…

    2022-02-20 MySQL
    1.4K0
  • DBSyncer 一款开源的数据同步中间件

    DBSyncer是一款开源的数据同步中间件,提供Mysql、Oracle、SqlServer、Elasticsearch(ES)、Kafka、SQL(Mysql/Oracle/SqlServer)等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。

    2022-02-25 MySQL
    2.3K0
  • mysql自动备份

    为了避免服务挂掉,数据库无法恢复,搞个脚本做数据库备份。核心的东西就是一个命令:mysqldump

    MySQL 2022-02-17
    1.3K0
  • 告别复杂配置:1Panel 实现 MySQL 主从复制一键部署

    什么是MySQL数据库主从复制 在多服务器业务环境中,数据库往往成为系统性能的瓶颈点。想象这样的场景: 当所有请求同时涌向单一数据库,响应延迟的概率增加了,甚至有服务中断的可能。 …

    2025-10-22
    2240

发表回复

登录后才能评论
扫码了解
扫码了解
反馈建议
分享本页
返回顶部