--single-transaction 参数对应MyISAM引擎和InnoDB引擎

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

结论:使用--single-transaction 备份含有MyISAM的表不会获得一致性备份,所有的innodb表可以获得事务开始时的一致性快照,但是MyISAM表获取的是备份该表时的最新快照,

测试库:test,包含表t1,t2,t3,t4,t5,t6  除t6是MyISAM表之外,其他均为innodb表
表t1,t2 数据量相同,均为288W,其他t3,t4,t5,t6 均只含几条记录

控制台:
mysqldump -uxx -pxx --single-transaction test >test.sql 

mysql客户端:
mysql>insert into t6 values(15);  //t6是MyISAM表 

第一次实验:
在控制台发出第一条命令,停留5s,在mysql客户端发出第二条命令,但是保证第二条命令式在第一条命令还未结束时发出,这样可以基本保后一个事务是在第一个事务之后发生,在备份文件中能够找到t6的记录15,
读取的是备份该表时的最新“快照”



控制台:
mysqldump -uxx -pxx --single-transaction test >test.sql 

mysql客户端:
mysql>insert into t5 values(15);  //t5是innodb表
第二次实验:
在控制台发出第一条命令,停留5s,在mysql客户端发出第二条命令,但是保证第二条命令式在第一条命令还未结束时发出,这样可以基本保后一个事务是在第一个事务之后发生,在备份文件中不能够找到t5的记录15,
读取的是备份开始时的快照



--single-transaction 
                      Creates a consistent snapshot by dumping all tables in a
                      single transaction. Works ONLY for tables stored in
                      storage engines which support multiversioning (currently
                      only InnoDB does); the dump is NOT guaranteed to be
                      consistent for other storage engines. While a
                      --single-transaction dump is in process, to ensure a
                      valid dump file (correct table contents and binary log
                      position), no other connection should use the following
                      statements: ALTER TABLE, DROP TABLE, RENAME TABLE,
                      TRUNCATE TABLE, as consistent snapshot is not isolated
                      from them. Option automatically turns off --lock-tables.



本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1602182

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL 存储 关系型数据库
Mysql 的InnoDB引擎下支持hash索引吗?
Mysql 的InnoDB引擎下支持hash索引吗?
838 0
Mysql 的InnoDB引擎下支持hash索引吗?
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别
InnoDB和MyISAM是两个常用的MySQL存储引擎,它们在功能、性能和特性方面有着一些重要区别。下面我将详细解释InnoDB和MyISAM之间的主要区别。
65 0
|
存储 关系型数据库 MySQL
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式
|
存储 JSON 关系型数据库
MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式(上)
MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式(上)
MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式(上)
|
存储 关系型数据库 MySQL
MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式(下)
MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式(下)
|
SQL 存储 关系型数据库
|
SQL 关系型数据库 MySQL
MySQL:Innodb 关于Handler_commit每次DML增加2的原因
简单描述一下,也是本人的问的,水平有限,如果有误请谅解。 原问题如下@mysqDBA: 请教一个问题。我每次insert一条语句,查询show global status like 'Handler_commit'; 发现每次增加值是2,难道不应该是1吗? 最简单的insert into tab.
2125 0
|
SQL Java 关系型数据库
Myisam引擎和InnoDb引擎的区别
Myisam引擎和InnoDb引擎的区别 最近闲来无事,看了下面试题目,看到mysql数据表的引擎模块,目前我们用的比较多的引擎应该是innodb和myisam,其他的引擎暂时抛开不谈,我们先来看看这两个数据表引擎有哪些异同: Myisam引擎和InnoDb引擎的区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2. InnoDB支持外键,而MyISAM不支持。
2181 0