mk-parallel-restore - Load files into MySQL in parallel. 安装方法可以参考这里。
在上一篇介绍了mk-parallel-dump并行备份,会把mysql的按照database模式,每个表都生成一个单独的备份文件,并统一在你指定的目录。
mk-parallel-restore其实就是mk-parallel-dump的反向操作,也会同时启用4个mysql进程去进行恢复,默认优先恢复大表。
使用起来很简单。例如:
mk-parallel-restore -u -p -h /u01/backup/bk_mysql_20090724
如果dump的时候指定了–tab,这里也加上–tab参数
mk-parallel-restore -u -p -h –tab /u01/backup/bk_mysql_20090724
这里需要注意一下,恢复的时候,如果恢复库没有备份库的database需要提前手工创建,mk-parallel-restore不会自动创建。否则会报错
gzip: stdout: Broken pipe
Issuing rollback() for database handle being DESTROY’d without explicit disconnect().
DBD::mysql::db do failed: Unknown database ‘xxxxxx’ at /usr/bin/mk-parallel-restore line 1778.
ok,在看下其他的参数。

mk-parallel-restore –help
mk-parallel-restore loads files into MySQL in parallel. For more [...]

mk-parallel-dump - 顾名思义,并行mysqldump工具。安装方法可以参考这里。
mysqldump是单进程的,同时只能备份1个表。mk-parallel-dump它会同时并发4个mysqldump进程,同时备份4个表,默认是先备份大表,在备份小表。和mysqldump出来生成一个文件不同,它将每个表生成一个单独的文件。默认使用gzip对文件进行压缩。
使用mysqldump备份40G左右的数据,大概需要2小时。而使用mk-parallel-dump不到1小时能完成,效率能提高200%左右。
例如:

mk-parallel-dump -u -p -h –basedir /u01/backup/bk_mysql
default: 1 tables, 1 chunks, 1 successes, 0 failures, 0.10 wall-clock time, 0.06 dump time

恢复的话,直接解压导入就可,和mysqldump的恢复一样。当然也可以用mk-parallel-restore进行恢复,这个工具将在下一篇进行介绍。
解释几个重要的参数文件。
–tab: 将数据备份成load data的形式,将生成一个load文本文件,一个建表sql文件。只能备份本地的MYSQL,不能远程。
–basedir: 备份到指定目录。
–[no]gzip:是否压缩,默认是压缩。
OK,还有其他的一些参数,可以看下帮助文件。

mk-parallel-dump –help
mk-parallel-dump dumps sets of MySQL tables simultaneously via mysqldump or
SELECT INTO OUTFILE. For more details, please use the –help option, or [...]

mk-visual-explain - 格式化mysql执行计划输出。安装方法可以参考这里。
Mysql默认的执行计划输出类似如下:

mysql> explain select count(*) from test a,test2 b where a.id<100 and b.id>160 and a.id=b.id;
+—-+————-+——-+——–+—————+———+———+—————-+——+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra [...]

mk-find - 找到指定表,并批量执行操作。安装方法可以参考这里。
如果你想批量的执行一系列命令,例如我想把TEST库所有的myisam表都Optimize下,以前你可能会使用这样的方法:

mysql -u sg -p’xxxx’ -e "select concat(’optimize table ‘,table_schema,’.',table_name,’;')
into outfile ‘/u01/data/opti.sql’ from information_schema.tables where ENGINE=’MyISAM’ and table_schema=’TEST’;"
 
cat /u01/data/opti.sql
optimize table test.test;
optimize table test.test2;
optimize table test.zzz;
 
mysql -u sg -p’xxxx’ < /u01/data/opti.sql
test.test optimize status OK
Table Op [...]

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 [...]