mk-table-checksum – 检查数据库复制模式里,master和slave的表是否一致,安装方法可以参考这里。

mysql在5.1之前,其replication都是采用的STATEMENT模式,对表的数据是否一致要求并不严格,所以对数据一致性要求比较严格的应用,定期检查数据一致性是很有必要的,mk-table-checksum 是一个很不错的检查工具。
Read the rest of this entry »

mk-parallel-restore – Load files into MySQL in parallel. 安装方法可以参考这里。

在上一篇介绍了mk-parallel-dump并行备份,会把mysql的按照database模式,每个表都生成一个单独的备份文件,并统一在你指定的目录。
mk-parallel-restore其实就是mk-parallel-dump的反向操作,也会同时启用4个mysql进程去进行恢复,默认优先恢复大表。

Read the rest of this entry »

mk-parallel-dump – 顾名思义,并行mysqldump工具。安装方法可以参考这里。

mysqldump是单进程的,同时只能备份1个表。mk-parallel-dump它会同时并发4个mysqldump进程,同时备份4个表,默认是先备份大表,在备份小表。和mysqldump出来生成一个文件不同,它将每个表生成一个单独的文件。默认使用gzip对文件进行压缩。
使用mysqldump备份40G左右的数据,大概需要2小时。而使用mk-parallel-dump不到1小时能完成,效率能提高200%左右。
Read the rest of this entry »

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       |
+----+-------------+-------+--------+---------------+---------+---------+----------------+------+-------------+
|  1 | SIMPLE      | b     | range  | uid           | id     | 4       | NULL           |   30 | Using where | 
|  1 | SIMPLE      | a     | eq_ref | PRIMARY       | PRIMARY | 4       | b.uid |    1 | Using index | 
+----+-------------+-------+--------+---------------+---------+---------+----------------+------+-------------+
2 rows in set (0.00 sec)

Read the rest of this entry »

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      Msg_type        Msg_text
test.test2      optimize        status  OK
Table   Op      Msg_type        Msg_text

Read the rest of this entry »

mk-show-grants – 顾名思义,查看和复制mysql权限。安装方法可以参考这里。

比如我查看用户名为sg的权限:

mk-show-grants -u sg -p'xxxx' -h localhost |grep sg  
-- Grants for 'sg'@'localhost'
GRANT ALL PRIVILEGES ON *.* TO 'sg'@'localhost' IDENTIFIED BY PASSWORD '*8A85934FFBB0E2A8B4A14B18133B4619A86E44F5' WITH GRANT OPTION;

Read the rest of this entry »

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

Read the rest of this entry »

mk-duplicate-key-checker – 检查MYSQL重复索引,并给出删除语句。安装方法可以参考这里。

在oracle里,不允许在同一个列上创建多个索引,如果试图创建就会报错如下:

CREATE INDEX sg1 ON uid_tmp(user_id);
CREATE INDEX sg1 ON uid_tmp(user_id)
                            *
ERROR AT line 1:
ORA-01408: such column list already indexed

而在mysql上,却是允许的,不知道为何要这样,总之是可以的。
Read the rest of this entry »

mk-audit – 分析报告mysql状态和操作系统相关环境,给出推荐值。安装方法可以参考这里。

这个工具能把MYSQL的配置文件,SCHEMA的情况,操作系统的情况统一收集起来,形成一个统一的报表,并给出建议。
Read the rest of this entry »

mk-archiver – 删除时按行备份,支持备份到异地库。安装方法可以参考这里。

mysql在删除数据的时候,是无法rollback(innodb引擎除外)的,如果你删错了数据,那么你就只能进行恢复了,这显然是很耗成本的操作。
当然你也可以在执行delete的之前,用mysqldump进行备份,或者你在删除之前,先执行load data 或者 insert into as select,至少需要执行2次命令,并且不支持备份到异地库。

那么,下面这个工具可能是你需要的。

利用mk-archiver工具,可以在删除mysql表数据的时候,把需要删除的数据备份。
Read the rest of this entry »


© 2007 阿熊的窝 | 粤ICP备09064960号 | Powered by Wordpress