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的一些备份技巧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下