**********************mysqldump 所需权限*************************************

dump tables:SELECT

dump views:SHOW VIEW

dump triggers:TRIGGER

LOCK TABLES(如果不使用--single-transaction)

RELOAD,SUPER, REPLICATION CLIENT (--master-data=2)

数据库字符集更改:ALTER DATABASE

**********************mysqldump 适用场景************************************

全量表结构、存储过程、触发器等备份

单表(小表)备份

**********************mysqldump 缺点****************************************

逻辑备份,导出比较慢

单线程备份,5.7有mysqlpump以及开源版的mydumper可进行并行和压缩备份恢复

使用--single-transaction可实现在线备份,但是碰到操作时间过长的事物可能会使数据库出问题

5.6以下版本使用可能会使buffer pool热数据刷出,5.6及以上版本可通过innodb_old_blocks_time来控制热数据的进出

**********************mysqldump 常用语句****************************************

只导出表结构:

mysqldump -d --trigger=false

只导出存储过程:

mysqldump -f -Rtdn --trigger=false

只导出触发器:

mysqldump -f -tdn --trigger

只导出事件:

mysqldump -f -Etdn --triggers=False

只导出数据:

mysqldump -f --single-transaction --triggers=false -t

导出表中某些行:

mysqldump dbname --where="1=1 limit 1000"

在线建从库:

mysqldump --master-data=2 --single-transaction -A

**********************mysqldump 后台工作细节**************************************

查看general log是否打开:

mysql> set global general_log = on;

Query OK, 0 rows affected (0.01 sec)

mysql> show variables like '%general%';

+------------------+-----------------------------------------------------+

| Variable_name    | Value                                               |

+------------------+-----------------------------------------------------+

| general_log      | ON                                                  |

| general_log_file | /app/data/mysql/3336/data/BJ-ECS-XHM-TEST-YL-19.log |

+------------------+-----------------------------------------------------+

2 rows in set (0.02 sec)

创建数据库及测试数据:

create database gaoquan;

create table t1(id int not null primary key auto_increment,name varchar(10) not null,age int not null);

insert into t1(name,age) values('name1',10),('name2',10),('name3',10),('name4',10),('name5',10),('name6',10),('name7',10),('name8',10),('name9',10);

create table t2(id int not null primary key auto_increment,name varchar(10) not null,age int not null);

insert into t2(name,age) values('name1',10),('name2',10),('name3',10),('name4',10),('name5',10),('name6',10),('name7',10),('name8',10),('name9',10);

创建mysqldump备份用户:

grant select,show view,trigger,lock tables on *.* to backup@'%' identified by 'backup007';

不开启--single-transaction执行备份:

/usr/local/mysql/bin/mysqldump -u backup -p gaoquan -h 10.50.12.33 -P 3336

general log 输出:

160105 11:29:55  296 Connectbackup@10.50.12.33 on

296 Query/*!40100 SET @@SQL_MODE='' */

296 Query/*!40103 SET TIME_ZONE='+00:00' */

296 QuerySHOW VARIABLES LIKE 'gtid\_mode'

296 QuerySELECT 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 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 ('gaoquan'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME

296 QuerySELECT 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 ('gaoquan')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME

296 QuerySHOW VARIABLES LIKE 'ndbinfo\_version'

296 Init DBgaoquan

296 Queryshow tables

296 QueryLOCK TABLES `t1` READ /*!32311 LOCAL */,`t2` READ /*!32311 LOCAL */

296 Queryshow table status like 't1'

296 QuerySET SQL_QUOTE_SHOW_CREATE=1

296 QuerySET SESSION character_set_results = 'binary'

296 Queryshow create table `t1`

296 QuerySET SESSION character_set_results = 'utf8'

296 Queryshow fields from `t1`

296 QuerySELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`

296 QuerySET SESSION character_set_results = 'binary'

296 Queryuse `gaoquan`

296 Queryselect @@collation_database

296 QuerySHOW TRIGGERS LIKE 't1'

296 QuerySET SESSION character_set_results = 'utf8'

296 Queryshow table status like 't2'

296 QuerySET SQL_QUOTE_SHOW_CREATE=1

296 QuerySET SESSION character_set_results = 'binary'

296 Queryshow create table `t2`

296 QuerySET SESSION character_set_results = 'utf8'

296 Queryshow fields from `t2`

296 QuerySELECT /*!40001 SQL_NO_CACHE */ * FROM `t2`

296 QuerySET SESSION character_set_results = 'binary'

296 Queryuse `gaoquan`

296 Queryselect @@collation_database

296 QuerySHOW TRIGGERS LIKE 't2'

296 QuerySET SESSION character_set_results = 'utf8'

296 QueryUNLOCK TABLES

296 Quit

原理:

加全局读锁(防止备份数据不一致)->当前字符集会做一些处理,防止乱码->获取建表信息生成建表语句->获取行记录从而转换成insert插入语句->释放读锁

开启--single-transaction备份:

/usr/local/mysql/bin/mysqldump -u backup -p gaoquan -h 10.50.12.33 -P 3336  --single-transaction

160105 11:33:41  298 Connectbackup@10.50.12.33 on

298 Query/*!40100 SET @@SQL_MODE='' */

298 Query/*!40103 SET TIME_ZONE='+00:00' */

298 QuerySET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ

298 QuerySTART TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */

298 QuerySHOW VARIABLES LIKE 'gtid\_mode'

298 QueryUNLOCK TABLES

298 QuerySELECT 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 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 ('gaoquan'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME

298 QuerySELECT 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 ('gaoquan')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME

298 QuerySHOW VARIABLES LIKE 'ndbinfo\_version'

298 Init DBgaoquan

298 QuerySAVEPOINT sp

298 Queryshow tables

298 Queryshow table status like 't1'

298 QuerySET SQL_QUOTE_SHOW_CREATE=1

298 QuerySET SESSION character_set_results = 'binary'

298 Queryshow create table `t1`

298 QuerySET SESSION character_set_results = 'utf8'

298 Queryshow fields from `t1`

298 QuerySELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`

298 QuerySET SESSION character_set_results = 'binary'

298 Queryuse `gaoquan`

298 Queryselect @@collation_database

298 QuerySHOW TRIGGERS LIKE 't1'

298 QuerySET SESSION character_set_results = 'utf8'

298 QueryROLLBACK TO SAVEPOINT sp

298 Queryshow table status like 't2'

298 QuerySET SQL_QUOTE_SHOW_CREATE=1

298 QuerySET SESSION character_set_results = 'binary'

298 Queryshow create table `t2`

298 QuerySET SESSION character_set_results = 'utf8'

298 Queryshow fields from `t2`

298 QuerySELECT /*!40001 SQL_NO_CACHE */ * FROM `t2`

298 QuerySET SESSION character_set_results = 'binary'

298 Queryuse `gaoquan`

298 Queryselect @@collation_database

298 QuerySHOW TRIGGERS LIKE 't2'

298 QuerySET SESSION character_set_results = 'utf8'

298 QueryROLLBACK TO SAVEPOINT sp

298 QueryRELEASE SAVEPOINT sp

298 Quit

原理:

更改当前会话隔离级别为rr->开始事物->释放表锁->导出建表语句->设置一个savepoint->导出表数据->回滚到savepoint sp->对其他表重复该过程->最后释放savepoint

整个过程,没有任何锁。RR隔离级别保证在事务中只读取本事务之前的一致性的数据 。 rollback to savepoint sp; 保证了对数据库中的数据没有影响。

转载于:https://blog.51cto.com/gaoquan/1731721

mysqldump原理及实验相关推荐

  1. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  2. 编译原理:实验一练习

    编译原理:实验一练习 词法分析器 编译原理实验报告 上面的第一个链接中的词法分析器有一点问题,修改后的代码如下: #include "string.h"#include " ...

  3. c语言的适当大小的子集,编译原理上机实验报告

    编译原理上机实验报告,编制C语言子集的词法分析程序,编制递归下降法的语法分析程序 编译技术上机实验题目 实验一 一.题目 编制C语言子集的词法分析程序 二.目的 通过设计.编制.调试一个具体的词法分析 ...

  4. 《编译原理》实验报告——递归下降语法分析器的构建

    一.实验要求 运用递归下降法,针对给定的上下文无关文法,给出实验方案.预估实验中可能出现的问题. 二.实验方案 1.构造LL(1),通过设计.编制.调试递归下降语法分析程序,对输入的符号串进行分析匹配 ...

  5. 《编译原理》实验教学大纲

    <编译原理>实验教学大纲 课程编号: 773033 课程名称:编译原理 英文名称:Compiler Principle 课程类型: 模块课 学 时:5 学 分:4 适用对象: 软件开发各专 ...

  6. 【渝粤教育】国家开放大学2018年春季 0690-22T化工原理及实验 参考试题

    科目编号:0690 座位号: 2017-2018学年度第二学期期末考试 化工原理及实验试题(B) 2018年7月 一.填空题(每空2分,共30分) 塔板负荷性能图中有______________条线, ...

  7. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...

    作文「通信原理虚拟实验仿真平台的设计和实现」共有 4564 个字,其中有 2704 个汉字,1316 个英文,162 个数字,382 个标点符号.作者佚名,请您欣赏.玛雅作文网荟萃众多优秀学生作文,如 ...

  8. 湘潭大学计算机组成原理试卷,湘潭大学 计算机组成与原理 控制器实验 实验报告...

    <湘潭大学 计算机组成与原理 控制器实验 实验报告>由会员分享,可在线阅读,更多相关<湘潭大学 计算机组成与原理 控制器实验 实验报告(10页珍藏版)>请在人人文库网上搜索. ...

  9. Mysqldump原理及使用方法

    Mysqldump 逻辑备份概念 Mysqldump原理 Mysqldump使用方法 逻辑备份概念 什么是逻辑备份? 逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原 ...

最新文章

  1. matlab产生mif 文件,生成.mif文件的matlab程序
  2. 后端系统架构 听课笔记
  3. 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表
  4. oracle分区唯一索引,关于分区表与唯一索引的测试记录
  5. python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
  6. 传智播客 C/C++学习笔记 const
  7. 178.16. cvs release
  8. natApp进行内网穿透-外网访问前端本地运行项目
  9. 摄影曝光基础——光圈、快门、ISO
  10. java练习题-猜数字游戏
  11. ZZULIOJ:1035: 分段函数求值
  12. 华硕X99-A II 安装使用 志强 XEON E5-1603 v4
  13. GLIBC2.27 not fount
  14. scipy.sparse学习
  15. Java的字符串连接符(+)
  16. 支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247
  17. Ubuntu16.04 独显驱动安装 Nvidia
  18. mysql 2005正确安装_超详细的sql2005图解安装全过程
  19. 解决webpack报错:ERROR in multi ./xxx/xxx.js ./xxx/xxx.js Module not found: Error: Can't resolve '.\xxx\
  20. 企业管理理论综述与实践 — 管理、使命、愿景、价值观

热门文章

  1. 如何将word中的对象怎么显示到工具栏_职场必备!Word实用技巧最全总结(五)...
  2. gitlab-ee使用mysql_在 GitLab 我们是如何扩展数据库的
  3. android谷歌补丁日期,久违的Android更新补丁:多年前的坑,谷歌终于给填上了
  4. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
  5. java中的time_java中的Time处理
  6. centos linux怎么安装mysql_CentOS-Linux系统下安装MySQL
  7. matlab getsplitpic,MATLAB_9-模式识别笔记
  8. springboot和springcloud有什么关系
  9. 机器学习笔记(六)——朴素贝叶斯法的参数估计
  10. 互联网晚报 | 1月15日 星期六 | 娃哈哈董事长称准备6亿发年终奖;河南省消协对辛巴提起公益诉讼;支付宝上线消息“刷子”功能...