官方文档
mysqladmin 是管理 MySQL 服务器的客户端,可以用来检测服务器的配置和当前状态、创建和删除数据库等。
shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...
2.mysqladmin 支持的命令
mysqladmin 中支持同时使用多个命令,结果按照命令顺序依次输出
下面示例同时使用了 processlist(对应输出的表格)和 status 命令(对应输出的最后一行):
[root@VM_120_242_centos ~]# mysqladmin -uroot -p proc stat
Enter password:
+--------+------+-----------+--------------------+---------+-------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+------+-----------+--------------------+---------+-------+----------+------------------+
| 320665 | root | localhost | information_schema | Sleep | 15032 | | |
| 321368 | root | localhost | | Query | 0 | starting | show processlist |
+--------+------+-----------+--------------------+---------+-------+----------+------------------+
Uptime: 6734749 Threads: 2 Questions: 1507498 Slow queries: 0 Opens: 2290 Flush tables: 1 Open tables: 1772 Queries per second avg: 0.223
命令支持简写(不会重名才行)
下面是 status 命令的输出:
[root@VM_120_242_centos ~]
Enter password:
Uptime: 6734779 Threads: 2 Questions: 1507568 Slow queries: 0 Opens: 2290 Flush tables: 1 Open tables: 1772 Queries per second avg: 0.223
mysqladmin 的可用命令列表及解释
3. mysqladmin status 命令的结果解析
- Uptime:MySQL 服务器运行的总时间。
- Threads:活跃线程数(客户端)。
- Questions:服务器启动后,从客户端收到的请求(questions,queries)的总个数。
- Slow queries:查询时长大于 long_query_time 的慢查询的个数。参考 Slow Query Log。
- Opens:服务器打开的表的总数量。
- Flush tables:服务器执行过的
flush-*、refresh、reload 命令。
- Open tables:当前处于开启状态的表的数量。
4. mysqladmin 支持的选项
如果通过 Unix 套接字文件连接到本地 MySQL 服务器,执行 mysqladmin shutdown 时 mysqladmin 会等待,直到服务器的进程 ID 文件已被删除,以确保服务器已正确停止。
mysqladmin 支持以下选项,可以在命令行或选项文件的 [mysqladmin] 和 [client] 组中指定。有关 MySQL 程序使用的选项文件的信息,可以参考第4.2.6节 “Using Option Files”。
-
--help, -?:显示帮助信息并退出。
-
--bind-address=ip_address:在多网卡的机器上,指定用于连接 MySQL 服务器的接口。
-
--character-sets-dir=dir_name:安装字符集的目录,参考 Section 10.14, “Character Set Configuration”。
-
--compress, -C:如果客户端和服务器端都支持压缩,则压缩二者之间所有的信息。
-
--count=N, -c N:如果给出 --sleep 选项,则命令会重复执行 N 次。
-
--debug[=debug_options], -# [debug_options]:写 debug 日志。典型的 debug_options 字符串是 d:t:o,file_name,默认值是 d:t:o,/tmp/mysqladmin.trace。
-
--debug-check:程序退出时打印 debug 信息。
-
--debug-info:程序退出时打印 debug 信息及内存和 CPU 使用情况的统计信息。
-
--default-auth=plugin:关于使用客户端身份验证插件的提示。参见 Section 6.3.9, “Pluggable Authentication”。
-
--default-character-set=charset_name:使用 charset_name 作为默认字符集。参考 Section 10.14, “Character Set Configuration”。
-
--defaults-extra-file=file_name:在全局选项文件之后(Unix)、用户选项文件之前读取这个选项文件。如果文件不存在或不可访问,会报错。
-
--defaults-file=file_name:只使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果使用相对路径,file_name 将相对于当前目录进行解释。
例外:即使使用 --defaults-file,客户端程序也会读取 .mylogin.cnf。
-
--defaults-group-suffix=str:除了读取通常的选项组外,还要读取名称中包含后缀 str 的组。例如,mysqladmin 通常读取 [client] 和 [mysqladmin] 组。如果给出了 --defaults-group-suffix=_other 选项,mysqladmin 也会读取 [client_other] 和 [mysqladmin_other] 组。
-
--enable-cleartext-plugin:启用 mysql_clear_password 明文身份验证插件。参考 Section 6.5.1.5, “Client-Side Cleartext Pluggable Authentication”
-
--force, -f:drop db_name 命令执行时不需再次确认。其他命令时即使发生错误也继续执行。
-
--host=host_name, -h host_name:连接这个 host 上的 MySQL 服务器。
-
--login-path=name:从 .mylogin.cnf 登录路径文件中的指定登录路径读取选项。“login path”是一个选项组,其中包含指定要连接哪台 MySQL 服务器以及要认证哪个帐户的选项。使用 mysql_config_editor 程序可以创建或修改登录路径文件。参考 Section 4.6.6, “mysql_config_editor — MySQL Configuration Utility”
-
--no-beep, -b:抑制默认发出的警告蜂鸣声,例如无法连接到服务器等错误。
-
--no-defaults:不读取默认选项文件。如果由于从选项文件读取未知选项而导致程序启动失败,可以使用 --no-defaults。
.mylogin.cnf 文件是个例外。即使在使用 --no-defaults 时,这也允许以比命令行更安全的方式指定密码。(.mylogin.cnf 由 mysql_config_editor 程序创建,请参见 Section 4.6.6, “mysql_config_editor — MySQL Configuration Utility”)
-
--password[=password], -p[password]:登录服务器的密码。使用 -p 时,密码和 -p 之间不能有空格。如果在命令行上的 --password 或 -p 选项之后省略了密码值,可以在 mysqladmin 启动后根据提示输入密码。通过命令行指定密码是不安全的。可以使用选项文件。参考 Section 6.1.2.1, “End-User Guidelines for Password Security”。
-
--pipe, -W:在 Windows 下使用 named pipe 连接到服务器。需要服务器支持。
-
--plugin-dir=dir_name:在这个目录中查找插件。如果使用 --default-auth 选项指定身份验证插件,但 mysqladmin 找不到它,请指定此选项。参考 Section 6.3.9, “Pluggable Authentication”。
-
--port=port_num, -P port_num:要用于连接的 TCP/IP 端口号。
-
--print-defaults:打印程序名和程序从选项文件中获取的所有选项。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}:用于连接到服务器的协议。需要指定连接协议时非常有用。有关允许值的详细信息,参考 Section 4.2.2, “Connecting to the MySQL Server”。
-
--relative, -r:使用 --sleep 选项时,显示当前值和以前值之间的差异。该选项仅适用于 extended-status 命令。
-
--show-warnings:发送到服务器的语句执行时如果发生警告,则显示警告。这个选项是在 MySQL 5.7.2 中添加的。
-
--secure-auth:废弃。
-
--shared-memory-base-name=name:在 Windows 上使用的共享内存名称,用于使用共享内存连接到本地服务器。默认值是 MYSQL。共享内存名称区分大小写。
必须使用 --shared-memory 选项启动服务器以启用共享内存连接。
-
--silent, -s:如果无法建立到服务器的连接,安静退出。
-
--sleep=delay, -i delay:重复执行命令,间隔指定的 delay 秒。--count 选项决定命令执行次数。如果没有指定 --count 选项,则 mysqladmin 一直执行下去,直到退出命令。
-
--socket=path, -S path:对于连接到 localhost,要使用的 Unix 套接字文件,或者在 Windows 上,使用的命名管道的名称。
-
--ssl*:以 --ssl 开头的选项指定是否使用 SSL 连接到服务器,并指出在哪里可以找到 SSL 密钥和证书。参考 Section 6.4.2, “Command Options for Encrypted Connections”。
-
--tls-version=protocol_list:客户端允许的加密连接协议。该值是一个逗号分隔列表,包含一个或多个协议名称。可以为这个选项命名的协议取决于用于编译 MySQL 的 SSL 库。参考 Section 6.4.6, “Encrypted Connection Protocols and Ciphers 加密连接协议和密码”。该选项已添加到 MySQL 5.7.10 中。
-
--user=user_name, -u user_name:MySQL 用户名。
-
--verbose, -v:显示冗余信息。Verbose 模式。
-
--version, -V:显示版本信息并退出。
-
--vertical, -E:垂直打印输出。与 --relative 类似,但垂直打印输出。
-
--wait[=count], -w[count]:如果无法建立连接,等待并重试,而不是中止。可以指定重试的次数,默认是 1 次。
-
connect_timeout:连接超时的最大秒数。默认值是 43200(12 小时)。可以通过 --connect_timeout=value 指定。
-
shutdown_timeout:等待服务器关机的最大秒数。默认值是 3600(1 小时)。可以通过 --shutdown_timeout=value 指定。
5. 示例
5.1 使用 mysqladmin extended-status 获取 MySQL 的运行状态
因为没有歧义,mysqladmin extended-status 可以简写为 mysqladmin ext。
mysqladmin extended-status 命令可以获取 MySQL 的所有静态性能指标,类似 SHOW GLOBAL STATUS。如果想了解当前的状态,则需要配合下面两个选项:
-
-r(--relative) :进行差值计算,查看各个指标的差值
-
-i(--sleep):指定刷新的频率
每隔 1 秒查看所有指标的差值
-i1 表示每隔 1 秒刷新一次,-r 表示显示差值。每次刷新都显示 SHOW GLOBAL STATUS 下的几百个指标:
[root@VM_120_242_centos ~]
Enter password:
+-----------------------------------------------+--------------------------------------------------+
| Variable_name | Value |
+-----------------------------------------------+--------------------------------------------------+
| Aborted_clients | 275 |
| Aborted_connects | 82339 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
...
+-----------------------------------------------+--------------------------------------------------+
...
+-----------------------------------------------+--------------------------------------------------+
| Variable_name | Value |
+-----------------------------------------------+--------------------------------------------------+
| Aborted_clients | 0 |
| Aborted_connects | 82339 |
| Binlog_cache_disk_use | 0 |
...
+-----------------------------------------------+--------------------------------------------------+
配合 grep 过滤指定行
通过 grep 过滤输出信息后,可以只显示感兴趣的指标:
[root@VM_120_242_centos ~]# mysqladmin -uroot -r -i1 -p ext | grep "Questions\|Queries\|Innodb_rows\|Com_select \|Com_insert \|Com_update \|Com_delete "
Enter password:
| Com_delete | 2352 |
| Com_insert | 2466 |
| Com_select | 764872 |
| Com_update | 31858 |
| Innodb_rows_deleted | 32 |
| Innodb_rows_inserted | 2104036 |
| Innodb_rows_read | 454806700 |
| Innodb_rows_updated | 12326 |
| Queries | 1510593 |
| Questions | 1419664 |
| Com_delete | 0 |
| Com_insert | 0 |
| Com_select | 0 |
| Com_update | 0 |
| Innodb_rows_deleted | 0 |
| Innodb_rows_inserted | 0 |
| Innodb_rows_read | 0 |
| Innodb_rows_updated | 0 |
| Queries | 1 |
| Questions | 1 |
| Com_delete | 0 |
| Com_insert | 0 |
| Com_select | 0 |
| Com_update | 0 |
| Innodb_rows_deleted | 0 |
| Innodb_rows_inserted | 0 |
| Innodb_rows_read | 0 |
| Innodb_rows_updated | 0 |
| Queries | 1 |
| Questions | 1 |
^C
配合 awk
awk 不支持动态变量,需要自己计算。
[root@VM_120_242_centos ~]# mysqladmin -uroot -p -i1 ext | awk '/Queries/{q=$4-qp;qp=$4} /Threads_connected/{tc=$4} /Threads_running/{printf "%5d %5d %5d\n", q, tc, $r}'
Enter password:
1510653 2 0
1 2 0
1 2 0
1 2 0
1 2 0
1 2 0
^C