zoukankan      html  css  js  c++  java
  • 使用mysqladmin ext了解MySQL运行状态【转】

    摘要:

          mysqladmin是 MySQL一个重要的客户端,最常见的是使用它来关闭数据库,除此,该命令还可以了解MySQL运行状态、进程信息、进程杀死等。本文介绍一下如何使用 mysqladmin extended-status(因为没有"歧义",所以可以使用ext代替)了解MySQL的运行状态。

    1. 使用-r/-i参数

          使用mysqladmin extended-status命令可以获得所有MySQL性能指标,即show global status的输出,不过,因为多数这些指标都是累计值,如果想了解当前的状态,则需要进行一次差值计算,这就是mysqladmin extended-status的一个额外功能,非常实用。默认的,使用extended-status,看到也是累计值,但是,加上参数 -r(--relative),就可以看到各个指标的差值,配合参数-i(--sleep)就可以指定刷新的频率,那么就有如下命令:

    mysqladmin --no-defaults -uroot -r -i 1 -p123456 extended-status
    
    +---------------------------------------+----------+
    | Variable_name                         | Value    |
    +---------------------------------------+----------+
    | Aborted_clients                       | 0        |
    | Aborted_connects                      | 0        |
    | Binlog_cache_disk_use                 | 0        |
    | Binlog_cache_use                      | 0        |
    | Bytes_received                        | 35       |
    | Bytes_sent                            | 7372     |
    ……………………
    | Threads_running                       | 0        |
    | Uptime                                | 1        |
    | Uptime_since_flush_status             | 1        |
    +---------------------------------------+----------+

    2. 配合grep使用

    配合grep使用,我们就有:

    mysqladmin --no-defaults -uroot -p123456 -r -i 1 extended-status |grep "Questions|Queries|Innodb_rows|Com_select |Com_insert |Com_update |Com_delete "
    
    | 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                               | 113      |
    | Questions                             | 113      |

    3. 配合简单的awk使用

    使用awk,同时输出时间信息:

    mysqladmin --no-defaults -uroot -p123456 -P3306 -r -i 1 ext |
    awk -F"|" '{
      if($2 ~ /Variable_name/){
        print " <-------------    "  strftime("%H:%M:%S") "    ------------->";
      }
      if($2 ~ /Questions|Queries|Innodb_rows|Com_select |Com_insert |Com_update |Com_delete |Innodb_buffer_pool_read_requests/)
        print $2 $3;
    }'
    
     <-------------    11:37:27    ------------->
     Com_delete                             0        
     Com_insert                             0        
     Com_select                             0        
     Com_update                             0        
     Innodb_buffer_pool_read_requests       6549     
     Innodb_rows_deleted                    0        
     Innodb_rows_inserted                   0        
     Innodb_rows_read                       0        
     Innodb_rows_updated                    0        
     Queries                                131      
     Questions                              131      
     <-------------    11:37:28    ------------->
     Com_delete                             0        
     Com_insert                             0        
     Com_select                             0        
     Com_update                             0        
     Innodb_buffer_pool_read_requests       0        
     Innodb_rows_deleted                    0        
     Innodb_rows_inserted                   0        
     Innodb_rows_read                       0        
     Innodb_rows_updated                    0        
     Queries                                1        
     Questions                              1   

    4. 配合复杂一点的awk

    反正也不简单了,那就更复杂一点,这样让输出结果更友好点,因为awk不支持动态变量,所以代码看起来比较复杂:

    mysqladmin --no-defaults -uroot -p123456 -r -i 1 ext |
    gawk -F"|" 
    "BEGIN{ count=0; }"
    '{ if($2 ~ /Variable_name/ && ++count == 1){
        print "----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --";
        print "---Time---|---QPS---|select insert update delete|  read inserted updated deleted|   logical    physical";
    }
    else if ($2 ~ /Queries/){queries=$3;}
    else if ($2 ~ /Com_select /){com_select=$3;}
    else if ($2 ~ /Com_insert /){com_insert=$3;}
    else if ($2 ~ /Com_update /){com_update=$3;}
    else if ($2 ~ /Com_delete /){com_delete=$3;}
    else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;}
    else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;}
    else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;}
    else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;}
    else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;}
    else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;}
    else if ($2 ~ /Uptime / && count >= 2){
      printf(" %s |%9d",strftime("%H:%M:%S"),queries);
      printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete);
      printf("|%6d %8d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted);
      printf("|%10d %11d
    ",innodb_lor,innodb_phr);
    }}'
    
    
    ----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --
    ---Time---|---QPS---|select insert update delete|  read inserted updated deleted|   logical    physical
     11:39:51 |        1|     0      0      0      0|     0        0       0       0|         0           0
     11:39:52 |        1|     0      0      0      0|     0        0       0       0|         0           0
     11:39:53 |        1|     0      0      0      0|     0        0       0       0|         0           0
     11:39:54 |        1|     0      0      0      0|     0        0       0       0|         0           0
     11:39:55 |        1|     0      0      0      0|     0        0       0       0|         0           0
     11:39:56 |        1|     0      0      0      0|     0        0       0       0|         0           0
    …………
    …………

    这里注意,要是awk是mawk的话,会出现:function strftime never defined ,所以要用gawk。

    本文来自:http://www.orczhou.com/index.php/2014/03/some-tricky-about-mysqladmin-extended-status/

  • 相关阅读:
    hdu 5007 水题 (2014西安网赛A题)
    hdu 1698 线段树(成段替换 区间求和)
    poj 3468 线段树 成段增减 区间求和
    hdu 2795 公告板 (单点最值)
    UVaLive 6833 Miscalculation (表达式计算)
    UVaLive 6832 Bit String Reordering (模拟)
    CodeForces 124C Prime Permutation (数论+贪心)
    SPOJ BALNUM (数位DP)
    CodeForces 628D Magic Numbers (数位DP)
    POJ 3252 Round Numbers (数位DP)
  • 原文地址:https://www.cnblogs.com/zhoujinyi/p/3613332.html
Copyright © 2011-2022 走看看