本文内容 mysql
mysqladmin
mysqlcheck
mysqldump
mysqlimport
mysqlshow
mysqlslap
参考资料
mysql
mysql 是一个可以输入行的 SQL 外壳,输入行可以编辑。它支持交互和非交互。当使用交互式,查询结果以一个 ASCII 表格式来显示。当使用非交互时(例如,作为过滤),查询结果以 tab 分隔格式显示。输出格式可以通过命令行选项来改变。如下所示:
shell> mysql db_name;
或
shell> mysql --user=user_name --password=your_password db_name;
键入 ;、\g 或 \G,按回车,语句就会执行。
也可以执行一个脚本文件的语句,如下所示:
shell> mysql db_name < script.sql > output.tab
在 Unix 系统上,mysql 客户端会向历史文件写入执行语句记录。
mysqladmin
mysqladmin 是在客户端执行管理性的操作。可以使用该命令检查服务配置和当前状态,以及创建和删除数据库等等。如下所示:
shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...
mysqlcheck
mysqlcheck 执行表的维护:检查、修复、优化,或分析。
当执行该命令时,表会被锁定(只读),因此,对其他会话来说不可用。表维护操作很耗时,特别是对大表来说。如果你使用 --databases 或 --all-databases 选项来处理一个或多个数据库的所有表,mysqlcheck 可能会花很长时间。
mysqlcheck 与 myisamchk,但是运行不同。主要的不同是,mysqlcheck 只有当 mysqld 服务运行时才能使用,而 myisamchk 不需要。使用 mysqlcheck 的好处是不用停止服务就可以执行表维护。
mysqlcheck 以方便的方式使用 SQL 语句 CHECK TABLE、REPAIR TABLE、ANALYZE TABLE 和 OPTIMIZE TABLE。确定你想执行哪个语句,之后,该语句发送给服务器来执行。
MyISAM 存储引擎支持所有四种维护操作,因此,mysqlcheck 可以被用于在 MyISAM 表上执行任何的一个。其他存储引擎不能全支持。此时,会显示错误信息。例如,若 test.t 是一个 MEMORY 表,检查会产生如下结果:
shell> mysqlcheck test t
test.t
note : The storage engine for the table doesn't support check
调用 mysqlcheck 一般有三个方式:
shell> mysqlcheck [options] db_name [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
shell> mysqlcheck [options] --all-databases
如果没有在 db_name 后指定任何表名,或使用 --databases 或 --all-databases 选项,那么将检查整个数据库。
与其他客户端程序相比,mysqlcheck 有一个的特别功能。通过重新命名为二进制可以改变检查表的默认行为。如果你期望你有个默认修复表的工具,那么你只需复制 mysqlcheck,并重新命名为 mysqlrepair,或用符号连接。如果调用 mysqlrepair,它就会修复表。
mysqldump
mysqldump 最初是 Igor Romanenko 编写的备份程序。为了备份来转储(dump)一个数据库或数据库集合,传输到另一个 SQL 服务(不必是 MySQL 服务)。转储典型地包含创建表,填充表的 SQL 语句,或两者同时。mysqldump 也用来产生 CSV 文件,其他分隔文本,或 XML 格式。
将 MySQL 数据库转储到一个文件(例如SQL语句或tab分隔符文本文件)的客户程序。
mysqldump 要求至少 SELECT 权限(用来转储表),SHOW VIEW 权限(用来转储视图),以及 LOCK TABLES 权限(如果没有使用 --single-transaction 选项)。
如果备份,但所有表都是 MyISAM 表,可以考虑 mysqlhotcopy,因为,它可以更快地完成备份和恢复。
调用 mysqldump 有三个方式:
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
如果没有在 db_name 后指定任何表名,或使用 --databases 或 --all-databases 选项,那么将转储整个数据库。
默认情况下,mysqldump 不会转储 INFORMATION_SCHEMA 数据库。但可以在命令行显式指定。在 MySQL 5.5 之前,mysqldump 会忽略 INFORMATION_SCHEMA 数据库,即便你在命令行显式指定。
mysqldump 不会转储 performance_schema 数据库。
MySQL 5.5.25 之前的版本,mysqldump 不会转储 general_log 或 slow_query_log 表。MySQL 5.5.25 的转储包含重新创建这些表的语句,这样,重新加载转储文件后,它们不会丢失。日志表的内容不会被转储。
mysqldump 也不会转储 MySQL Cluster ndbinfo 信息数据库。
mysqlimport
mysqlimport 为 LOAD DATA INFILE SQL 语句提供一个命令行接口。如下所示:
shell> mysqlimport [options] db_name textfile1 [textfile2 ...]
在命令行上指定的每个 textfile,mysqlimport 从文件名去掉扩展名,并使用该结果来确定表名,将其导入到文件内容。例如,名为 patient.txt、patient.text,所有的 patient 将被导入到一个名为 patient 的表。
mysqlshow
mysqlshow 用来快速查看已存在的数据库,及其表,列或索引。
mysqlshow 为很多 SQL SHOW 语句提供了一个命令行接口。如下所示:
shell> mysqlshow [options] [db_name [tbl_name [col_name]]]
若没指定数据库,则显示所有数据库。
若没指定表,则显示数据库中所有的表。
若没指定列,则显示表的所有列和类型。
可以在参数中使用通配符(*、?、%、_)。
mysqlslap
mysqlslap 是诊断程序,用于模拟客户端加载,并报告每个阶段的时间。如果是多客户端正在访问服务,那么该命令很有用。如下所示:
shell> mysqlslap [options]
客户端命令可以通过命令的 "--help" 选项,查看命令的选项列表。
参考资料