FLUSH TABLES WITH READ LOCK

会话1:

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.18 sec)

mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host            | db   | Command | Time | State    | Info             |
+----+------+-----------------+------+---------+------+----------+------------------+
| 12 | root | localhost:48850 | NULL | Sleep   | 3603 |          | NULL             |
| 13 | root | localhost:48851 | test | Sleep   | 2665 |          | NULL             |
| 14 | root | localhost:49828 | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------------+------+---------+------+----------+------------------+
3 rows in set (0.00 sec)

mysql> use test;
Database changed
mysql> create table tt( a int);
ERROR 1223 (HY000): Can‘t execute the query because you have a conflicting read lock
会话2:

mysql> use test;
Database changed
mysql> create table tt(a int);
会话1:

mysql> show processlist;
+----+------+-----------------+------+---------+------+------------------------------+------------------------+
| Id | User | Host            | db   | Command | Time | State                        | Info                   |
+----+------+-----------------+------+---------+------+------------------------------+------------------------+
| 12 | root | localhost:48850 | NULL | Sleep   | 3712 |                              | NULL                   |
| 13 | root | localhost:48851 | test | Sleep   | 2774 |                              | NULL                   |
| 14 | root | localhost:49828 | test | Query   |    0 | starting                     | show processlist       |
| 15 | root | localhost:49833 | test | Query   |    7 | Waiting for global read lock | create table tt(a int) |
+----+------+-----------------+------+---------+------+------------------------------+------------------------+
4 rows in set (0.00 sec)
1.当退去会话1后,就会自动释放锁,会话2,就可执行
2.unlock table
时间: 2024-08-25 14:38:14

FLUSH TABLES WITH READ LOCK的相关文章

FLUSH TABLES WITH READ LOCK 和 LOCK TABLES 之种种

1.FLUSH TABLES WITH READ LOCK 这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读.一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行. 解锁的语句也是unlock tables. 2.LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} 这个命令是表级别的锁定,可以定制锁定某一个表.例如: lock  tables test read; 不影响其他

mysql出现大量FLUSH TABLES WITH READ LOCK

解决办法 故障总结 系统中的global read lock被其它线程获取了(被加上了S锁),因此DML在grl上面加IX锁时会出现Waiting for global read lock,而set read_only在grl上加的是S锁,因此此时是可以grant的,而此时系统中存在大查询,set global read_only=1需要等待表被关闭,因此状态是:Waiting for table flush 因此原因可以确定了:系统中存在flush tables with read lock但

FLUSH TABLE WITH READ LOCK详解

FLUSH TABLES WITH READ LOCK简称(FTWRL),该命令主要用于备份工具获取一致性备份(数据与binlog位点匹配).由于FTWRL总共需要持有两把全局的MDL锁,并且还需要关闭所有表对象,因此这个命令的杀伤性很大,执行命令时容易导致库hang住.如果是主库,则业务无法正常访问:如果是备库,则会导致SQL线程卡住,主备延迟.本文将详细介绍FTWRL到底做了什么操作,每个操作的对库的影响,以及操作背后的原因. FTWRL做了什么操作? FTWRL主要包括3个步骤: 1.上全

flush table with read lock的轻量级解决方案[原创]

为什么要使用FTWRL ? MySQL dba在日常工作中,数据备份绝对是工作频度最高的工作内容之一.当你使用逻辑方式进行备份(mydumper,mysqldump)或物理方式进行备份(percona-xtrabackup),为了保证数据的一致性,这两种备份方式都会在备份过程中执行 flush table with read lock 这个命令(**以下简称为FTWRL**),通过执行FTWRL,来对事务和非事务表来加table level级别的共享锁,取得此时的gtid或者binlog偏移量,

Innodb加载数据字典 && flush tables

测试了两个case,属于之前blog的遗留问题: innodb如何加载数据字典 flush tables都做了什么操作 先来看下innodb加载数据字典: 首次使用:select * from tt; 1. 创建handler对象 函数调用栈: open_binary_frm get_new_handler innobase_create_handler ha_innobase::ha_innobase 根据单实例 handlerton + table_share两个参数,创建了handler对

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 我是把一些mysqldump语句放在一个批量命令文件(传说中的.sh文件)中执行的,而当我把这些mysqldump语句分离开来一个一个执行的时候,我发现是没有任何错误的,于是在网络上找了一些资料:发现是mysql默认数据库里的logs表,不能被加锁(lock tables)引起的.于是我测试了一下,把关于mysql这个默认

flush tables 好危险啊

请看图 +----+------+-----------+------+------------+------+-------------------------+----------------------------------------+| Id | User | Host | db | Command | Time | State | Info |+----+------+-----------+------+------------+------+------------------

MySQL5.6.12 Waiting for commit lock导致从库hang住的问题剖析

nagios报警,线上一台从库检测不到slave状态,于是远程上去查看问题: 1,show slave status\G卡住: Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show slave status\G show slave status卡住了,动弹不了,这种情况还是第一次遇到. 2,看w负载无压力: [root@tmp3_72 ~]# w 13:23:31 u

MySQL Flush导致的等待问题

--MySQL Flush导致的等待问题 -------------------------------2014/07/13 前言 在实际生产环境中有时会发现大量的sql语句处于waiting for table.. 状态中,有时候看起来会让人觉得困惑,本文将讲解此状态产生的原因及解决办法. 正文 本文中用到了lock table来模拟实际情况, 首先介绍一个lock tables需要注意的事项,如果在一个session中使用了lock tables,那么在此session中将只能访问获取到lo