mydumper备份mysql数据库

mydumper介绍

MySQL自身的mysqldump工具支持单线程工作,依次一个个导出多个表,没有一个并行的机制,这就使得它无法迅速的备份数据。

mydumper作为一个实用工具,能够良好支持多线程工作,可以并行的多线程的从表中读入数据并同时写到不同的文件里,这使得它在处理速度方面快于传统的mysqldump。其特征之一是在处理过程中需要对列表加以锁定,因此如果我们需要在工作时段执行备份工作,那么会引起DML阻塞。但一般现在的MySQL都有主从,备份也大部分在从上进行,所以锁的问题可以不用考虑。这样,mydumper能更好的完成备份任务。

 

mydumper特性

多线程备份
因为是多线程逻辑备份,备份后会生成多个备份文件
备份时对MyISAM表施加FTWRL(FLUSH TABLES WITH READ LOCK),会阻塞DML语句
保证备份数据的一致性
支持文件压缩
支持导出binlog
支持多线程恢复
支持以守护进程模式工作,定时快照和连续二进制日志
支持将备份文件切块
 

mydumper的安装

mydumper使用c语言编写,使用glibc库

mydumper安装所依赖的软件包
yum install glibc zlib pcre pcre-devel gcc gcc-c++ cmake make -y

安装依赖软件包,将mysql客户端库文件路径添加至/etc/ld.so.conf, 如/usr/local/mysql/lib

wget https://github.com/maxbube/mydumper/releases/download/v0.9.5/mydumper-0.9.5-2.el7.x86_64.rpm
 
安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下


主要步骤概括

    (1)主线程 FLUSH TABLES WITH READ LOCK, 施加全局只读锁,以阻止DML语句写入,保证数据的一致性
    (2)读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中,以供即使点恢复使用
    (3)N个(线程数可以指定,默认是4)dump线程 START TRANSACTION WITH CONSISTENT SNAPSHOT; 开启读一致的事物
    (4)dump non-InnoDB tables, 首先导出非事物引擎的表
    (5)主线程 UNLOCK TABLES 非事物引擎备份完后,释放全局只读锁
    (6)dump InnoDB tables, 基于事物导出InnoDB表
    (7)事物结束
 

备份所生成的文件

所有的备份文件在一个目录中,目录可以自己指定
目录中包含一个metadata文件
    记录了备份数据库在备份时间点的二进制日志文件名,日志的写入位置,

    如果是在从库进行备份,还会记录备份时同步至主库的二进制日志文件及写入位置

每个表有两个备份文件:
    database.table-schema.sql 表结构文件

    database.table.sql 表数据文件

    如果对表文件分片,将生成多个备份数据文件,可以指定行数或指定大小分片

 

mydumper和myloader的使用

mydumper参数


-B, --database      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值