千家信息网

mysqldump简单解析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,MySQL中的mysqldump,真是一个经典而有效的工具,经常用,但是不知道后台运行的过程中到底在干些什么,其实如果想得到这些基本的信息不一定要去看代码,我们通过日志的方式就能一窥其中的奥妙。如果想
千家信息网最后更新 2026年11月03日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


数据 日志 级别 事务 选择 隔离 有效 信息 基准 时候 版本 环境 结果 语句 支持 不同 这样一来 一来 不用 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 互联网品科技 互联网科技的英文 菲比寻常互联网科技 顺网科技2021年互联网排名 滨湖区互联网智能科技产品供应 互联网巨头投资的硬核科技 顶级互联网科技成果有哪些 华夏互联网科技业 呼和浩特新华互联网科技学院 互联网科技和信息 青海科技产业互联网发展 深圳市罗太互联网科技有限公司 众安科技工业互联网合作 杭州披云加互联网科技有限公司 互联网营销推广黑科技 互联网安防科技感 从那以后互联网科技有限公司 科技信息时代互联网发展 唐山双旺合互联网科技产业园 科技互联网公司logo 沃里互联网科技 四川狮子座互联网科技 镁科技互联网资讯平台 赶超互联网科技 微信多开 和信科技工业互联网 无锡工业互联网科技有限公司 工业互联网山东科技大学 每天都有哪些好的互联网科技 抖集互联网科技技术咨询
0