首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysqldump 如何不锁表

mysqldump 是 MySQL 数据库管理系统中用于备份数据库的命令行工具。默认情况下,mysqldump 在导出数据时会使用 LOCK TABLES 语句来锁定被导出的表,以防止在备份过程中数据发生变化。然而,在某些情况下,你可能希望避免锁定表,以免影响数据库的正常运行。

不锁表的方法

从 MySQL 5.6.14 版本开始,可以通过 mysqldump--single-transaction 选项来实现不锁表的备份。这个选项会在导出数据之前启动一个事务,并将整个备份过程放在这个事务中。由于事务的隔离性,其他客户端看到的数据库状态要么是在备份开始之前的状态,要么是在备份结束之后的状态,从而避免了数据的不一致性。

使用 --single-transaction 选项的命令示例如下:

代码语言:txt
复制
mysqldump --single-transaction -u username -p database_name > backup.sql

此外,还可以使用 --lock-tables=false 选项来禁止 mysqldump 锁定表。但请注意,这个选项并不总是安全的,因为它依赖于数据库的隔离级别来保证数据的一致性。如果数据库的隔离级别设置不当,可能会导致备份的数据不一致。

代码语言:txt
复制
mysqldump --lock-tables=false -u username -p database_name > backup.sql

注意事项

  1. 数据库隔离级别:在使用 --single-transaction--lock-tables=false 选项时,务必确保数据库的隔离级别设置得当,以保证备份的数据一致性。
  2. 备份一致性:虽然这些选项可以避免锁定表,但在备份过程中数据库仍然可能会发生变化。因此,备份完成后应尽快进行验证,以确保备份数据的完整性。
  3. 权限要求:执行 mysqldump 命令需要具有足够的权限。通常,需要拥有 SELECT 权限以及备份数据库中所有表的 LOCK TABLES 权限(尽管在使用 --single-transaction--lock-tables=false 时不需要 LOCK TABLES 权限)。

应用场景

不锁表的备份特别适用于以下场景:

  • 高并发环境:在数据库访问量很大的情况下,避免锁定表可以减少对其他客户端的影响。
  • 实时性要求高的应用:对于需要实时响应的应用,避免锁定表可以确保备份过程不会干扰到正常的业务逻辑。

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysqldump指定数据导出

mysqldump指定数据导出 作者:matrix 被围观: 1,835 次 发布时间:2021-03-31 分类:mysql | 一条评论 » 这是一个创建于 518 天前的主题,其中的信息可能已经有所发展或是发生改变...平时习惯使用mysql客户端工具直接导出数据,这突然需要导出指定前缀的反而变得麻烦,因为非常多但又不想全部选择。 e.g....导出dict_开头的数据 查询符合条件的名 select table_name from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA = 'heal'...-t heal -uroot --tables dict_union dict_tag > ~/db_script.sql -P端口号 -p密码 --tables 指定多个数据 报错 mysqldump...: Couldn't execute mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."

3.7K20

MySQL 全局和行

今天分享的内容是MySQL的全局和行。...而 --single-transaction方法只适用于所有的使用事务引擎的库; 2、 MySQL里面级别的有两种,一种是,一种是元数据(MDL) 的加锁方式为lock tables...当前线程也不能对表t1做写的操作 MDL元数据是指在对一个做增删改查的时候,MySQL会对该加MDL读,防止另外一个线程对该做变更操作,当对一个做表结构变更的时候,会对该加MDL写。...t1; T3:select * from t1;(执行一段时间) T4:rollback to sp; T1时刻mysqldump设置一个保存点,然后拿到t1结构(T2)和数据(T3),最后,...,mysqldump占着t1的MDL读,binlog被阻塞,现象:主从延迟,直到T4执行完成 在T3和T4之间到达,则没有影响,因为mysqldump已经释放了MDL读

4.4K20
  • MySQL中的、行

    页面:开销和加锁时间界于和行之间;会出现死锁;锁定粒度界于和行之间,并发度一般 MySQL模式(MyISAM) MySQL有两种模式:共享(Table Read Lock...MySQL模式     MySQL的有两种模式:共享读(Table Read Lock)和独占写(Table Write Lock)。...模式的兼容如下表 MySQL中的兼容性 当前模式/是否兼容/请求模式 None 读 是 是 否 写 是 否 否     可见,对MyISAM的读操作,不会阻塞其他用户对同一的读请求...这意味着所有相关的数据规则都必须应用于事务的修改,以操持完整性;事务结束时,所有的内部数据结构(B树索引或双向链表)也都必须是正确的。...Innodb_row_lock_waits | 0 | +-------------------------------+-------+ 5 rows in set (0.00 sec)     如果发现争用比较严重,Innodb_row_lock_waits

    4.8K10

    并发 (三):myisam

    在之前我们讲到了并发下的重要性,以及在php中怎么实现文件 现在我们来讲讲关于mysql之间的:和行 MyISAM MyISAM 存储引擎只支持,这也是MySQL 开始几个版本中唯一支持的类型...模式 所谓,就是按为单位直接锁住整个 MySQL的有两种模式:共享读(Table Read Lock)和独占写(Table Write Lock)。...在前面的文章已经讲过了共享和独占,不多解释 如何加 MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有加读,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的加写...那么,一个进程请求某个 MyISAM的读,同时另一个进程也请求同一的写,MySQL如何处理呢?答案是写进程先获得。不仅如此,即使读请求先到等待队列,写请求后到,写也会插到读请求之前!...在用LOCK TABLES给表显式加时,必须同时取得所有涉及到,并且MySQL不支持升级。

    1.4K20

    MySQL中的、行

    页面:开销和加锁时间界于和行之间;会出现死锁;锁定粒度界于和行之间,并发度一般 MySQL模式(MyISAM) MySQL有两种模式:共享(Table Read Lock...MySQL模式 MySQL的有两种模式:共享读(Table Read Lock)和独占写(Table Write Lock)。...这意味着所有相关的数据规则都必须应用于事务的修改,以操持完整性;事务结束时,所有的内部数据结构(B树索引或双向链表)也都必须是正确的。...Innodb_row_lock_time_max | 0 | | Innodb_row_lock_waits | 0 | +———————————————-+———-+ 5 rows in set (0.00 sec) 如果发现争用比较严重,Innodb_row_lock_waits...什么时候使用 对于InnoDB,在绝大部分情况下都应该使用行级,因为事务和行往往是我们之所以选择InnoDB的理由。但在个另特殊事务中,也可以考虑使用

    5.1K20

    MySQL行

    为了解决这个问题,MySQL引入了机制,其中最常见的是行。 行是MySQL中最细粒度的,它锁定了中的一行记录,允许其他事务访问中的其他行。...行适用于高并发的情况,因为它允许多个事务同时访问的不同行,从而提高了数据库的并发性能。 是MySQL中粗粒度的,它锁定了整个,阻止其他事务访问中的任何行。...适用于需要对整个进行操作的情况,但它会降低数据库的并发性能,因为只有一个事务可以访问。 行的使用 行可以通过在SQL语句中使用FOR UPDATE或FOR SHARE子句来实现。...在解锁之前,其他事务无法访问。 需要注意的是,会阻止其他事务访问相同的,因此在高并发环境中使用可能会导致性能问题。...行的选择 在使用MySQL机制时,选择行还是取决于具体的应用场景。通常情况下,应该尽量使用行,因为它可以提高并发性能,并减少锁定的粒度,从而减少了冲突的可能性。

    32840

    mysql mysqldump 只导出结构 不导出数据

    复制代码代码如下: mysqldump --opt -d 数据库名 -u root -p > xxx.sql 备份数据库 复制代码代码如下: #mysqldump 数据库名 >数据库备份名 #mysqldump... -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop-table -uroot -p >xxx.sql 1.导出结构不导出数据 复制代码代码如下...: mysqldump --opt -d 数据库名 -u root -p > xxx.sql 2.导出数据不导出结构 复制代码代码如下: mysqldump -t 数据库名 -uroot -p > xxx.sql...3.导出数据和结构 复制代码代码如下: mysqldump 数据库名 -uroot -p > xxx.sql 4.导出特定的结构 复制代码代码如下: mysqldump -uroot -p -B ...数据库名 --table 名 > xxx.sql 导入数据:   由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了: 复制代码代码如下: #mysql

    16.1K30

    【MySQL】一文带你理清<>(,元数据,意向

    本章主要内容面向接触过C++ Linux的老铁 主要内容含: 一. 的基本概念&分类【,元数据,意向,每次操作锁住整张。...对于,主要分为以下三类: 元数据 意向 【1】 对于,分为两类: 共享读 (read lock) 独占写 (write lock) 语法: 加锁: locktables...意向共享(IS): 与共享(read)兼容 , 与排它(write)互斥 意向排他(IX): 与共享(read)及排它(write)都互斥 。...输入查看代码 我们可以看到lock_mode下面对应的是IS,说明加的共享是意向共享 我们知道,意向共享(IS): 与共享(read)兼容 , 与排它(write)互斥 也就意味着此时可以加...(读) ,而不能加 (写

    13610

    MySQL、行、排它和共享

    (MVCC是已提交读和可重复读的原理,是串行化的原理) 二、&行级 :对整张加锁。...开销小(因为不用去找的某一行的记录进行加锁,要修改这张,直接申请加这张),加锁快,不会出现死锁;粒度大,发生冲突的概率高,并发度低 行级:对某行记录加锁。...此时会放弃使用索引,因此也不会使用行,而是使用,比如对一些很小的,MySQL就不会去使用索引 三、排它(Exclusive)和共享(Shared) 排它,又称为X,写 共享,又称为...这就意味着只有通过索引检索数据,InnoDB才使用行级,如果做整扫描,InnoDB将使用!!!...还是行级说的是的粒度,共享和排他说的是的性质,不管是还是行,都有共享和排他的区分

    26340

    MySQL如何加行或者

    MySQL可以使用来控制对表和行的访问,下面简单介绍一下如何对表和行进行加锁的方法 对表加锁 是在整张上加锁,其粒度最大,对并发性的影响也最大。...在MySQL中对表进行加锁,主要有两种模式:共享和排他 共享(S Lock),多个事务可以同时获取共享,但是只能进行读操作,不能进行修改操作 排他(X Lock),获得排他的事务可以进行修改操作...,其他事务不能获取 针对上面介绍的两种,可以使用命令对表进行加锁 LOCK TABLES table_name [AS alias_name] lock_type 其中,table_name表示名...,alias_name表示别名,lock_type表示的类型,可以是READ(共享)或WRITE(排他) 例如,对表 t1加共享和排他 # 对表t1加共享 LOCK TABLES t1 READ...; # 对表t1加排他 LOCK TABLES t1 WRITE; 对行加锁 行级是在的行上加锁,其粒度最小,对并发性的影响也最小。

    1.6K20

    MySQL 和行机制

    MySQL 和行机制 行,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。...通过本章内容,带你学习MySQL的行,两种的优缺点,行的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿! MySQL的存储引擎是从MyISAM到InnoDB,到行。...虽然开销小,快,但高并发下性能低。行虽然开销大,慢,但高并发下相比之下性能更高。事务和行都是在确保数据准确的基础上提高并发的处理能力。本章重点介绍InnoDB的行。... 的优势:开销小;加锁快;无死锁 的劣势:粒度大,发生冲突的概率高,并发处理能力低 加锁的方式:自动加锁。...总结 1 InnoDB 支持和行,使用索引作为检索条件修改数据时采用行,否则采用

    5.7K40

    事务、视图、

    18. 触发器 COMMIT; -- 事务回滚 ROLLBACK; 如果部分操作发生问题,映射到事务开启前。 -- 事务的特性 1....(针 对当前事务) 5.什么是视图 (1)视图是一张虚拟 表示一张的部分数据或多张的综合数据 其结构和数据是建立在对表的查询基础上 (2)视图中不存放数据 数据存放在视图所引用的原始中 (3...; SELECT * FROM views\G; 使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询 示例: /*创建视图 创建前先判断是否存在,存在则删除*/ use house; drop...on r.subjectNo = so.subjectNo order by s.studentNo; select *,count(*)from view_student_result ; 9..../* */ 锁定只用于防止其它客户端进行不正当地读取和写入 MyISAM 支持,InnoDB 支持行 -- 锁定 LOCK TABLES tbl_name [AS alias] -- 解锁

    64320

    mysqldump命令详解 Part 3-备份单

    MySQL测试数据的构造 [MySQL学习笔记]2. mysqldump命令详解 Part 1 [MySQL学习笔记] 3.mysqldump命令详解 Part 2 -备份全库 实验环境: MySQL...备份语句 我们来备份test数据库中的innodb_table和isam_table mysqldump -h127.0.0.1 -usystem -p123456 --set-gtid-purged...首先依然是mysqldump的版本信息 主机名信息 已经一些变量的设置 再次提醒 /!123456*/ 不是注释 详情看上一节介绍 2.2 的结构 ?...总结 可以看出单独导出有如下内容 删除(如果存在) 建 禁用非唯一索引 插入数据 启用非唯一索引(重建索引) 释放 触发器(如果有) 不同于全库备份没有如下内容 建立数据库(如果不存在)...使用数据库 同时一条语句不能导出多个数据库中的 今天的内容就到这里,欢迎查看 可点击阅读原文获得更好的阅读体验,推荐在PC端阅读 也可在公众号内回复 mysqldump 搜索相关内容 或直接打开个人网页搜索

    2.1K20

    mysqldump命令详解 Part 4-备份单

    备份语句 我们来备份test数据库中的innodb_table和isam_table mysqldump -h127.0.0.1 -usystem -p123456 --set-gtid-purged...首先依然是mysqldump的版本信息 主机名信息 已经一些变量的设置 再次提醒 \/!123456\/ 不是注释 详情看上一节介绍 2.2 的结构 ?...接下来是的信息 首先是如果存在则删除(DROP TABLE IF EXISTS) 之后建立(CREATE TABLE) 2.3 数据的备份 ?...KEYS),这样能加快插入速度 之后将数据转换成insert语句(INSERT INTO) 之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS) 最后释放(UNLOCK TABLES...总结 可以看出单独导出有如下内容 删除(如果存在) 建 禁用非唯一索引 插入数据 启用非唯一索引(重建索引) 释放 触发器(如果有) 不同于全库备份没有如下内容 建立数据库(如果不存在)

    2.4K20

    mysql 详解

    并发度也最高 页面 开销和加锁时间界于和行之间;会出现死锁;锁定粒度界于和行之间,并发度一般 仅从的角度来说: 更适合于以查询为主,只有少量按索引条件更新数据的应用,Web...为此如果一个更新频率比较高,超市的收银系统,那么可以通过使用Lock Tables选项来提高更新速度。...措施二:将某个分为几个来降低竞争   如一个大型的购物超市,沃尔玛,其销售纪录每天的更新操作非常的多。此时如果用户在更新的同时,另外有用户需要对其进行查询,显然竞争的现象会比较严重。...针对这种情况,其实可以人为的将某张分为几个可以为每一台收银机专门设置一张数据。如此的话,各台收银机之间用户的操作都是在自己的中完成,相互之间不会产生干扰。...现在需要对数据同时进行插入和删除的作业,此时如果能够使用Insert Delayed选项,将会给用户带来很大的帮助。再如对同一个数据执行Select和Delete语句会有竞争的情况。

    3.4K10

    MySQL中的、行,共享,排它,间隙

    在数据库中,除传统的 计算资源(CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。...仅从的角度 来说:更适合于以查询为主,只有少量按索引条件更新数据的应用,Web应用;而行级则更适合于有大量按索引条件并发更新少量不同数据,同时又有 并发查询的应用,如一些在线事务处理(OLTP...MyISAM MySQL的有两种模式:共享读(Table Read Lock)和独占写(Table Write Lock)。...这意味着所有相关的数据规则都必须应用于事务的修改,以操持完整性;事务结束时,所有的内部数据结构(B树索引或双向链表)也都必须是正确的。...如果发现争用比较严重,InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过设置InnoDB Monitors来进一步观察发生冲突的

    2.4K30

    MySQL:、行级、共享、排他、乐观、悲观

    一文读懂所有,了解他们的优缺点和使用场景。 与行级 : table-level locking,锁住整个。 开销小,加锁快。 不会死锁(一次性加载所需的所有)。...对聚簇索引加锁,实际效果跟一样,因为找到某一条记录就得扫描全,要扫描全,就得锁定。 引擎与: MyISAM引擎支持,不支持行级。...InnoDB引擎支持和行级,默认为行级。 共享与排他 共享: 有称之为S、读。...语法:select id from t_table in share mode; 多个共享可以共存,共享与排他不能共存。 排他: 又称之为X、写。...乐观与悲观 乐观与悲观是逻辑上的。 乐观: 乐观:乐观地认为,并发问题很难发生。

    1K20
    领券