=========================================================
在mysqldump中指定single-transaction时,会使用可重复读(REPEATABLE READ)事务隔离级别来保证整个dump过程中数据一致性,该选项仅对InnoDB表有用,且不能与ALTER TABLE/CREATE TABLE/DROP TABLE/RENAME TABLE/TRUNCATE TABLE等DDL操作并行。

mysqldump的操作步骤如下:
FLUSH TABLES;
FLUSH TABLES WITH READ LOCK;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
SHOW MASTER STATUS;
UNLOCK TABLES; SHOW TABLES LIKE 'xxx'
SET OPTION SQL_QUOTE_SHOW_CREATE=1
SHWO CREATE TABLE 'xxx'
SHOW FIELDS FROM 'xxx'
SHOW TABLE STATUS LIKE 'xxx'
SELECT /*!40001 SQL_NO_CACHE */ * FROM xxx QUIT

通过FLUSH TABLES WITH READ LOCK来锁定所有表,然后开启事务,由于外部事务不能对表数据进行修改,因此SHOW MASTER STATUS的数据不会发生变化,而由于事务隔离级别为REPEATABLE READ,因此在整个mysqldump过程中,获取到的数据为开始事务时的数据,因此可以保证mysqldump出来的数据一致性,并可以结合SHOW MASTER STATUS出来的数据进行恢复。

=========================================================
在MySQL不同版本中,mysqldump --single-transaction与DDL操作发生并行时会出现问题:
http://www.cnblogs.com/TeyGao/p/7121232.html
https://www.cnblogs.com/TeyGao/p/7122924.html

=========================================================
如果从库上开启并行复制,在从库执行mysqldump备份,执行"FLUSH TABLES WITH READ LOCK;"会与并行复制发生相互阻塞。
https://www.cnblogs.com/TeyGao/p/8654933.html

mysqldump命令之single-transaction的更多相关文章

  1. mysql在Windows下使用mysqldump命令备份数据库

    在cmd窗口中使用mysqldump命令首先需要配置环境变量 1,在计算机中找到MySQL的安装位置,找到MySQL Workbench,比如我的是C:\Program Files\MySQL\MyS ...

  2. Mysql中mysqldump命令使用详解

    MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一半,另外的一般是从MySQL数据库中导出数据.有许多的原因我们需要导出数据.一个重要的原因是用于备份数据库.数据的造价常常是昂贵的,需要谨 ...

  3. mysqldump命令

    mysqldump命令 mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 语法 mysqldump(选项) 选项 -- ...

  4. python执行mysqldump命令

    本文简单讲述如何利用python执行一些sql语句,例如执行mysqldump命令,进行数据库备份,备份成sql文件 #!/usr/bin/python#导入os模块import os#导入时间模块i ...

  5. mysqldump命令使用

    1.执行mysqldump命令前,先给配制添加帐号和密码: # vi /etc/my.cnf user=root password=XXXXXX 2. # mysqldump -uroot -pXXX ...

  6. 【MySQL】mysql在Windows下使用mysqldump命令备份数据库

    在cmd窗口中使用mysqldump命令首先需要配置环境变量 1,在计算机中找到MySQL的安装位置,找到MySQL Workbench,比如我的是C:\Program Files\MySQL\MyS ...

  7. 第二课——解析mysqldump命令和mysqlbinlog命令+innodb和Myisam存储引擎简介

    环境说明 mysql版本:Percona-Server-5.6.30 IP:10.7.15.167 端口:3306 安装目录:/httx/run/mysql 数据目录:/httx/run/mysql/ ...

  8. 使用mysqldump命令备份恢复MySQL数据库

    1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文 ...

  9. mysql命令、mysqldump命令找不到解决

    1.解决bash: mysql: command not found 的方法 [root@DB-02 ~]# mysql -u root -bash: mysql: command not found ...

  10. mysqldump 命令

    [参考文章]:mysqldump命令详解 mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 1. 参数介绍 默认为 true:表示默认情况下 ...

随机推荐

  1. 7.7 C++基本关联式容器

    参考:http://www.weixueyuan.net/view/6404.html 总结: 基本的关联式容器主要有:set.multiset.map和multimap,这四种容器可以分为两组:ma ...

  2. 奇怪问题之@RequestBody问题

    在项目中使用到了@RequestBody注解:该注解的作用是获取Request请求中body中的数据:最近测试项目的时候发现调用该接口的时候直接返回状态400,当将@RequestBody注解去掉以后 ...

  3. 接触到的加密算法MD5、SHA1(转)

    参考链接: https://blog.csdn.net/u012611878/article/details/54000607 https://blog.csdn.net/worm0527/artic ...

  4. 通过powerdesiner导出sql,通过sql转mysql为oracle

    1.导出sql文件 Database-->generate database-->确定 执行完就可以看到生成的语句了 2.将mysql的PDM转换为oracle File-->rev ...

  5. Java语法基础学习DayNine(Java集合)

    一.Java集合 1.概述 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就需要对对象进行存储.另一方面,使用Array存储对象具有一些弊端,而Java集合就像一种容器, ...

  6. Java语法基础学习DayTwo

    一.数据类型补充问题 数据类型的自动转换等级: byte,short,char -- int -- long -- float -- double long是8个字节,float是4个字节,为什么是这 ...

  7. 初识Linux------虚拟机VM三种配置网络的解说

    桥接模式: 相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网. NAT模式: 让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主 ...

  8. chromium ④

    chromium的源码非常大,选择合适的点入手能省不少力气.在 win7下编译chromium中我曾提到学习chromium源码的一个小工程test_shell,代码目录在src/webkit/too ...

  9. chromium ①

    Chrome源码剖析 [序] && [一] 1. 它是如何利用多进程(其实也会有多线程一起)做并发的, 进程间通信,进程的开销:2. 做为一个后来者,它的扩展能力如何 3. 它的整体框 ...

  10. c# GetType()和typeof()的区别

    c#   GetType()和typeof()的区别 C#中任何对象都具有GetType()方法,返回Type类型的当前对象的类型. GetType()是基类System.Object的方法,因此只有 ...