Mysql
為什麼我要使用 MySQL“系統”命令?
我可以用MySQL 客戶端的
system
命令做什麼?它為什麼存在?我見過的最有成效的用途是環顧文件系統(例如,記住您想要 SOURCE 或 LOAD FILE 的文件名)。
mysql> system ls /tmp backup.sql mysql> source /tmp/backup.sql Query OK, 1 row affected (0.02 sec) mysql>
據我所知,您不能將查詢結果傳遞給命令的 STDIN,也不能將命令的 STDOUT 傳遞給 MySQL 查詢……它似乎沒有廣泛的用處。
SYSTEM 命令實際上有一個比簡單地執行ls來查看目前目錄內容更有用的應用程序:
如文件中所述(並由評論詳細說明),這是進行備份的方法:
echo "FLUSH TABLES WITH READ LOCK; SYSTEM snapshot.sh; UNLOCK TABLES;" | mysql
snapshot.sh 包含使用 LVM、ZFS 或 btrfs 功能製作 mysql 表的原子快照的程式碼。您不能從 shell 腳本將其拆分為多個命令,因為一旦 mysql 會話關閉,表鎖就會被釋放。
我用它來檢查系統統計資訊,而不用離開舒適的 mysql 提示符。在調試性能問題時非常有用,不必保持單獨的視窗打開,或者登錄和退出 mysql 提示:
mysql> \! top mysql> \! free -m mysql> \! iostat -xd 3 6
請注意,這
\!
是 mysql 命令行中“系統”的別名。