![如何检查mysql表是否被使用或者应用程序在shell脚本中访问该表?](https://linux22.com/image/52147/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5mysql%E8%A1%A8%E6%98%AF%E5%90%A6%E8%A2%AB%E4%BD%BF%E7%94%A8%E6%88%96%E8%80%85%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9C%A8shell%E8%84%9A%E6%9C%AC%E4%B8%AD%E8%AE%BF%E9%97%AE%E8%AF%A5%E8%A1%A8%EF%BC%9F.png)
shell 脚本正在对mysql
表进行转储,但在转储表之前我想检查该表是否被任何其他应用程序使用。如果是这样,我想等待并进入循环,直到应用程序停止加载表并在mysqdump
完成后继续。
答案1
你需要使用命令,
SHOW OPEN TABLES
在我的系统中进行实验
我运行了该命令,这是我得到的初始输出。
"Database" "Table" "In_use" "Name_locked"
db_name "table1" "0" "0"
db_name "table2" "0" "0"
现在,我对包含大约 200 万条记录的SELECT
表 ( ) 运行查询。table1
我打开了另一个 mysql 连接并运行了我提到的查询。我得到的输出是
"Database" "Table" "In_use" "Name_locked"
db_name "table1" "1" "0"
db_name "table2" "0" "0"
因此,从上面的输出来看,很明显该In_use
列指定当前正在使用该表。