博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysqldump简单解析
阅读量:2447 次
发布时间:2019-05-10

本文共 3113 字,大约阅读时间需要 10 分钟。

   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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2143463/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2143463/

你可能感兴趣的文章
macos 快速启动启动台_无法获取macOS通知? 这是解决方法(无需重新启动)
查看>>
为什么您可能不应该将您的企业网站运出家门
查看>>
如何在Android上使用Amazon Underground免费获取大量应用内购买
查看>>
如何使用HDHomeRun在计算机,游戏机和其他设备上观看直播电视
查看>>
如何在没有智能手机的情况下使用Google Authenticator和其他两因素身份验证应用程序...
查看>>
如何显示密件抄送人员地址_什么是密件抄送,以及为什么不使用它会成为一个可怕的人...
查看>>
询问HTG:增强Wi-Fi连接性,校准显示器并执行基于计算机的恶作剧
查看>>
将code添加到上下文菜单_通过将选项卡添加到资源管理器,创建上下文菜单项等来轻松调整Windows 7和Vista...
查看>>
询问HTG:选择要备份的文件,将扫描仪用作复印机,并将iPad配置为第二台显示器...
查看>>
es dsl 提取不重复值_询问操作方法:诊断DSL挂断,从PowerPoint中提取媒体,将IE限制为单个网页...
查看>>
在Boxee中使用Pandora
查看>>
linux创建交换分区设置_如何在Linux上创建交换文件
查看>>
vim 关闭查找_如何打开或关闭查找我的iPad
查看>>
linux rev命令_如何在Linux上使用rev命令
查看>>
slack财报_如何将自己的表情符号添加到Slack
查看>>
juicer hic使用_使用Sound Juicer在Linux中翻录音频CD
查看>>
如何在Microsoft表单中添加分支
查看>>
在“提示”框中:删除Windows 8安全启动,从Media Center启动应用程序,并加快Windows安装速度...
查看>>
修改时序约束改变slack_如何更改Slack的默认表情符号肤色
查看>>
如何在iPhone,iPad和Mac上禁用Safari经常访问的起始页
查看>>