mysqldump备份过程中都干了些什么
mysqldump备份方便,易读,功能丰富,相信大家都有 使用过这个命令进行备份,但是这个命令在备份的过程中都做了写什么呢,下面打开general_log进行查看:
1.登录mysql命令行客户端:
set global general_log=1;
2.使用下面的命令进行备份:
mysqldump -uroot -p'password' --opt --default-character-set=utf8 --triggers -R --master-data=2 --hex-blob --single-transaction --no-autocommit --all-databases -S /data/mysql3306/mysql3306.sock > aa.sql
3.默认情况下,查询日志在datadir目录下的`hostname`.log中,打开这个日志查看内容:
160105 15:20:46 26 Connect root@localhost on
26 Query /*!40100 SET @@SQL_MODE='' */ #修改sql模式
26 Query /*!40103 SET TIME_ZONE='+00:00' */ #修改时区
26 Query FLUSH /*!40101 LOCAL */ TABLES ##把内存中的表结构的改动同步到磁盘
26 Query FLUSH TABLES WITH READ LOCK #对于非事务表,给全局加上意向S锁,能读不能写的状态,这样就拿到了一个一致性备份,等复制完了再unlock tables;
26 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ #修改隔离级别为RR,在这个隔离级别下,可以实现一致性非锁定读,即可以拿到一个一致性快照
26 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */ #开始一个一致性快照,最后要么rollback,要么commit,注意,这个在整个备份过程中是一个大的事务
26 Query SHOW VARIABLES LIKE 'gtid\_mode' #如果开启了gtid,那么会获取出gtid_executed 的位置,即,已经同步到数据文件中的事务的位置
26 Query SHOW MASTER STATUS #对于Myisam表,在全局S锁的情况下,只有读,没有写,获取binlog filename和position,即就是当前备份数据的位置,对于innodb表,因为前面START TRANSACTION显式开启一个事务,所以事务内获取的就是快照数据的位置
26 Query UNLOCK TABLES #在获得了binlog filename和position之后,解锁表
#下面查询INFORMATION_SCHEMA.FILES表的SQL是针对NDB存储引擎的
26 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 GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME
26 Query SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
26 Query SHOW DATABASES #查看有哪些库
26 Query SHOW VARIABLES LIKE 'ndbinfo\_version' #NDB基本用不到,这里无须关注
26 Init DB mysql #开始备份mysql库
26 Query SHOW CREATE DATABASE IF NOT EXISTS `mysql`
26 Query SAVEPOINT sp #定义的一个保存点,为了避免在整个备份这个大事务中出错,采用了断点设置,在这里定义一个保存点,表示这个位置是从show master status的位置,后面每个表
26 Query show tables #查看mysql库有哪些表
26 Query show table status like 'columns\_priv' #查看这个表的状态
26 Query SET SQL_QUOTE_SHOW_CREATE=1 #给每个表的每个字段加个反引号
26 Query SET SESSION character_set_results = 'binary' #表结构的备份都是binary格式,所以要先改这个
26 Query show create table `columns_priv` #查看这个表的定义
26 Query SET SESSION character_set_results = 'utf8'
26 Query show fields from `columns_priv` #查看表有哪些字段
26 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `columns_priv` #查询表中的数据,结合show fields from `columns_priv`的字段信息生成insert into语句
26 Query SET SESSION character_set_results = 'binary'
26 Query use `mysql`
26 Query select @@collation_database
26 Query SHOW TRIGGERS LIKE 'columns\_priv'
26 Query SET SESSION character_set_results = 'utf8'
26 Query ROLLBACK TO SAVEPOINT sp ##一个表执行完之后,就回滚到前面打的事务标签的位置,即回滚到这个保存点的位置再重新开始
...... #此处省略其他表,所有表的备份过程这里都是一样的
26 Query RELEASE SAVEPOINT sp #同一个库中的所有表备份完成之后,就会释放这个保存点
26 Query use `mysql`
26 Query select @@collation_database
26 Query SET SESSION character_set_results = 'binary'
26 Query SHOW FUNCTION STATUS WHERE Db = 'mysql' #查询mysql库的所有存储函数
26 Query SHOW PROCEDURE STATUS WHERE Db = 'mysql' #查询mysql库的所有存储过程
26 Query SET SESSION character_set_results = 'utf8'
26 Query show table status like 'general\_log' #查询日志的表状态信息
26 Query SET SQL_QUOTE_SHOW_CREATE=1
26 Query SET SESSION character_set_results = 'binary'
26 Query show create table `general_log` #查询日志的表定义
26 Query SET SESSION character_set_results = 'utf8'
26 Query show fields from `general_log` #查询日志的表字段信息
26 Query show table status like 'slow\_log' #查询慢日志表状态信息
26 Query SET SQL_QUOTE_SHOW_CREATE=1
26 Query SET SESSION character_set_results = 'binary'
26 Query show create table `slow_log` #查询慢日志表结构
26 Query SET SESSION character_set_results = 'utf8'
26 Query show fields from `slow_log` #查询慢日志表字段信息
26 Init DB test #初始化另外一个库,循环开始上面的过程
26 Quit #整个过程完成,退出进程
注:以上过程为个人理解,如有错误,还望指正
mysqldump备份过程中都干了些什么的更多相关文章
- loadView在App启动时到底都干了些什么?
loadView在App启动时到底都干了些什么? 查阅苹果官方文档如下: 1. 当你访问一个ViewController的view属性时,如果此时view的值是nil,那么,ViewControlle ...
- Beagleboneblack的MLO文件干了些啥
Beagleboneblack在启动linux之前还有三个启动阶段: ROM code --> MLO --> u-boot --> kernel 先看看ROM code干了 ...
- swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?
date: 2018-8-01 14:22:17title: swoft| 源码解读系列二: 启动阶段, swoft 都干了些啥?description: 阅读 sowft 框架源码, 了解 sowf ...
- 输入url后浏览器干了些什么(详解)
输入url后浏览器干了些什么(详解) DNS(Domain Name System, 域名系统) 解析 DNS解析的过程就是寻找哪台机器上有你真正需要的资源过程.但你在浏览器张红输入一个地址时,例如: ...
- 看看C# 6.0中那些语法糖都干了些什么(上篇)
今天没事,就下了个vs2015 preview,前段时间园子里面也在热炒这些新的语法糖,这里我们就来看看到底都会生成些什么样的IL? 一:自动初始化属性 确实这个比之前的版本简化了一下,不过你肯定很好 ...
- RocketMQ Consumer 启动时都干了些啥?
可能我们对 RocketMQ 的消费者认知乍一想很简单,就是一个拿来消费消息的客户端而已,你只需要指定对应的 Topic 和 ConsumerGroup,剩下的就是只需要: 接收消息 处理消息 就完事 ...
- 看看C# 6.0中那些语法糖都干了些什么(中篇)
接着上篇继续扯,其实语法糖也不是什么坏事,第一个就是吃不吃随你,第二个就是最好要知道这些糖在底层都做了些什么,不过有一点 叫眼见为实,这样才能安心的使用,一口气上五楼,不费劲. 一:字符串嵌入值 我想 ...
- js中的new关键字都干了些什么?
new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在javascript中,我们将这类方式成为Pseudoclassic ...
- 在比特币的OP_RETURN上,大家都干了些啥?
我在之前的一篇文章中介绍了怎么通过C#将一句话写入到比特币的区块链网络中,最近花了好几天的时间,我终于把比特币的区块链数据载入到了SQLServer(具体做法参加我的这篇博客:http://www.c ...
随机推荐
- psycopg2
简介 Psycopg 是Python语言的PostgreSQL数据库接口. 它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持.它适用于随时创建.销毁大量游标的.和产生大 ...
- sh.status()
mongos> sh.status({"verbose":1})sh.status({"verbose":1}) --- Sharding Status ...
- Java基础之创建窗口——颜色和光标(TryWindow4)
控制台程序. java.awt包中把SystemColor类定义为Color类的子类.SystemColor类封装了本机操作系统用于显示各种组件的标准颜色.如果要比较SystemColor值和Colo ...
- pgbouncer+pg(fdw)+pg(datanode)分表方案
pgbouncer+pg(fdw)+pg(datanode)分表方案 (环境RHEL6.5,PG9.4.5,pgbouncer1.5.4,libevent2.0.22) 方案架构图如下: pgboun ...
- G面经prepare: Sort String Based On Another
Given a sorting order string, sort the input string based on the given sorting order string. Ex sort ...
- JavaScript----分层导航 滚动事件
分层导航 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- for 穷举、迭代 while循环
1.穷举: 把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 2.百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100 ...
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- Java基础(36):String与基本数据类型之间的双向转换(Wrapper类)
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- ios学习笔记(二)第一个应用程序--Hello World
原文地址:http://blog.csdn.net/shangyuan21/article/details/18416537 上一篇文章,Windows7上使用VMWare搭建iPhone开发环境介绍 ...