mysqldump 参数--lock-tables浅析
mysqldump有一个参数--lock-tables,以前对这个参数也没有详细了解过,直到上次有个网友问“参数lock-tables 是一次性锁定当前库的所有表,还是锁定当前导出表?“ ,之前一直以为只是锁定当前导出表,后面看了参数说明后,
-l, --lock-tables Lock all tables for read.
(Defaults to on; use --skip-lock-tables to disable.)
自己也不怎么确认了,当时就测试了一下。准备一个稍微大一点的库,如果数据库太小,那么可能mysqldum命令一下子就导出了所有库,很难清晰的看到实验结果。
执行下面命令做逻辑备份
[root@DB-Server ~]# mysqldump -u root -p --default-character-set=utf8 --opt --extended-insert=false --lock-tables MyDB > db_backup_MyDB.sql
Enter password:
同时立即执行下面命令
mysql> show open tables where in_use >0;
+----------+--------------------------------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+--------------------------------+--------+-------------+
| MyDB | AO_60DB71_VERSION | 1 | 0 |
| MyDB | AO_AEFED0_TEAM_TO_MEMBER | 1 | 0 |
| MyDB | AO_4B00E6_STASH_SETTINGS | 1 | 0 |
| MyDB | AO_2D3BEA_FOLIOCF | 1 | 0 |
| MyDB | AO_AEFED0_TEAM_ROLE | 1 | 0 |
| MyDB | AO_60DB71_DETAILVIEWFIELD | 1 | 0 |
| MyDB | AO_60DB71_LEXORANK | 1 | 0 |
| MyDB | AO_6714C7_REPORT_SCHEDULE | 1 | 0 |
| MyDB | AO_E8B6CC_SYNC_AUDIT_LOG | 1 | 0 |
| MyDB | cwd_application | 1 | 0 |
| MyDB | clusternode | 1 | 0 |
| MyDB | AO_86ED1B_GRACE_PERIOD | 1 | 0 |
| MyDB | AO_60DB71_WORKINGDAYS | 1 | 0 |
| MyDB | cwd_directory | 1 | 0 |
| MyDB | AO_2D3BEA_BASELINE | 1 | 0 |
| MyDB | fieldlayoutitem | 1 | 0 |
| MyDB | JQUARTZ_BLOB_TRIGGERS | 1 | 0 |
| MyDB | AO_013613_HD_SCHEME_MEMBER | 1 | 0 |
| MyDB | AO_2D3BEA_ALLOCATION | 1 | 0 |
| MyDB | AO_013613_WL_SCHEME | 1 | 0 |
| MyDB | AO_7DEABF_EXEC_CLUSTER_MESSAGE | 1 | 0 |
....................................................................

如上截图,执行mysqldump命令的时候,使用show open tables where in_use >0命令,你会看到MyDB里面的所有表的In_use的值都为1,意味着是当执行mysqldump命令时,是一次性锁定当前库的所有表。而不是锁定当前导出表。
In_use
The number of table locks or lock requests there are for the table. For example, if one client acquires a lock for a table using LOCK TABLE t1 WRITE, In_use will be 1. If another client issues LOCK TABLE t1 WRITE while the table remains locked, the client will block waiting for the lock, but the lock request causes In_use to be 2. If the count is zero, the table is open but not currently being used. In_use is also increased by the HANDLER ... OPEN statement and decreased by HANDLER ... CLOSE.
参考资料:
https://dev.mysql.com/doc/refman/5.7/en/show-open-tables.html
https://oracle-base.com/articles/mysql/mysql-identify-locked-tables
mysqldump 参数--lock-tables浅析的更多相关文章
- mysqldump: Got error: 1142: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'accounts' when using LOCK TABLES
AutoMySQLBackup备份时,出现mysqldump: Got error: 1142: SELECT, LOCK TABLES command denied to user 'root'@' ...
- mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES
mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES 我是把一些mysqldu ...
- mysqldump: Got error: 1449: The user specified as a definer ('user'@'%') does not exist when using LOCK TABLES
报错:一个库用mysqldump -u -p --opt --force -e --max_allowed_packet= --net_buffer_length= --databases备份时报错如 ...
- mysqldump when doing LOCK TABLES问题
今天打出表结构和数据遇到问题. mysqldump -udbuser -p dbname > dbname.sql 保存信息为: when doing LOCK TABLES 解决方法: mys ...
- mysqldump备份数据库时出现when using LOCK TABLES
用mysqldump备份数据库时,如果出现when using LOCK TABLES,解决办法是加上 --skip-lock-tables 例如: 用mysqldump备份数据库时出现 29: Fi ...
- Centos下_MysqL5.7在使用mysqldump命令备份数据库报错:mysqldump: Got error: 1449: The user specified as a definer ('fk_system'@'localhost') does not exist when using LOCK TABLES
在阿里云服务器增加一个shell脚本定时备份数据库脚本执行任务时,测试性的执行了备份命令,如下 [root@iZ2ze503xw2q1fftv5rhboZ mysql_bak]# /usr/local ...
- MySQL中lock tables和unlock tables浅析
MySQL中lock tables和unlock tables浅析 在MySQL中提供了锁定表(lock tables)和解锁表(unlock tables)的语法功能,ORACLE与SQL Se ...
- 在给mysql数据库备份时,报错: mysqldump: Got error: 145: Table '.\shengdaxcom\pre_forum_thread' is marked as c rashed and should be repaired when using LOCK TABLES
在给mysql数据库备份时,报错: mysqldump: Got error: 145: Table '.\shengdaxcom\pre_forum_thread' is marked as cra ...
- mysqldump: Got error: 1449: The user specified as a definer ('xxx'@'%') does not exist when using LOCK TABLES
开发同学说在测试环境使用mysqldump导出数据的时候遇到以下错误: # mysqldump -uroot -p --all-databases --routines --events --trig ...
- Mysqldump参数大全
Mysqldump参数大全(参数来源于mysql5.5.19源码) 参数 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --al ...
随机推荐
- 微信小程序自定义navigationBar标题栏
小程序默认使用的navigationBar只能设置颜色.文字,左侧返回按钮也是不可改变的,若要实现下方效果有解决方案,但是也有一定的问题. 1.更改app.json "window" ...
- 解决:MVC对象转json包含\r \n
项目中对象转json字符串时,如下:JsonSerializerSettings jsetting = new JsonSerializerSettings(); jsetting.DefaultVa ...
- [NewLife.XCode]数据初始化
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...
- 【原创】uC/OS 中LES BX,DWORD PTR DS:_OSTCBCur的作用及原理
LES BX, DWORD PTR DS:_OSTCBCur ;OSTCBCur->OSTCBStkPtr = SS:SP!!! ], SS ;将当前SS(栈的基地址)寄存器值存放至当前任务控制 ...
- ES6躬行记(7)——代码模块化
在ES6之前,由于ECMAScript不具备模块化管理的能力,因此往往需要借助第三方类库(例如遵守AMD规范的RequireJS或遵循CMD规范的SeaJS等)才能实现模块加载.而自从ES6引入了模块 ...
- Linux常用命令之文件和目录处理命令
目录 1.Linux命令的普遍语法格式 2.目录处理命令 一.显示目录文件命令:ls 二.创建目录命令:mkdir 三.切换目录命令:cd 四.shell内置命令和外部命令的区别 五.显示当前目录命令 ...
- spring-boot(六) 邮件服务
学习文章来自:springboot(十):邮件服务 简单使用 1.pom包配置 pom包里面添加spring-boot-starter-mail包引用 <dependencies> < ...
- 用主题模型可视化分析911新闻(Python版)
本文由 伯乐在线 - 东狗 翻译,toolate 校稿.未经许可,禁止转载!英文出处:blog.dominodatalab.com.欢迎加入翻译小组. 本文介绍一个将911袭击及后续影响相关新闻文章的 ...
- [THUWC2017] 在美妙的数学王国畅游
Description 懒得概括了.. Solution 挺裸的LCT+挺裸的泰勒展开吧... 稍微了解过一点的人应该都能很快切掉...吧? 就是把每个点的函数泰勒展开一下然后LCT维护子树sum就行 ...
- Go基础系列:Go接口
接口用法简介 接口(interface)是一种类型,用来定义行为(方法). type Namer interface { my_method1() my_method2(para) my_method ...