`
shootyou
  • 浏览: 84246 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

FLUSH TABLES WITH READ LOCK 和 LOCK TABLES 之种种

阅读更多

今天在解决数据库同步异常的时候用到了flush tables with read lock 这个命令,于是顺便就学习了下锁表的相关知识。

1.FLUSH TABLES WITH READ LOCK

这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。

解锁的语句也是unlock tables。

2.LOCK TABLEStbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

这个命令是表级别的锁定,可以定制锁定某一个表。例如: lock tables test read; 不影响其他表的写操作。

解锁语句也是unlock tables。

这两个语句在执行的时候都需要注意个特点,就是 隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一直保持对话。

P.S. MYSQL的read lock和wirte lock

 

read-lock:允许其他并发的读请求,但阻塞写请求,即可以同时读,但不允许任何写。也叫共享锁

write-lock:不允许其他并发的读和写请求,是排他的(exclusive)。也叫独占锁

分享到:
评论

相关推荐

    19.为什么我只查一行的语句也执行这么慢?1

    而在MySQL 5.7中,使用`ALTER TABLE`不会产生相同的效果,但执行`FLUSH TABLES`或`FLUSH TABLES WITH READ LOCK`可以复现等待MDL锁的场景。 处理此类问题的关键在于找到持有MDL写锁的线程并结束它。在`show ...

    Mysql数据备份与mysqldump增量备份.docx

    为了保证数据的一致性,需要在备份文件前,执行以下 SQL 语句:FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。 而使用 mysqldump 备份...

    MySQL-Flush命令用法.docx#资源达人分享计划#

    with read lock; 命令来关闭指定的表并清空指定表的缓存。 MySQL Flush 命令是一个非常强大和灵活的命令,它可以用于清除或重新加载各种高速缓存、表或者获取锁等,以便解决各种问题。但是,需要注意的是,执行 ...

    全局锁、表级锁以及行锁(下)1

    全局锁的使用通常通过命令如`FLUSH TABLES WITH READ LOCK`来开启,并通过`UNLOCK TABLES`来解除。 表级锁则是在表层面进行锁定,分为读锁(共享锁,S-Lock)和写锁(排他锁,X-Lock)。读锁允许多个事务同时读取...

    全局锁、表级锁以及行锁(上)1

    **全局锁**,全称是全局读锁(Global Transaction Lock),通过`FLUSH TABLES WITH READ LOCK`命令进行加锁,解锁使用`UNLOCK TABLES`。全局锁的主要作用是在进行全库逻辑备份时确保数据的一致性。当全局锁生效时,...

    mysql_5.5._下的主从模式.pdf

    - **锁定数据**:为了安全地备份,可以使用 `flush tables with read lock` 命令锁定所有表。 ```sql mysql> flush tables with read lock; ``` - **获取日志信息**:运行 `show master status` 获取最新的二...

    MySQL事务控制和锁机制

    FLUSH TABLES WITH READ LOCK; 解锁的语法: UNLOCK TABLES; 全局锁的典型使用场景是,做全库逻辑备份。应用全局锁做逻辑备份有以下问题: 如果你在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆...

    win2003下MySQL数据同步

    在进行数据同步之前,需要对服务器A和B的数据进行备份,并使用`FLUSH TABLES WITH READ LOCK`命令来获取当前的二进制日志文件位置,以便后续在从属服务器上恢复数据时使用。 - **服务器A上:** ```sql mysql> ...

    mysql45讲 19.为什么我只查一行的语句,也执行这么慢?1

    * flush tables t with read lock; * flush tables with read lock; 这两个 flush 语句,如果指定表 t 的话,代表的是只关闭表 t;如果没有指定具体的表名,代表的是关闭所有表。 MySQL 在执行 flush 语句时,会...

    mysql的备份、恢复策略

    在备份前需使用`FLUSH TABLES WITH READ LOCK`命令确保数据一致性,并锁定所有表,防止数据写入。然后,拷贝数据文件到安全位置。恢复时直接将备份文件放回原目录。然而,这种方法无法实现增量备份,对大型数据库来...

    全局锁、表锁、行锁.doc

    全局锁(Global Lock)是指对整个数据库实例加锁,最常用的实现方式是`FLUSH TABLES WITH READ LOCK`(FTWRL)。使用全局锁后,数据库将进入只读状态,所有DML(数据修改语言)和DDL(数据定义语言)操作以及提交...

    19.为什么我只查一行的语句,也执行这么慢?1

    这通常意味着有其他操作正在进行,例如`FLUSH TABLES`或`FLUSH TABLES WITH READ LOCK`,这两种命令会关闭所有打开的表或指定表,以便进行备份或其他维护工作。如果这些操作被其他事务阻塞,那么后续的查询将会等待...

    常用sql脚本

    - `FLUSH TABLES WITH READ LOCK;`:用于锁定所有表以便进行备份操作,锁定期间其他会话无法修改表数据。 - `UNLOCK TABLES;`:用于解锁之前锁定的表,恢复正常的读写操作。 以上SQL脚本涵盖了MySQL中常见的一些...

    你需要理解的关于MySQL的锁知识

    FLUSH TABLES WITH READ LOCK 这条语句一般都是用来备份的,当执行这条语句后,数据库所有打开的表都会被关闭,并且使用全局读锁锁定数据库的所有表,同时,其他线程的更新语句(增删改),数据定义语句(建表,修改...

    MySQL 备份和恢复策略

    为了保证数据一致性,在拷贝前需执行 `FLUSH TABLES WITH READ LOCK` 语句,这会将内存中的数据写入磁盘并锁定所有表,防止备份过程中有新数据写入。然而,这种方法仅适用于短时间内无写操作的系统,且恢复时只需将...

    MySQL 全局锁、表级锁、行级锁

    - MySQL 中的 `FLUSH TABLES WITH READ LOCK` 命令用于获取全局读锁,而 `UNLOCK TABLES` 命令用于释放全局锁。在 InnoDB 引擎中,`mysqldump --single-transaction` 可以在不使用全局锁的情况下完成快照式备份。 ...

    MySQL 备份工具Xtrabackup.docx

    在备份非InnoDB文件时,innobackupex会执行`FLUSH TABLES WITH READ LOCK`命令,确保备份的一致性。当所有备份任务完成后,会执行`UNLOCK TABLES`,解除锁定,恢复正常服务。 安装Xtrabackup相对简单,可以从...

    Xtrabackup备份与恢复.pdf

    5. innobackupex收到xtrabackup通知后,执行FLUSH TABLES WITH READ LOCK,取得一致性位点,然后开始备份非InnoDB文件。 6. 当innobackup拷贝完所有的非InnoDB文件后,会通知xtrabackup,通知完成后,进入等待状态。...

    如何设置MySQL同步(双机热备)

    mysql>FLUSH TABLES WITH READ LOCK; 然后导出数据,可以直接打包压缩数据文件,也可以使用 mysqldump 工具来做。 启动 Slave 数据库 将备份的数据拷贝到 Slave 服务器上,解开,设置好正确的权限及属主等之后,...

Global site tag (gtag.js) - Google Analytics