返回顶部
首页 > 资讯 > 数据库 >MySQL Mydumper的工作原理
  • 380
分享到

MySQL Mydumper的工作原理

2024-04-02 19:04:59 380人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Mysql Mydumper的工作原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql Mydumper的工作原理”吧!

这篇文章主要讲解了“Mysql Mydumper的工作原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql Mydumper的工作原理”吧!

⒈在理解Mydumper原理之前,我们先准备记录Mydumper的一些操作
    ①set global general_log=1;
    ②set global log_output='table';
    ③mydumper -B Fish_Adventure -t 2  -o /tmp/backup4
    ④set global general_log=0;

⒉查看通用日志记录(删除了很多没必要的数据)
mysql> select event_time,thread_id,argument from general_log;
+----------------------------+-----------+------------------------------------------------------------------------------------+
| event_time                 | thread_id | argument                                                                           |
+----------------------------+-----------+------------------------------------------------------------------------------------+
| 2018-04-12 18:51:15.561645 |        21 | root@localhost on Fish_Adventure using Socket                                      |
| 2018-04-12 18:51:15.566477 |        21 | SET SESSioN wait_timeout = 2147483                                                 |
| 2018-04-12 18:51:15.566787 |        21 | SET SESSION net_write_timeout = 2147483                                            |
| 2018-04-12 18:51:15.567052 |        21 | SHOW PROCESSLIST                                                                   |
| 2018-04-12 18:51:15.567301 |        21 | FLUSH TABLES WITH READ LOCK                                                        |
| 2018-04-12 18:51:15.576656 |        21 | START TRANSACTION                              |
| 2018-04-12 18:51:15.580067 |        21 |                                                         |
| 2018-04-12 18:51:15.580271 |        21 | SHOW MASTER STATUS                                                                 |
| 2018-04-12 18:51:15.580575 |        21 | SHOW SLAVE STATUS                                                                  |
| 2018-04-12 18:51:15.581728 |        22 | root@localhost on  using Socket                                                    |
| 2018-04-12 18:51:15.582002 |        22 | SET SESSION wait_timeout = 2147483                                                 |
| 2018-04-12 18:51:15.582191 |        22 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ                            |
| 2018-04-12 18:51:15.582334 |        22 | START TRANSACTION                              |
| 2018-04-12 18:51:15.582568 |        22 |                                                  |
| 2018-04-12 10:51:15.582729 |        22 |                                                         |
| 2018-04-12 18:51:15.583656 |        23 | root@localhost on  using Socket                                                    |
| 2018-04-12 18:51:15.583930 |        23 | SET SESSION wait_timeout = 2147483                                                 |
| 2018-04-12 18:51:15.584122 |        23 | SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ                            |
| 2018-04-12 18:51:15.584242 |        23 | START TRANSACTION                              |
| 2018-04-12 18:51:15.584378 |        23 |                                                  |
| 2018-04-12 10:51:15.584562 |        23 |                                                         |
| 2018-04-12 18:51:15.584803 |        21 | Fish_Adventure                                                                     |
| 2018-04-12 18:51:15.584978 |        21 | SHOW TABLE STATUS                                                                  |
| 2018-04-12 18:51:15.636023 |        21 | SHOW CREATE DATABASE `Fish_Adventure`                                              |
| 2018-04-12 10:51:15.636771 |        22 | SELECT * FROM `Fish_Adventure`.`Operation`                |
| 2018-04-12 10:51:15.636801 |        23 | SELECT * FROM `Fish_Adventure`.`account_uNIOnid_map`      |
| 2018-04-12 10:51:15.637312 |        23 | SELECT * FROM `Fish_Adventure`.`admin_log`                                |
| 2018-04-12 18:51:15.642609 |        21 | UNLOCK TABLES                                                           |
| 2018-04-12 10:51:15.642643 |        23 | SELECT * FROM `Fish_Adventure`.`BlueRed20RoundRecord`     |
| 2018-04-12 18:51:15.642771 |        21 |                                                                                    |
| 2018-04-12 10:51:15.643613 |        22 | SELECT * FROM `Fish_Adventure`.`BlueRedBet`               |
| 2018-04-12 10:51:15.643698 |        23 | SELECT * FROM `Fish_Adventure`.`BlueRedOfflinePlayerInfo` |
| 2018-04-12 10:51:15.644064 |        22 | SELECT * FROM `Fish_Adventure`.`BlueRedRank`              |
| 2018-04-12 10:51:15.645180 |        23 | SELECT * FROM `Fish_Adventure`.`BlueRedReward`            |
| 2018-04-12 10:51:15.646225 |        23 | SELECT * FROM `Fish_Adventure`.`BonusExchange`            |
| 2018-04-12 10:51:15.646982 |        23 | SELECT * FROM `Fish_Adventure`.`Cannon`                   |
| 2018-04-12 10:51:15.648696 |        23 | SELECT * FROM `Fish_Adventure`.`Chuanying`                |

| 2018-04-12 10:51:15.656970 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerMahjong`            |
| 2018-04-12 10:51:15.658623 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerPurchase`           |
| 2018-04-12 10:51:15.659403 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerPurchaseRank`       |
| 2018-04-12 10:51:15.659747 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerRank`               |
| 2018-04-12 10:51:15.660186 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerRedeem`             |
| 2018-04-12 10:51:15.660479 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerRoom`               |
| 2018-04-12 10:51:15.660758 |        22 | SELECT * FROM `Fish_Adventure`.`PlayerShare`              |
                        ...
| 2018-04-12 10:51:15.708328 |        22 | SHOW CREATE TABLE `Fish_Adventure`.`Name_Room`                                     |
| 2018-04-12 10:51:15.708613 |        22 | SHOW CREATE TABLE `Fish_Adventure`.`NoticeInfo`                                    |
| 2018-04-12 10:51:15.708862 |        22 | SHOW CREATE TABLE `Fish_Adventure`.`OfflineChat`                                   |
| 2018-04-12 10:51:15.709106 |        22 | SHOW CREATE TABLE `Fish_Adventure`.`Operation`                                     |
| 2018-04-12 10:51:15.709303 |        22 | SHOW CREATE TABLE `Fish_Adventure`.`Orders`                                        |
                        ...
| 2018-04-12 10:51:15.742110 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.742289 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`GroupFisheryStack`                              |
| 2018-04-12 10:51:15.742731 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`GroupFisheryStack`                              |

| 2018-04-12 10:51:15.747712 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.747894 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`LoginRewardInfo`                                |
| 2018-04-12 10:51:15.748337 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`LoginRewardInfo`                                |
| 2018-04-12 10:51:15.748596 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.748775 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`MahjongInfo`                                    |
| 2018-04-12 10:51:15.749369 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`MahjongInfo`                                    |
| 2018-04-12 10:51:15.749721 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.749907 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`MailInfo`                                       |
| 2018-04-12 10:51:15.750364 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`MailInfo`                                       |
| 2018-04-12 10:51:15.750634 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.750811 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`MatchRewardInfo`                                |
| 2018-04-12 10:51:15.751279 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`MatchRewardInfo`                                |
| 2018-04-12 10:51:15.751589 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.751780 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`MissionFish`                                    |
| 2018-04-12 10:51:15.752199 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`MissionFish`                                    |

| 2018-04-12 10:51:15.754378 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.754624 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`PlayerLevelInfo`                                |
| 2018-04-12 10:51:15.755115 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`PlayerLevelInfo`                                |
| 2018-04-12 10:51:15.755363 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.755564 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`RechargeInfo`                                   |
| 2018-04-12 10:51:15.756095 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`RechargeInfo`                                   |
| 2018-04-12 10:51:15.756350 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.756561 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`RedeemCode`                                     |
| 2018-04-12 10:51:15.757055 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`RedeemCode`                                     |
| 2018-04-12 10:51:15.757289 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.757471 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`RewardList`                                     |
| 2018-04-12 10:51:15.758020 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`RewardList`                                     |
| 2018-04-12 10:51:15.758284 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.758480 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`ShipInfo`                                       |
| 2018-04-12 10:51:15.759167 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`ShipInfo`                                       |
...
| 2018-04-12 10:51:15.761377 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.761627 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`UpgradeInfo`                                    |
| 2018-04-12 10:51:15.762157 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`UpgradeInfo`                                    |
| 2018-04-12 10:51:15.762440 |        22 | Fish_Adventure                                                                     |
| 2018-04-12 10:51:15.762670 |        22 | SHOW FIELDS FROM `Fish_Adventure`.`VipBonous`                                      |
| 2018-04-12 10:51:15.763208 |        22 | SHOW CREATE VIEW `Fish_Adventure`.`VipBonous`                                      |
| 2018-04-12 10:51:15.763631 |        22 |                                                                                    |
| 2018-04-12 10:51:15.770707 |        23 |                                                                                    |
| 2018-04-12 18:51:23.241235 |        17 | set global general_log=0                                                           |
+----------------------------+-----------+------------------------------------------------------------------------------------+

⒊阅读表中线程关系
    17号mysql线程是我当前的操作的会话,而除了17号mysql线程外,还有21/22/23这三个线程
    21号mysql线程没有执行 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ,说明是Mydumper主进程发起的
    22/23号mysql线程在导出数据,所以是Mydumper发起的两个线程(由mydumper -t 2指定的)

⒋原理分析:
    ⑴FLUSH TABLE WITH READ LOCK;
        这句话的意思是住所有的表,他的作用是获取当前的二进制位置,以及实现一致性备份。
    ⑵SHOW MASTER STATUS/SHOW SLAVE STATUS;
        获取二进制日志的位置。
    ⑶21号mysql线程执行:START TRANSACTION
        这里并不需要把隔离级别设置为可重复读,因为21好线程对应Mydumper的主进程,不参与导出数据。
    ⑷22/23对应的mydumper线程设置 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ以及 START TRANSACTION  
        22/23是再mydumper -t 2设置的2个线程,目的是导出数据,所有需要开启可重复读隔离级别。
    ⑸UNLOCK TABLES
        在获取binlog位置以及开启可重复读之后即可释放表锁,这样就可以进行热备,锁表的时间也不长,对业务基本没影响
    ⑹导出数据文件以及表结构文件
        这里是数据先用mysql导出,然后导出表结构以及视图(这里其实还有一个小细节,就是先导出数据,然后导出表结构,其实这是开启了两个任务队列queue,一个是innodb表,另外一个是schema与表结构的定义;如果有MyISAM表的话,还会有第三个队列,非事务的表,他的数据会在第(5)步之前导出,这里的目的是保证非事务表与事务表的一致性,同时不会锁整个备份的过程,如上面的`Fish_Adventure`.`admin_log` ,前面自己忘了写了,这里补上)。

总结
    其实mydumper跟mysqldump的工作原理相似,不同之处是mydumper在导出数据的过程中用了多线程,所以速度相对与mysqldump要快,很难想象mysqldump竟然不实现这个功能


⒍mydumper优点
    mydumper可以对多线程备份,更可贵的是可以进行单个表进行多线程的备份(前提条件,备份的主键一定是要整形的并且不能是复合索引);myloader可以指定某个表来恢复,因为mydumper导出的表是分开的.
    

感谢各位的阅读,以上就是“MySQL Mydumper的工作原理”的内容了,经过本文的学习后,相信大家对MySQL Mydumper的工作原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL Mydumper的工作原理

本文链接: https://lsjlt.com/news/60922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL Mydumper的工作原理
    这篇文章主要讲解了“MySQL Mydumper的工作原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL Mydumper的工作原理”吧! ...
    99+
    2024-04-02
  • mysql索引的工作原理
    小编给大家分享一下mysql索引的工作原理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL中索引的简介在MySQL中,索...
    99+
    2024-04-02
  • MySQL中mydumper工具怎么用
    这篇文章给大家分享的是有关MySQL中mydumper工具怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一 前言mydumper 具有如下特性...
    99+
    2024-04-02
  • mysql行级锁的工作原理
    小编给大家分享一下mysql行级锁的工作原理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql行级锁实现原理:1、Inno...
    99+
    2024-04-02
  • MySQL数据库工作原理
    接触一个新的事物的时候,是有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。接下来,还是从my...
    99+
    2024-04-02
  • MySQL多线程备份工具mydumper
    目录 一、mydumper简介 二、mydumper安装 1、yum安装mydumper 2、源码安装mydumper 三、mydumper参数介绍 四、myloader参数介绍 五、使用例子 一、mydumper简介 mydumper...
    99+
    2023-09-08
    mysql linux 服务器
  • mysql主从复制的工作原理
    这篇文章给大家分享的是有关mysql主从复制的工作原理的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql主从复制原理:首先主库发送更新事件到从库;然后从库读取更新记录,并执...
    99+
    2024-04-02
  • Mysql用户访问工作原理
    掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图: 上面的图就是mysql的内部架构,可以清楚的看到Mysq...
    99+
    2024-04-02
  • jsonp的工作原理
    JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。 这一策略对于JavaScript代码能够访问的页面内容做了...
    99+
    2023-09-01
    javascript ajax php
  • mysql主从复制的工作原理图
    本文主要给大家介绍mysql主从复制的工作原理图,文章内容对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql主从复制的工作原理图吧。  看完以上关于mysql主从复制的工作原理...
    99+
    2024-04-02
  • MySQL复制的工作原理是什么
    今天就跟大家聊聊有关MySQL复制的工作原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 MySQL复制的工作...
    99+
    2024-04-02
  • mysql索引的工作原理是什么
    本篇内容介绍了“mysql索引的工作原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  索引的工作...
    99+
    2024-04-02
  • MySQL SSL 连接的工作原理解析
    MySQL是一款使用广泛的关系型数据库管理系统,它的安全性一直备受关注。SSL(Secure Socket Layer)是一种加密通信协议,用于提供安全的数据传输。MySQL SSL连接的工作原理即在MySQL数据库中使用SSL协议建立安全...
    99+
    2023-10-22
    用于存储和管理数据。 SSL: SSL(Secure Sockets Layer) 安全套接层
  • Xtrabackup工作原理
    目录1.Xtrabackup介绍2.Xtrabackup备份涉及的数据库名词2.1.MySQL数据文件扩展名知识说明2.2.事务型引擎的ACID特性2.3.InnoDB引擎内部知识概念2.4.InnoDB引擎内部知识及说明2.5....
    99+
    2020-09-08
    Xtrabackup工作原理
  • mha-工作原理
    mha的工作原理1.检查阶段<1>.监测到maser goway<2>.多路由检测<3>.重复检测4次(这个次数固定的,无法修改)<4>.检测ssh是否正常&...
    99+
    2024-04-02
  • OGG工作原理
    一.GoldenGate介绍 OGG 是一种基于日志的结构化数据复制软件 OGG 能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟 二.工作...
    99+
    2024-04-02
  • Mybatis工作原理
    作者:wuxinliulei链接:https://www.zhihu.com/question/25007334/answer/266187562来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Mybatis原...
    99+
    2023-06-05
  • Mysql主从复制作用和工作原理
    一、什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。在最常用的mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服...
    99+
    2024-04-02
  • vue-router的工作原理
    本篇内容主要讲解“vue-router的工作原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue-router的工作原理”吧!单页面应用的工作原理我理解的单...
    99+
    2024-04-02
  • CSS hack的工作原理
    本篇内容主要讲解“CSS hack的工作原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS hack的工作原理”吧!CSS hack简介CSS hack由...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作