上一篇文章中我们写了使用XtraBackup备份mysql数据库,他的备份速度也是比较快。

但是问题来了,我们的系统在5月初,刚刚结束愉快的劳动节。就开始较大频率卡顿,开始是部分功能开始卡顿,没过几天,整个系统卡顿严重。几乎不能正常使用了,已经很严重影响了我们的正常业务操作了。

此时我们做了几个处理,优化代码,优化部分慢查询,升级服务器,升级数据库版本。本文主要讲述的是在把数据库从5.7升级到8.0之后xtraBackup无法正常备份后的替代备份方案,具体的系统优化流程后面我再写下来。

在数据库升级过后重新配置了数据库备份的脚本,同样通过XtraBackup进行备份数据库。但是当我过了几天后去检查数据库备份情况,发现并没有正常备份数据库。

经过检查后发现未正常备份的原因是xtraBackup进行备份数据库的命令中需要去读取mysql数据库的配置文件,而我们采用docker的形式部署了mysql8.0。所以我分析是以下几个问题导致无法进行正常备份:

无法正确读取数据库配置文件

我使用的xtraBackup2.4不支持mysql8.0及以上的数据库备份

使用最新版本的XtraBackup进行尝试备份后也无法正常备份,我暂时放弃了他!!我还会来的,毕竟XtraBackup还是比较好用的!

image

写了这么多终于到正文了。

对比及尝试了几个备份工具后,选择使用mydumper进行逻辑备份。mydumper与mysqldump原理比较类似,都是通过查询数据库后将相关表结构及数据以sql的形式保存下来。但是mydumper有以下几个特点:

多线程备份

c语言编写,性能比较优秀

备份速度也比较快,我们数据库在64线程耗时15分钟左右

输出管理方便,每个表一个sql文件,可单独恢复数据表

二、如何安装

三、如何备份数据库

mydumper同样使用命令行进行数据库备份,我采用的备份方式是写好脚本后通过服务器自带的定时任务进行数据库备份。

备份语法:

mydumper -u 用户 -p 密码 -P 端口 -h 地址 -B 数据库 -o 备份地址 -v 日志级别 -t 线程数

eg

mydumper -u copy -p pwd -P 33066 -h 192.168.1.214 -B test -o /home/data/eplusdb/backup_eplus$(date +%Y%m%d) -v 3 -t 64

参数详解:

-B, --database 要备份的数据库,不指定则备份所有库

-T, --tables-list 需要备份的表,名字用逗号隔开

-o, --outputdir 备份文件输出的目录

-s, --statement-size 生成的insert语句的字节数,默认1000000

-r, --rows 将表按行分块时,指定的块行数,指定这个选项会关闭

-F, --chunk-filesize 将表按大小分块时,指定的块大小,单位是 MB

-c, --compress 压缩输出文件

-e, --build-empty-files 如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件)

-x, --regex 是同正则表达式匹配 'db.table'

-i, --ignore-engines 忽略的存储引擎,用都厚分割

-m, --no-schemas 不备份表结构

-k, --no-locks 不使用临时共享只读锁,使用这个选项会造成数据不一致

--less-locking 减少对InnoDB表的锁施加时间(这种模式的机制下文详解)

-l, --long-query-guard 设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出)

--kill-long-queries 杀掉长查询 (不退出)

-b, --binlogs 导出binlog

-D, --daemon 启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份

-I, --snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下

-L, --logfile 使用的日志文件名(mydumper所产生的日志), 默认使用标准输出

--tz-utc 跨时区是使用的选项

--skip-tz-utc 同上

--use-savepoints 使用savepoints来减少采集metadata所造成的锁时间,需要 SUPER 权限

-h, --host 连接的主机名

-u, --user 备份所使用的用户

-p, --password 密码

-P, --port 端口

-S, --socket 使用socket通信时的socket文件

-t, --threads 开启的备份线程数,默认是4

-C, --compress-protocol 压缩与mysql通信的数据

-V, --version 显示版本号

-v, --verbose 输出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为 2

四、如何还原数据库

数据库还原使用的关键字是:myloader

还原语法:

myloader -u 用户 -p 密码 -h 地址 -P 端口 -B 数据库 -d 还原目录 -v 日志级别 -t 线程数

eg:

myloader -u copy -p 123456 -h 192.168.1.214 -P 33066 -B test -d /home/data/backup20200718 -v 3 -t 82

参数详解:

-d, --directory 备份文件的文件夹

-q, --queries-per-transaction 每次事物执行的查询数量,默认是1000

-o, --overwrite-tables 如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构

-B, --database 需要还原的数据库

-e, --enable-binlog 启用还原数据的二进制日志

-h, --host 主机

-u, --user 还原的用户

-p, --password 密码

-P, --port 端口

-S, --socket socket文件

-t, --threads 还原所使用的线程数,默认是4

-C, --compress-protocol 压缩协议

-V, --version 显示版本

-v, --verbose 输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

五、总结

使用mydumper进行数据库备份过程中,整库备份比较快,但是说是话整库恢复就比较慢了。我定义了同样的64个线程数进行数据库备份,但是我使用64线程进行数据库恢复时,差不多花了5个小时,特别是数据量较大的表恢复特别慢。我也还在调研有没有更适合更快捷的备份工具,如果大家有比较号的备份工具的请多多推荐!!

mysql mydumper_mysql数据库备份之mydumper相关推荐

  1. mysql数据库压缩备份_MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份)...

    本文主要向大家介绍了MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 备份MySQL数据库的命令 复制代 ...

  2. mysql超大数据库备份

    Xtrabackup工具是一个对InnoDB做数据的备份工具,支持全亮备份和增量备份.不支持MyISAM数据库的备份 但是Xtrabackup有一个工具innobackupex,它可以支持MyISAM ...

  3. MySQL:数据库备份批处理脚本

    @echo off echo 如果备份过程遇到任何问题请联系 感谢您的使用title MYSQL数据库备份进行中,请不要关闭该窗口 color 0c echo. echo MySQL数据库备份echo ...

  4. MySQL 单个数据库备份还原

    数据库备份还原 MYISAM:  --lock-all-tables INNODB: --single-transaction #单个数据库备份及压缩 mysqldump -uroot -pmysql ...

  5. CC00073.bigdatajava——|JavaMySQL索引/存储过程/触发器.V14|——|MySQL.v14|数据库备份_SQL_Yog方式|

    一.数据库备份&还原 ### --- 数据库备份&还原--> 备份的应用场景 在服务器进行数据传输.数据存储和数据交换,就有可能产生数据故障. --> 比如发生意外停机或存 ...

  6. 阿里云 mysql 导出数据库备份_导出整个mysql数据库备份

    mysql和mssql的备份和恢复数据的方法 mysql数据库的备份方法可以用 导出要用到MySQL的mysqldump工具,基本用法是: shell> mysqldump [OPTIONS] ...

  7. mysql zrm_mysql数据库备份—ZRM

    ZRM是Zmanda Recovery Manager的缩写,这是一款备份mysql的开源软件. 一.安装 #yum install -y MySQL-zrm 二.创建备用用户 #mysql -uro ...

  8. ubuntu下mysql整个数据库备份与还原

    [root]# /usr/bin/mysqldump -h127.0.0.1 -uusername -ppassword databasename >/opt/share/1/backup.sq ...

  9. 【MySQL】【备份】mydumper安装与使用细节

    mydumper 简介: 由percona公司的Max Bubenick与facebook公司的Domas Mituzas共同维护开发,也是个10年历史的工具了, 与同为逻辑备份的mysqldump工 ...

最新文章

  1. Mysql事务结合spring管理
  2. 文巾解题455. 分发饼干
  3. 《计算机组成原理》_学习笔记(二)
  4. geek_How-To Geek正在寻找安全作家
  5. DevOps组织IO专业人员新角色分析与技能提升
  6. HeadFirstJava——8_接口与抽象类
  7. 如何在Linux系统下配置JDK环境变量
  8. yui3:widget
  9. 链路聚合的配置(思科)
  10. 华为自研OS操作系统,今秋是否真的会面市?
  11. c语言房屋程序运行截图,c程序截取屏幕截图
  12. JS 关于事件冒泡,事件捕获,阻止事件冒泡,取消默认事件
  13. AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)
  14. jdbc连接oracle11g
  15. 关于timestamp时间范围
  16. inter处理器(CPU)的分类
  17. w7计算机u盘在哪里,win7电脑无法发现u盘怎么解决
  18. 【编译原理】Compiler_Stanford University 编译原理课程地址
  19. 《空气动力学基础》——第三章 无黏不可压缩流动基础
  20. vis.js network,基本教程

热门文章

  1. copy of an AVPacket structure
  2. invalid argument 0: Sizes of tensors must match except in dimension 0. Got 1
  3. python scipy卷积 图像卷积
  4. linux mysql 类型_常用的MySQL数据类型
  5. php爬取ckplayer,CKplayer站外调用示例附最终效果
  6. amd同步多线程_AMD下一代锐龙APU实锤!Zen3、RDNA2绝配
  7. clickhouse 航空数据_趣头条基于Flink+ClickHouse的实时数据分析平台
  8. oracle数据库从关闭到启动,Oracle数据库的启动和关闭详细过程
  9. matlab从flove,Matlab玩出新高度,变身表白女友神器_善良995的博客-CSDN博客
  10. python之蓝图blueprint浅析