patternsqlMinor
Why would I use the MySQL "system" command?
Viewed 0 times
whythesystemwouldmysqlcommanduse
Problem
What can I do with the MySQL client's
The most productive use I've seen is to look around the file system (e.g., to remember the file name you want to SOURCE or LOAD FILE).
As near as I can tell, you can't pass a query result to the STDIN of a command, you can't pass STDOUT of a command into a MySQL query.. it just doesn't seem widely useful.
system command? Why does it exist?The most productive use I've seen is to look around the file system (e.g., to remember the file name you want to SOURCE or LOAD FILE).
mysql> system ls /tmp
backup.sql
mysql> source /tmp/backup.sql
Query OK, 1 row affected (0.02 sec)
mysql>As near as I can tell, you can't pass a query result to the STDIN of a command, you can't pass STDOUT of a command into a MySQL query.. it just doesn't seem widely useful.
Solution
There is actually a far more useful application for the SYSTEM command than simply executing ls to see the current directory contents:
As mentioned in the docs (and elaborated on by a comment), this is way to make backups:
snapshot.sh contains code to make an atomic snapshot of the mysql tables, using LVM, ZFS or btrfs capabilites.
You can't split this up into multiple commands from the shell script, because as soon as the mysql session is closed, the table lock is released.
As mentioned in the docs (and elaborated on by a comment), this is way to make backups:
echo "FLUSH TABLES WITH READ LOCK; SYSTEM snapshot.sh; UNLOCK TABLES;" | mysqlsnapshot.sh contains code to make an atomic snapshot of the mysql tables, using LVM, ZFS or btrfs capabilites.
You can't split this up into multiple commands from the shell script, because as soon as the mysql session is closed, the table lock is released.
Code Snippets
echo "FLUSH TABLES WITH READ LOCK; SYSTEM snapshot.sh; UNLOCK TABLES;" | mysqlContext
StackExchange Database Administrators Q#41184, answer score: 9
Revisions (0)
No revisions yet.