--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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 缓存 关系型数据库
都说InnoDB好,那还要不要使用Memory引擎?
【11月更文挑战第16天】本文介绍了 MySQL 中 InnoDB 和 Memory 两种存储引擎的特点及适用场景。InnoDB 支持事务、外键约束,数据持久性强,适合 OLTP 场景;而 Memory 引擎数据存储于内存,读写速度快但易失,适用于临时数据或缓存。选择时需考虑性能、数据持久性、一致性和完整性需求以及应用场景的临时性和可恢复性。
125 6
|
2月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
2月前
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
75 9
|
存储 SQL 缓存
InnoDB、MyISAM、Memory 存储引擎 的区别
InnoDB、MyISAM、Memory 存储引擎 的区别
180 0
|
9月前
|
存储 SQL 关系型数据库
MySQL之深入InnoDB存储引擎——Checkpoint机制
一、引入 由于页的操作首先都是在缓冲池中完成的,那么如果一条DML语句改变了页中的记录,那么此时页就是脏的,即缓冲池中页的版本要比磁盘的新。那么数据库需要将新版本的页刷新到磁盘。倘若每次一个页发生变化就刷新,那么开销会很大,若热点数据集中在某几个页中,那么数据库的性能将变得非常差。 同时如果在缓冲池将新版本的页刷新到磁盘时发生了宕机,那么数据就不能恢复了。为了避免发生数据丢失的问题,当前事务数据库普遍都采用了 Write Ahead Log 策略,即当事务提交时,先写重做日志,再修改页。当由于发生宕机而导致数据丢失时,通过重做日志来完成数据的恢复,从而满足事务的持久性要求。
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别
InnoDB和MyISAM是两个常用的MySQL存储引擎,它们在功能、性能和特性方面有着一些重要区别。下面我将详细解释InnoDB和MyISAM之间的主要区别。
92 0
|
存储 关系型数据库 MySQL
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式
|
关系型数据库 MySQL 索引
MySQL8.0.14 - 新特性 - InnoDB Parallel Read简述
最近的MySQL8.0.14版本增加了其第一个并行查询特性,可以支持在聚集索引上做SELECT COUNT()和check table操作。本文简单的介绍下这个特性。 用法 增加了一个session级别参数: innodb_parallel_read_threads 要执行并行查询,需要满足如下条.
4350 0