死磕数据库系列(二十七):MySQL 常用管理命令介绍

2023-03-16 00:00:00 语句 数据库 连接 数量 次数


今天我将详细的为大家介绍 MySQL 日常管理命令的相关知识,希望大家能够从中收获多多!如有帮助,请点在看转发支持一波!!!

show processlist

processlist 命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。

如果是root帐号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。showprocesslist只能列出当前100条。如果想全部列出,可以使用SHOW FULL PROCESSLIST命令

mysql> show processlist;
+----+------+--------------------+------+---------+-------+-------+------------------+
| Id | User | Host               | db   | Command | Time  | State | Info             |
+----+------+--------------------+------+---------+-------+-------+------------------+
|  1 | root | localhost          | NULL | Sleep   |    12 |       | NULL             |
|  2 | root | 192.168.100.1:7437 | test | Sleep   |  8035 |       | NULL             |
|  3 | root | 192.168.100.1:7438 | NULL | Sleep   | 24348 |       | NULL             |
|  5 | root | 192.168.100.1:7443 | NULL | Sleep   | 24317 |       | NULL             |
|  7 | root | 192.168.100.1:7450 | test | Sleep   | 24272 |       | NULL             |
|  9 | root | 192.168.100.1:5152 | test | Query   |      | init  | show processlist |
+----+------+--------------------+------+---------+-------+-------+------------------+
6 rows in set
mysql> show full processlist;
+----+------+--------------------+------+---------+-------+-------+-----------------------+
| Id | User | Host               | db   | Command | Time  | State | Info                  |
+----+------+--------------------+------+---------+-------+-------+-----------------------+
|  1 | root | localhost          | NULL | Sleep   |    19 |       | NULL                  |
|  2 | root | 192.168.100.1:7437 | test | Sleep   |  8042 |       | NULL                  |
|  3 | root | 192.168.100.1:7438 | NULL | Sleep   | 24355 |       | NULL                  |
|  5 | root | 192.168.100.1:7443 | NULL | Sleep   | 24324 |       | NULL                  |
|  7 | root | 192.168.100.1:7450 | test | Sleep   | 24279 |       | NULL                  |
|  9 | root | 192.168.100.1:5152 | test | Query   |      | init  | show full processlist |
+----+------+--------------------+------+---------+-------+-------+-----------------------+
6 rows in set

各个列的含义

  • ①.id列,用户登录mysql时,系统分配的"connection_id",可以使用函数connection_id()查看
  • ②.user列,显示当前用户。如果不是root,这个命令就只显示用户权限范围的sql语句
  • ③.host列,显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户
  • ④.db列,显示这个进程目前连接的是哪个数据库
  • ⑤.command列,显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)等
  • ⑥.time列,显示这个状态持续的时间,单位是秒
  • ⑦.state列,显示使用当前连接的sql语句的状态,很重要的列。state描述的是语句执行中的某一个状态。一个sql语句,以查询为例,可能需要经过copying to tmp table、sorting result、sending data等状态才可以完成
  • ⑧.info列,显示这个sql语句,是判断问题语句的一个重要依据

在主从复制环境中,show processlist或show full processlist对于判断状态很有帮助,例如下面的state列:更多关于MySQL学习的文章,请参阅:死磕数据库系列之 MySQL ,本系列持续更新中。

show status

使用show status;可以比较全面地查看到 mysql状态

mysql> show status;

参数解释
Aborted_clients          #由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects         #尝试已经失败的MySQL服务器的连接的次数。
Connections              #试图连接MySQL服务器的次数。
Created_tmp_tables       #当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads   #正在使用的延迟插入处理器线程的数量。
Delayed_writes               #用INSERT DELAYED写入的行数。
Delayed_errors               #用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands            #执行FLUSH命令的次数。
Handler_delete            #请求从一张表中删除行的次数。
Handler_read_first        #请求读入表中行的次数。
Handler_read_key          #请求数字基于键读行。
Handler_read_next         #请求读入基于一个键的一行的次数。
Handler_read_rnd          #请求读入基于一个固定位置的一行的次数。
Handler_update            #请求更新表中一行的次数。
Handler_write             #请求向表中插入一行的次数。
Key_blocks_used           #用于关键字缓存的块的数量。
Key_read_requests         #请求从缓存读入一个键值的次数。
Key_reads                 #从磁盘物理读入一个键值的次数。
Key_write_requests        #请求将一个关键字块写入缓存次数。
Key_writes                #将一个键值块物理写入磁盘的次数。
Max_used_connections      #同时使用的连接的大数目。
Not_flushed_key_blocks    #在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows  #在INSERT DELAY队列中等待写入的行的数量。
Open_tables        #打开表的数量。
Open_files         #打开文件的数量。
Open_streams       #打开流的数量(主要用于日志记载)
Opened_tables      #已经打开的表的数量。
Questions          #发往服务器的查询的数量。
Slow_queries       #要花超过long_query_time时间的查询数量。
Threads_connected  #当前打开的连接的数量。
Threads_running    #不在睡眠的线程数量。
Uptime             #服务器工作了多少秒。

更多关于MySQL学习的文章,请参阅:死磕数据库系列之 MySQL ,本系列持续更新中。

mysqladmin

mysqladmin 工具的使用格式

mysqladmin [option] command [command option] command ......
参数选项
-c number #自动运行次数统计,必须和 -i 一起使用
-i number #间隔多长时间重复执行
实例

0)每个两秒查看一次服务器的状态,总共重复5次。

[root@test-kevin ~]# mysqladmin -uroot -p -i 2 -c 5 status

1)查看服务器的状况:status

[root@test-kevin ~]# mysqladmin -uroot -p status

2)修改root 密码:

[root@test-kevin ~]# mysqladmin -u root -p原密码 password 'newpassword'

3)检查mysqlserver是否可用:

[root@test-kevin ~]# mysqladmin -uroot -p ping

4)查询服务器的版本

[root@test-kevin ~]# mysqladmin -uroot -p version

5)查看服务器状态的当前值:

[root@test-kevin ~]# mysqladmin -uroot -p extended-status

6)查询服务器系统变量值:

[root@test-kevin ~]# mysqladmin -uroot -p variables

7)显示服务器所有运行的进程:

[root@test-kevin ~]mysqladmin -uroot -p processlist
[root@test-kevin ~]mysqladmin -uroot -p-i 1 processlist        //每秒刷新一次

8)创建数据库

[root@test-kevin ~]# mysqladmin -uroot -p create daba-test

9)显示服务器上的所有数据库

[root@test-kevin ~]# mysqlshow -uroot -p

10)显示数据库daba-test下有些什么表:

[root@test-kevin ~]# mysqlshow -uroot -p daba-test

11)统计daba-test 下数据库表列的汇总

[root@test-kevin ~]# mysqlshow -uroot -p daba-test -v

12)统计daba-test 下数据库表的列数和行数

[root@test-kevin ~]# mysqlshow -uroot -p daba-test -v -v

13)删除数据库 daba-test

[root@test-kevin ~]# mysqladmin -uroot -p drop daba-test

14)重载权限信息

[root@test-kevin ~]# mysqladmin -uroot -p reload

15)刷新所有表缓存,并关闭和打开log

[root@test-kevin ~]# mysqladmin -uroot -p refresh

16)使用安全模式关闭数据库

[root@test-kevin ~]# mysqladmin -uroot -p shutdown

17)刷新命令mysqladmin flush commands

[root@test-kevin ~]# mysqladmin -u root -ptmppassword flush-hosts
[root@test-kevin ~]# mysqladmin -u root -ptmppassword flush-logs
[root@test-kevin ~]# mysqladmin -u root -ptmppassword flush-privileges
[root@test-kevin ~]# mysqladmin -u root -ptmppassword flush-status
[root@test-kevin ~]# mysqladmin -u root -ptmppassword flush-tables
[root@test-kevin ~]# mysqladmin -u root -ptmppassword flush-threads

18)mysqladmin 执行kill 进程:

[root@test-kevin ~]# mysqladmin -uroot -p processlist
[root@test-kevin ~]# mysqladmin -uroot -p kill idnum

19)停止和启动MySQL replication on a slave server

[root@test-kevin ~]# mysqladmin -u root -p stop-slave
[root@test-kevin ~]# mysqladmin -u root -p start-slave

20)同时执行多个命令

[root@test-kevin ~]# mysqladmin -u root -p process status version
出处:
https://www.cnblogs.com/f-ck-need-u/p/7742153.html https://www.cnblogs.com/kevingrace/p/6274390.html https://www.cnblogs.com/kevingrace/p/6151066.html





相关文章