`

Maatkit--Mysql的高级管理工具集

阅读更多

Maatkit是Mysql的一个高级管理工具集。 官方网站:http://www.maatkit.org/

参考:
http://www.bigheaddba.net/article/ytag/maatkit
http://code.google.com/p/maatkit/

#1安装一系列依赖软件

Perl

perl-DBI.x86_64 : A database access API for perl

perl-DBD-MySQL.x86_64 : A MySQL interface for perl

perl-TermReadKey

wget http://packages.sw.be/perl-TermReadKey/perl-TermReadKey-2.30-3.el5.rf.x86_64.rpm

rpm -ivh perl-TermReadKey-2.30-3.el5.rf.x86_64.rpm

#2安装maatkit

wget http://maatkit.googlecode.com/files/maatkit-6839-1.noarch.rpm

rpm -ivh maatkit-6839-1.noarch.rpm

#3maatkit所包含的常用工具

##########################################################################################

#01、mk-table-checksum检查主从表是否一致及有效的工具

#02、mk-table-sync使表一致的工具,不必重载从表而能够保证一致

#03、mk-visual-explainexlpain解释工具

#04、mk-heartbeat主从同步的监视工具,能够给出从落后于主多少

#05、mk-parallel-dump多线程的mysqldump工具

#06、mk-parallel-restore多线程的表修复工具

#07、mk-query-profiler查询检测分析工具

#08、mk-deadlock-logger死锁的记录工具

#09、mk-duplicate-key-checkerkey侦测工具

#10、mk-show-grants权限管理显示工具

#11、mk-slave-restart slave的检测和重启工具

#12、mk-slave-delay slave delay replication 的工具

##########################################################################################

#4使用 maatkit 的工具检查master和slave之间不一致的数据表

示例如下:

[root@mysql-1 ~]# mk-table-checksum h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306 -d test  
DATABASE TABLE CHUNK HOST        ENGINE      COUNT         CHECKSUM TIME WAIT STAT  LAG  
test     t         0 10.1.30.203 MyISAM       NULL       1096324035    0    0 NULL NULL  
test     t         0 10.1.30.204 MyISAM       NULL        261265495    0    0 NULL NULL  
test     t2        0 10.1.30.203 MyISAM       NULL       3459908756    0    0 NULL NULL  
test     t2        0 10.1.30.204 MyISAM       NULL       3459908756    0    0 NULL NULL  
test     t3        0 10.1.30.203 MyISAM       NULL                0    0    0 NULL NULL  
test     t3        0 10.1.30.204 MyISAM       NULL                0    0    0 NULL NULL  
test     t4        0 10.1.30.203 InnoDB       NULL       2248149615    0    0 NULL NULL  
test     t4        0 10.1.30.204 InnoDB       NULL       1413091075    0    0 NULL NULL  
test     t5        0 10.1.30.203 MyISAM       NULL                0    0    0 NULL NULL  
test.t5 does not exist on slave 10.1.30.204:3306 at /usr/bin/mk-table-checksum line 6223.  
test     t5        0 10.1.30.204 MyISAM       NULL             NULL    0    0 NULL NULL  
test     t6        0 10.1.30.203 MyISAM       NULL                0    0    0 NULL NULL  
test     t6        0 10.1.30.204 MyISAM       NULL                0    0    0 NULL NULL 

 

mk-table-checksum的过滤工具mk-checksum-filter,例如我只想知道上面的例子中,test库中哪些表不是一致的。只需要加一个管道符。

     

[root@mysql-1 ~]# mk-table-checksum h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306 -d test |mk-checksum-filter  test     t         0 10.1.30.203 MyISAM       NULL       1096324035    0    0 NULL NULL  
test     t         0 10.1.30.204 MyISAM       NULL        261265495    0    0 NULL NULL  
test     t4        0 10.1.30.203 InnoDB       NULL       2248149615    0    0 NULL NULL  
test     t4        0 10.1.30.204 InnoDB       NULL       1413091075    0    0 NULL NULL  
test.t5 does not exist on slave 10.1.30.204:3306 at /usr/bin/mk-table-checksum line 6223.  
test     t5        0 10.1.30.203 MyISAM       NULL                0    0    0 NULL NULL  
test     t5        0 10.1.30.204 MyISAM       NULL             NULL    0    0 NULL NULL 

 

需要注意的是,mk-table-checksum工具在检查的时候会对表加一个表级锁,应该放在系统不繁忙的时候执行。

#5继续使用maatkit的表同步工具mk-table-sync使从库的表跟主库保持一致

master :h=10.1.30.203,P=3306

slave :h=10.1.30.204,P=3306

master:

mysql> SELECT * FROM test.t;  
+------+ 
| id   |  
+------+ 
|    5 |  
+------+ 
1 row INSET (0.00 sec) 

slave:

   

mysql> SELECT * FROM test.t;  
+------+ 
| id   |  
+------+ 
|    5 |  
|    1 |  
+------+ 
2 rowsINSET (0.00 sec) 

 二者数据不一致,从刚才mk-table-checksum已经检查出来了,这里使用sync工具生成修正sql:

01.[root@mysql-1 mysql-5.1.40]# mk-table-sync h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306 <strong>--print</strong> <strong>--no-check-slave</strong> -d test -t t  
DELETE FROM `test`.`t` WHERE `id`='1' LIMIT 1 /*maatkit src_db:test src_tbl:t src_dsn:P=3306,h=10.1.30.203,p=...,u=dba dst_db:test dst_tbl:t dst_dsn:P=3306,h=10.1.30.204,p=...,u=dba lock:0 transaction:0 changing_src:0 replicate:0 bidirectional:0 pid:25072 user:root host:mysql-1*/; 

 

复制环境中,若是slave是不允许直接进行修正的,除非添加–no-check-slave这个参数;

–print表示把修正的语句打印出来

–execute表示直接执行修正操作

再举个例子:

master:

mysql> SELECT * FROM test.t;  
+------+ 
| id   |  
+------+ 
|    5 |  
|    2 |  
+------+ 
2 row INSET (0.00 sec) 

 

slave:

mysql> SELECT * FROM test.t;  
+------+ 
| id   |  
+------+ 
|    5 |  
+------+ 
1 rowsINSET (0.00 sec)

 

[root@mysql-1 mysql-5.1.40]# mk-table-sync h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306 --print --execute --no-check-slave  -d test -t t  
INSERT INTO `test`.`t`(`id`) VALUES ('2') /*maatkit src_db:test src_tbl:t src_dsn:P=3306,h=10.1.30.203,p=...,u=dba dst_db:test dst_tbl:t dst_dsn:P=3306,h=10.1.30.204,p=...,u=dba lock:0 transaction:0 changing_src:0 replicate:0 bidirectional:0 pid:25091 user:root host:mysql-1*/;

 

需要注意的是,若是在主从环境中,想把slave中数据不一致的表跟master保持一致(拿master的数据更新slave),那么这部分【h=10.1.30.203,u=dba,p=dba,P=3306 h=10.1.30.204,u=dba,p=dba,P=3306】的顺序,master应该在前。因为这里的顺序 source-db target-db,代表拿source-db的数据更新target-db

分享到:
评论

相关推荐

    15款优秀的mysql管理工具与应用程序推荐.pdf

    - **特点**:Maatkit是一系列用于MySQL数据库管理的命令行工具集合。 - **适用场景**:适用于高级用户或自动化脚本。 ### 三、选择合适工具的原则 1. **需求匹配**:首先明确自己的具体需求,比如是否需要支持多...

    MySQL关键工具Percona Toolkit详解

    Percona Toolkit 是一套高级命令行工具集合,专门设计用于简化 MySQL 数据库管理过程中常见的复杂任务。这套工具集可以帮助数据库管理员(DBA)更加高效地执行一系列操作,如检查主从复制的数据一致性、归档记录、...

    Percona-Toolkit-3.0.3

    Percona Toolkit 的前身是 Maatkit 和 Aspersa,这两个工具集在 MySQL 服务器管理领域享有盛誉。Percona Toolkit 由 Percona 公司开发和支持,Percona 是一家专注于提供开源数据库解决方案的公司,其官网 ...

    MySQL DBA最佳运维工具percona toolkit使用手册

    Percona Toolkit是一套高级命令行工具的集合,专为MySQL数据库管理员设计,用于自动化执行一系列复杂的维护任务,这些任务若手动完成则既费时又易错。Percona Toolkit的主要功能包括但不限于检查主从数据一致性、...

    percona-toolkit使用教程

    分析来自日志和tcpdump的查询 当系统出问题的时候收集重要的系统信息percona-toolkit源自Maatkit 和Aspersa工具,这两个工具是管理mysql的最有名的工具,现在Maatkit工具已经不维护了,请大家还是使用percona-...

    mysql backup

    本文档将介绍如何使用Percona Toolkit进行MySQL数据库的备份和管理,该工具是由Percona公司开发的一套高级命令行工具集,专门用于执行MySQL、MongoDB以及各种系统任务,这些任务往往太复杂或困难,无法通过手动方式...

    IT-运维工程师的23个细节-进阶.doc.docx

    - **MySQL监控**:包括mytop、orzdba、Percona-toolkit、Maatkit等工具,支持从基础到高级的数据库监控需求。 - **MySQL逻辑备份工具**:如mysqldump、mysqlhotcopy等,用于创建逻辑备份。 - **MySQL物理备份工具**...

    percona-toolkit工具包的使用教程

    Percona Toolkit 是一个集合了多种高级命令行工具的套件,主要用于执行复杂的 MySQL 和系统管理任务。这些任务通常手工完成既费时又容易出错。Percona Toolkit 的主要功能包括但不限于: - **检查主从复制的一致性*...

    IT-运维工程师的23个细节-进阶 (2).pdf

    - MySQL监控:mytop、orzdba、Percona-toolkit、Maatkit、innotop、myawr和SQL级监控工具。 - 压测与基准:mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool、sysbench。 - 代理与备份:MySQL Proxy...

    PerconaToolkit

    PerconaToolkit是一款专业的数据库管理工具集,其包含了一系列命令行工具,用以执行对MySQL和MongoDB数据库系统的各种复杂与困难的操作。这些工具因其由专业人士开发、正式测试以及完善的文档支持而成为出色的替代...

    PerconaToolkit-3.2.1.pdf

    Percona Toolkit是一款集合了高级命令行工具的软件包,它源自于Maatkit和Aspersa这两款众所周知的MySQL服务器管理工具包。Percona Toolkit能够执行多种复杂和困难的MySQL、MongoDB及系统任务,由Percona公司进行开发...

    安装和使用percona-toolkit来辅助操作MySQL的基本教程

    Percona Toolkit 是一组用于 MySQL 管理的高级命令行工具,它包含了多个功能强大的工具,可以帮助数据库管理员执行复杂的操作,比如检查主从数据一致性、高效归档记录、查找重复索引、汇总服务器信息以及分析日志和...

    最新IT-运维工程师的23个细节-进阶.pdf

    13. **MySQL监控与管理**:mytop、orzdba、Percona Toolkit、Maatkit、innotop、myawr等工具用于MySQL监控,SQL级别的监控如mysqlpcap,MySQL基准测试工具如sysbench。 14. **MySQL代理**:SOHU-DBProxy、Atlas、...

    批量杀死MySQL连接的四种方法详解

    Maatkit是一个集合了多种MySQL管理工具的套件,其中的mk-kill命令可以方便地批量杀死特定类型的连接。例如: 1. 杀掉运行时间超过60秒的SQL: ``` mk-kill -busy-time 60 -kill ``` 2. 查看运行时间超过60秒的...

    IT-运维工程师的23个细节-进阶.docx

    14. **MySQL监控**: 包括mytop、orzdba、Percona Toolkit、Maatkit、innotop、myawr和SQL级监控工具mysqlpcap,以及拓扑可视化工具。 15. **MySQL基准测试**: 使用mysqlsla、sql-bench、Super Smack、Percona's ...

    percona手册

    - 集成了 Percona 工具包和 Maatkit 用户定义函数 (UDF),提供了丰富的管理工具。 - 便于进行数据库监控和故障排查。 9. **支持假更改**: - 引入了对“假更改”(fake changes)的支持,允许在不修改实际数据的...

Global site tag (gtag.js) - Google Analytics