我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysqldump简单解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysqldump简单解析

   MySQL中的mysqldump,真是一个经典而有效的工具,经常用,但是不知道后台运行的过程中到底在干些什么,其实如果想得到这些基本的信息不一定要去看代码,我们通过日志的方式就能一窥其中的奥妙。

   如果想看到里面的一些较为细节的日志,开个general log就可以了。至于性能不用太担心,general log我们随开随关。

   在不同的版本中也有一些差别,我选择的是MySQL 5.7.13的版本,简单看了下里面的日志。

    首先这个环境的事务隔离级别我选择的是RC.

# mysqladmin var|grep isol
| tx_isolation                                             | READ-COMMITTED

   导出的时候,用了下面的命令导出:

 mysqldump --single-transaction --databases mobile_billing > test.sql

   得到的日志如下,我们来选择性的解读一下。

Query 
Query 

这里需要注意mysqldump会默认把隔离级别改为RR,然后开启的事务是有consistent snapshot选项,这个选项只对RR隔离级别有效。

Query  SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
Query  START TRANSACTION

因为开启了GTID,这里就会按照这个规则来,后面导出的数据都是以这个GTID的事务为基准。

Query  SELECT @@GLOBAL.GTID_EXECUTED
Query  UNLOCK TABLES

下面考虑了存储的差异性,比如undo,通用表空间等,在这个环境中暂时没用,所以结果都是空。

Query  SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('mobile_billig'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE, EXTRA ORDER BY LOGFILE_GROUP_NAME

考虑了分区的影响范围

Query  SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('mobile_billig')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME

下面是要导出数据的步骤了,会在开始的时候设定一个savepoint,然后导出表中的数据,完成之后,rollback到之前的save point点位,继续导出下一个表,直到完成,会释放savepoint,这样一来得到的数据就是基于同一个基准了。

 Query  SHOW VARIABLES LIKE 'ndbinfo\_version'
 Init DB        mobile_billing

得到建库语句,默认没有添加if not exists的选项。

 Query  SHOW CREATE DATABASE IF NOT EXISTS `mobile_billing`

开启save point

 Query  SAVEPOINT sp

得到指定库下的数据表列表

Query  show tables

循环列表,得到表的状态,以便进一步处理。

 Query  show table status like 'open\_sdk\_doc\_version'

sql_quote_show_create这个采纳数有两个值(1,0),默认是1,表示表名和列名会用``包着的。 这个服务器参数只可以在session级别设置,不支持global设置的(不支持my.cnf设置)

 Query  SET SQL_QUOTE_SHOW_CREATE=1
 Query  SET SESSION character_set_results = 'binary'

得到建表语句,默认没有添加if not exists的选项。

Query  show create table `open_sdk_doc_version`

设定字符集

 Query  SET SESSION character_set_results = 'utf8'

得到字段信息

 Query  show fields from `open_sdk_doc_version`
 Query  show fields from `open_sdk_doc_version`

得到的数据会是insert into的形式,其中sql_no_cache的作用是避免查询结果缓存

 Query  SELECT * FROM `open_sdk_doc_version`

 Query  SET SESSION character_set_results = 'binary'
 Query  show create table `open_sdk_doc_version`

 Query  SET SESSION character_set_results = 'utf8'
 Query  ROLLBACK TO SAVEPOINT sp
 。。。

继续下一个表
直到完成,就会释放save point
Query  ROLLBACK TO SAVEPOINT sp
Query  RELEASE SAVEPOINT sp


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysqldump简单解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python简单的HTML解析

# coding:utf-8# 引入相关模块import jsonimport requestsfrom bs4 import BeautifulSoupurl = "http://news.qq.com/"# 请求腾讯新闻的URL,获取其
2023-01-31

Android ViewFlipper简单用法解析

ViewFlipper和ViewPager挺像的,都是一个view容器。内部可以添加多个view,只是viewpager可以通过左右滑动来切换view,而viewFlipper则没有这个功能,所以需要在它上面监听手势。比较方便的是它不用使用
2022-06-06

Android json解析及简单例子

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C
2022-06-06

Python简单解析和封装json

python list对象转换成json格式#!/usr/bin/env pythonimport jsondata = [{'type':'trigger','addr':'0x1234','data':'0x1234'}]print "
2023-01-31

python之解析最简单的xml

1、person.xm文件如下2、用xml.etree.ElementTree解析person.xml的实现3、效果如下4、总结python里面的list = []相当于java里面的list,然后可以改变其中的值。
2023-01-31

简单HCIA题库讲解分析

  简单hcia题库讲解分析:只需要笔试的华为认证HCIA难度会比较低,一般情况下,掌握了对应的知识点后,通过练习题库,通过的难度都不大,接下来编程学习网小编就来简单的讲解分析一下HCIA题库的相关内容。  简单HCIA题库举例  先来带大家看几道简答的HCIA题库里的题目。  1、Tracert诊断工具记录下每一个ICM
简单HCIA题库讲解分析
2024-04-18

简单解析ipv4地址分类

  IP地址简介  简单解析ipv4地址分类:基本的IP地址是分成8位一个单元(称为8 位位组)的32位二进制数。二进制与十进制大家都懂吧。为了方便人们的使用,对机器友好的二进制地址转变为人们更熟悉的十进制地址。IP地址中的每一个8位位组用0~255之间的一个十进制数表示。这些数之间用点(.)隔开,这是所谓的点-十进制
简单解析ipv4地址分类
2024-04-18

Python解析最简单的验证码

最近在学python,正好遇到学校需要选宿舍,就用python写了一个抢宿舍的软件。其中有一个模块是用来登陆的,登陆的时候需要输入验证码,不过后来发现了直接可以绕过验证码直接登陆的bug。不过这是另外的话题,开始的时候我并没有发现这个隐藏起
2022-06-04

Android XML数据解析简单示例

1、创建XML数据 在android工程目录中res/目录下创建raw文件夹,在raw文件夹内创建data.xml。代码如下:
2022-06-06

java简单快速排序实例解析

一、基本概念 找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n
2023-05-31

Android对so进行简单hook思路解析

这篇文章主要为大家介绍了Android对so进行简单hook思路解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-15

JavaScript实现简单的Markdown语法解析器

Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。本文将利用JavaScript实现简单的Markdown语法解析器,感兴趣的可以了解一下
2023-03-22

GNS3简单图解

题目:实验要求:1.交换机下面有四个vlan:vlan10、20通过SW-3L三层交换机出,vlan30、40通过R3出2.图中有链路捆绑3.所有PC机器全网互通4.通过R2远程登陆SW1SW-3L设置SW-3L#conf tSW-3L(c
2023-01-31

编程热搜

目录