美文网首页LinuxpythonMySQL
mydumper备份工具介绍与使用

mydumper备份工具介绍与使用

作者: K_un | 来源:发表于2021-09-22 13:59 被阅读0次

    前言:

    前面文章有介绍过 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 工具的小伙伴可以参考下。 要想用好这个工具还需要自己积累实战经验,只有用得多了才会更顺手。

    相关文章

      网友评论

        本文标题:mydumper备份工具介绍与使用

        本文链接:https://www.haomeiwen.com/subject/vkzwgltx.html