首页 > 其他分享 >MyDumper实战分享

MyDumper实战分享

时间:2024-03-30 11:14:28浏览次数:33  
标签:实战 password MyDumper 导出 host user 分享 backup mydumper

一、前言

说起MySQL的逻辑备份,一般大家用的最多的是mysqldump,MySQL官方提供的逻辑导出的工具,简单易用,可以产生一致性备份。但是mysqldump只能单线程导出,导出速度有限。为了提升逻辑备份速度,MySQL官方推出了mysqlpump,支持多线程导出,一定程度上提升了导出速度。但是,mysqlpump只支持表级别的并行导出,并且对于导入的场景无法多线程并行,速度提升有限。mydumper/myloader是由MySQL、Facebook等公司开发的开源mysql数据导出导入工具,多线程导出的并行度不再局限于表,导入时同样也支持多线程,大大提升了数据导出和导入的速度。作为进阶的MySQL DBA,不能只会用mysqldump了,mydumper也应该熟练掌握,本文将分享mydumper的实战技巧。

二、下载安装

mydumper采用C语言编写,可以基于源码编译安装。此外,官方也提供了rpm包安装。

mydumper源码编译安装:
1. 源码包下载
https://github.com/mydumper/mydumper/tags

2. 依赖安装
yum install -y cmake gcc gcc-c++ git make
yum install -y glib2-devel openssl-devel pcre-devel zlib-devel libzstd-devel
yum install -y mysql-devel

3. 编译安装
cmake .
make && make install

4. 编译好后缺少库文件
ln -s /usr/local/mysql/lib/libmysqlclient.so.21.2.31 /usr/lib/libmysqlclient.so.21
ln -s /usr/local/mysql/lib/private/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/mysql/lib/private/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

5.安装成功
#mydumper -V
mydumper v0.15.1-3, built against MySQL 8.0.31 with SSL support

三、常用参数

mydumper常用参数
-B 指定数据库 
-G 导出trigger  
-E 导出event  
-R 导出routine
-m 只导出数据,不导出建库建表语句
-d 仅仅导出建表结构和建库语句  
-c 压缩(gzip)  
-x 正则,比如备份多个指定的库:-x 'test|mysql',比如指定某些库不参与备份:-x '^(?!(sys|mysql))'   
-T 指定表,如-T test.t1  
-t 并发线程数,默认4 
-r 定义行数,按此行数对表进行分块并行导出,该选项会使-F失效
-F 定义将表导出文件进行分块的大小,默认单位是 MB 
-l 设置长查询的阈值,单位s,默认60s  
-K 超过-l设定的时间阈值,则kill阻塞备份进程的会话  
--less-locking 减少对InnoDB表的加锁时间
-k, --no-locks 不执行临时的只读锁,会导致备份不一致  
--trx-consistency-only 代表本次备份只对事务表做一致性保证  
--skip-tz-utc 不加的话,会在dump的时候加上SET TIME_ZONE='+00:00',对于timestamp字段需要加上该选项  
myloader常用参数
-e 导入的时候会记录binlog  
-t 并发线程数,默认也是4 
-o 导入时如果表已存在则drop掉

四、数据迁移实战

以下是mydumper/myloader在几个常用数据迁移场景的命令,可以直接复制使用。mydumper默认按表导出sql文件,也可以直接拿导出的sql文件到数据库中使用source命令导入。

1. 全实例导出与导入
mydumper -h $host -u $user -p $password -G -E -R -o /backup/dumpfile --less-locking   
myloader -h $host -u $user -p $password -d /backup/dumpfile 

2. 单库导出与导入
mydumper -h $host -u $user -p $password -B test2 -o /backup/shemafile --less-locking  
myloader -h $host -u $user -p $password -d /backup/schemafile

3. 指定表导出与导入
mydumper -h $host -u $user -p $password -T test.sbtest1 -o /backup/tablefile --less-locking
myloader -h $host -u $user -p $password -d /backup/tablefile

4. 只导表结构,不导数据
mydumper -h $host -u $user -p $password -B test2 -d -o /backup/ddlfile --less-locking
myloader -h $host -u $user -p $password -d /backup/ddlfile

5. 只导数据,不导表结构
mydumper -h $host -u $user -p $password -T test.sbtest1 -m -o /backup/datafile --less-locking
myloader -h $host -u $user -p $password -d /backup/datafile

6. 单表分块并行导出,并发度8,按一千万行对表分块并行导出
mydumper -h $host -u $user -p $password -T test2.sbtest1 -r 10000000 -t 8 -o /backup/tablefile --less-locking
myloader -h $host -u $user -p $password -d /backup/tablefile

五、其他注意事项

以下是我在使用和研究这个工具中总结的几点注意事项:

1. 实际应用中线上环境大部分都是主从或mgr架构,在主库导入时需要加上-e参数,否则默认是不会记录binlog,主库导入的数据也就不会同步到备库;
2. -t参数可以设置并发的线程数,默认是4。需要注意的是,不加-r或-F参数的情况下,也是按表进行并行导出导入。使用-r或-F参数可以将单表进行分块并行导出导入;
3. 导出时可以加上-c参数对导出结果进行压缩,默认是gizp压缩方式,但会消耗一定的压缩时间;
4. 实际使用中建议加上--less-locking参数,这将把innodb表和非innodb表的导出分开,非innodb表导完后先unlock tables再导innodb表,由于实际使用中几乎很少非innodb表,
这将大大减少全局读锁FTWRL的锁定时间;
5. mydumper提供了-k参数不加FTWRL锁,会导致备份不一致。但实际上导出的时候会把会话的隔离级别设置为REPEATABLE READ,所以理论上对于innodb表的导出仍然是一致性的;
6. 线上环境建议到备库操作,毕竟FTWRL对业务可能产生较大的影响;

标签:实战,password,MyDumper,导出,host,user,分享,backup,mydumper
From: https://www.cnblogs.com/coygfly/p/18105210

相关文章

  • 干货分享│金属板材成形极限FLC测量流程介绍(XTDIC-FLC;三维全场应变测量)
    板料成形是一种材料加工技术,在航空、航天、船舶、汽车等行业领域被广泛应用。板料的成形极限,是衡量板料塑性成形性能的重要指标。以极限应变构成的成形极限图(FLD),常被用于板料受到拉伸、胀形或拉伸胀形结合时能够达到的变形程度,为评价板料成形性能以及改进成形工艺提供技术基础......
  • 深入探讨Docker in Docker:原理与实战指南
    在软件开发和部署中,容器化技术已经成为一个不可或缺的工具。而在使用Docker进行容器化时,有时可能会遇到需要在一个Docker容器中运行另一个Docker容器的情况,这就是所谓的"DockerinDocker"(简称DinD)。本文将深入探讨DockerinDocker的原理和实战指南,帮助读者更好地理解和应......
  • 图像分类实战:深度学习在CIFAR-10数据集上的应用
    1.前言        图像分类是计算机视觉领域的一个核心任务,算法能够自动识别图像中的物体或场景,并将其归类到预定义的类别中。近年来,深度学习技术的发展极大地推动了图像分类领域的进步。CIFAR-10数据集作为计算机视觉领域的一个经典小型数据集,为研究者提供了一个理想的......
  • 原创开发flutter3+getX仿抖音App短视频+直播实战
    前几天有分享一篇flutter3.19+dart3.3+getx实战开发抖音app短视频直播项目,得到了很多开发者的关注,这次就来分享下这个项目的视频讲解演示,希望有更多的小伙伴能喜欢~flutter3-douyin仿抖音app短视频直播flutter3.x_douyin跨平台仿抖音app实战开发flutter3+bitsdojo_w......
  • R语言paste函数、paste0函数将多个输入组合成字符串实战
    R语言paste函数、paste0函数将多个输入组合成字符串实战目录R语言paste函数、paste0函数将多个输入组合成字符串实战#基本语法......
  • R语言dplyr包near函数查看向量对应元素是否相同或者相近实战
    R语言dplyr包near函数查看向量对应元素是否相同或者相近实战目录R语言dplyr包near函数查看向量对应元素是否相同或者相近实战#......
  • .NET分布式Orleans - 8 - 贪吃蛇项目实战(准备阶段)
    到目前为止,Orleans7的核心概念基本已经学完,我准备使用Orleans7做一个项目实战,来总结自己的学习效果。项目效果通过Orleans7来完成一个贪吃蛇游戏,要求如下:可以多人在线玩贪吃蛇可以上/下/左/右改方向贪吃蛇吃完食物,身体长度+1项目暂定架构初步设想,此游戏包括一个Orleans7......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Grid/GridItem)
    ......
  • 【好书推荐3】Python网络爬虫入门到实战
    【好书推荐3】Python网络爬虫入门到实战写在最前面内容简介作者简介目录前言/序言......
  • 【人工智能入门必看的最全Python编程实战(6)】
    ---------------------------------------------------------------------1.AIGC未来发展前景未完持续…1.1人工智能相关科研重要性拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票!!!拥有一篇人工智能科研论文及专利软著竞赛是保研考研......