免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3063 | 回复: 0

Mysql管理必备工具Maatkit详解之五(mk-deadlock-logger) [复制链接]

论坛徽章:
0
发表于 2010-02-23 11:02 |显示全部楼层

Mysql管理必备工具Maatkit详解之五(mk-deadlock-logger)
2009年05月20日 作者: 大头刚 
mk-deadlock-logger - 查看mysql的死锁信息。安装方法可以参考
这里

有2种方式可以查看死锁信息。第一种方法是直接打印出来:
$ mk-deadlock-logger --source u=sg,p=xxxx,h=localhost --print
server ts thread txn_id txn_time user hostname ip db tbl idx lock_type lock_mode wait_hold victim query
localhost 2007-03-08T20:34:22 81 21309 29 baron localhost  test c GEN_CLUST_INDEX RECORD X w 1 select * from c for update
localhost 2007-03-08T20:34:22 83 21310 19 baron localhost  test a GEN_CLUST_INDEX RECORD X w 0 select * from a for update
OK,很简单的命令,查看最后出现的死锁的信息。当然,你也可以指定想看的信息:
$ mk-deadlock-logger --source u=sg,p=xxxx,h=localhost --print -C ts,user,hostname,db,tbl,idx
ts user hostname db tbl idx
2007-03-08T20:34:22 baron localhost test c GEN_CLUST_INDEX
2007-03-08T20:34:22 baron localhost test a GEN_CLUST_INDEX
第二种方法是把信息储存到指定的表内。首先创建这个表:
mysql> use test;
Database changed

mysql> CREATE TABLE deadlocks (
    ->    server char(20) NOT NULL,
    ->    ts datetime NOT NULL,
    ->    thread int unsigned NOT NULL,
    ->    txn_id bigint unsigned NOT NULL,
    ->    txn_time smallint unsigned NOT NULL,
    ->    user char(16) NOT NULL,
    ->    hostname char(20) NOT NULL,
    ->    ip char(15) NOT NULL, -- alternatively, ip int unsigned NOT NULL
    ->    db char(64) NOT NULL,
    ->    tbl char(64) NOT NULL,
    ->    idx char(64) NOT NULL,
    ->    lock_type char(16) NOT NULL,
    ->    lock_mode char(1) NOT NULL,
    ->    wait_hold char(1) NOT NULL,
    ->    victim tinyint unsigned NOT NULL,
    ->    query text NOT NULL,
    ->    PRIMARY KEY  (server,ts,thread)
    ->  ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.00 sec)

mk-deadlock-logger --source u=sg,p=xxxx,h=localhost --dest D=test,\
t=deadlocks --dest D=test,t=deadlocks --daemonize -m 4h  -i 30s
OK,这条语句就是,把死锁信息存入deadlocks表,并在4小时内每30秒检查1次。
mysql5.0以后,出现死锁的情况是越来越少了,如果不是innodb引擎。出现死锁的情况,特别的少见。
OK,还有其他的一些参数,可以看下帮助文件。
mk-deadlock-logger --help
mk-deadlock-logger extracts and saves information about the most recent deadlock
in a MySQL server.  You need to specify whether to print the output or save it
in a database.  For more details, please use the --help option, or try 'perldoc
mk-deadlock-logger' for complete documentation.
Usage: mk-deadlock-logger --source DSN
Options:
  --askpass          Prompt for a password when connecting to MySQL
  --[no]collapse -c  Collapse whitespace in queries to a single space
  --columns      -C  Output only this comma-separated list of columns
  --daemonize        Fork and run in the background; POSIX OSes only
  --dest         -d  DSN for where to store deadlocks
  --help             Show this help message
  --interval     -i  How often to check for deadlocks (default 0s).  Optional
                     suffix s=seconds, m=minutes, h=hours, d=days; if no suffix,
                     s is used.
  --numip        -n  Express IP addresses as integers
  --print        -p  Print results on standard output
  --setvars          Set these MySQL variables (default wait_timeout=10000)
  --source       -s  DSN to check for deadlocks; required
  --tab          -t  Print tab-separated columns, instead of aligned
  --time         -m  How long to run before exiting.  Optional suffix s=seconds,
                     m=minutes, h=hours, d=days; if no suffix, s is used.
  --version          Output version information and exit
  Specify at least one of --print or --dest.
  DSN values in --dest default to values from --source.
DSN syntax is key=value[,key=value...]  Allowable DSN keys:
  KEY  COPY  MEANING
  ===  ====  =============================================
  A    yes   Default character set
  D    yes   Database to use
  F    yes   Only read default options from the given file
  P    yes   Port number to use for connection
  S    yes   Socket file to use for connection
  h    yes   Connect to host
  p    yes   Password to use when connecting
  t    yes   Table in which to store deadlock information
  u    yes   User for login if not current user
  If the DSN is a bareword, the word is treated as the 'h' key.
Options and values after processing arguments:
  --askpass          FALSE
  --collapse         FALSE
  --columns          (No value)
  --daemonize        FALSE
  --dest             (No value)
  --help             TRUE
  --interval         0
  --numip            FALSE
  --print            FALSE
  --setvars          wait_timeout=10000
  --source           (No value)
  --tab              FALSE
  --time             (No value)
  --version          FALSE


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/111930/showart_2184839.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP