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 /*!40100 SET @@SQL_MODE='' */ Query /*!40103 SET TIME_ZONE='+00:00' */

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

Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */

因为开启了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 /*!40001 SQL_NO_CACHE */ * 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

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.1K20
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

44330
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13550
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

17830
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

15620
来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

20740
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

28340
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

51220
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

32130
来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

11710

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励