程序员

MySQLump 参数--Lock-Tables浅析

作者:admin 2021-04-14 我要评论

本文转载自微信公众号「DBA闲思杂想录」,作者潇湘隐者 。转载本文请联系DBA闲思杂想录公众号。 mysqldump有一个参数--lock-tables,以前对这个参数也没有深入、...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

本文转载自微信公众号「DBA闲思杂想录」,作者潇湘隐者 。转载本文请联系DBA闲思杂想录公众号。   

mysqldump有一个参数--lock-tables,以前对这个参数也没有深入、详细了解过,直到上次有个网友问“参数lock-tables 是一次性锁定当前库的所有表,还是锁定当前导出表?“ ,之前一直以为只是锁定当前导出表,后面看了参数说明后,

  1. -l, --lock-tables   Lock all tables for read. 
  2.  
  3.                       (Defaults to on; use --skip-lock-tables to disable.) 

自己也不怎么确认了,当时就测试了一下。准备一个稍微大一点的库,如果数据库太小,那么可能mysqldum命令一下子就导出了所有库,很难清晰的看到实验结果。

执行下面命令做逻辑备份

  1. [root@DB-Server ~]# mysqldump -u root -p --default-character-set=utf8  --opt --extended-insert=false --lock-tables MyDB > db_backup_MyDB.sql 
  2.  
  3. Enter password

同时立即执行下面命令

  1. mysql> show open tables where in_use >0; 
  2. +----------+--------------------------------+--------+-------------+ 
  3. Database | Table                          | In_use | Name_locked | 
  4. +----------+--------------------------------+--------+-------------+ 
  5. | MyDB     | AO_60DB71_VERSION              |      1 |           0 | 
  6. | MyDB     | AO_AEFED0_TEAM_TO_MEMBER       |      1 |           0 | 
  7. | MyDB     | AO_4B00E6_STASH_SETTINGS       |      1 |           0 | 
  8. | MyDB     | AO_2D3BEA_FOLIOCF              |      1 |           0 | 
  9. | MyDB     | AO_AEFED0_TEAM_ROLE            |      1 |           0 | 
  10. | MyDB     | AO_60DB71_DETAILVIEWFIELD      |      1 |           0 | 
  11. | MyDB     | AO_60DB71_LEXORANK             |      1 |           0 | 
  12. | MyDB     | AO_6714C7_REPORT_SCHEDULE      |      1 |           0 | 
  13. | MyDB     | AO_E8B6CC_SYNC_AUDIT_LOG       |      1 |           0 | 
  14. | MyDB     | cwd_application                |      1 |           0 | 
  15. | MyDB     | clusternode                    |      1 |           0 | 
  16. | MyDB     | AO_86ED1B_GRACE_PERIOD         |      1 |           0 | 
  17. | MyDB     | AO_60DB71_WORKINGDAYS          |      1 |           0 | 
  18. | MyDB     | cwd_directory                  |      1 |           0 | 
  19. | MyDB     | AO_2D3BEA_BASELINE             |      1 |           0 | 
  20. | MyDB     | fieldlayoutitem                |      1 |           0 | 
  21. | MyDB     | JQUARTZ_BLOB_TRIGGERS          |      1 |           0 | 
  22. | MyDB     | AO_013613_HD_SCHEME_MEMBER     |      1 |           0 | 
  23. | MyDB     | AO_2D3BEA_ALLOCATION           |      1 |           0 | 
  24. | MyDB     | AO_013613_WL_SCHEME            |      1 |           0 | 
  25. | MyDB     | AO_7DEABF_EXEC_CLUSTER_MESSAGE |      1 |           0 | 
  26. .................................................................... 

如上截图,执行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


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/O6OEupFkByeOXAJPFbf6vA

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 四两拨千斤——你不知道的VScode编码Ty

    四两拨千斤——你不知道的VScode编码Ty

  • 我是如何在 Vue 项目中做代码分割的

    我是如何在 Vue 项目中做代码分割的

  • position:sticky 粘性定位的几种巧妙应

    position:sticky 粘性定位的几种巧妙应

  • 从零到一搭建React组件库

    从零到一搭建React组件库

腾讯云代理商
海外云服务器