使用maatkit工具检查并同步mysql主从数据

Maatkit是一组开源工具包,为mysql的日常管理提供了帮助。其中mk-table-checksum可以用来检测master和slave的表结构和数据是否一致。同时,通过mk-table-sync工具,在发现主从数据不一致时,可以修复不同步的数据。


实验环境:

Master:192.168.189.143:3306

Slave:192.168.189.144:3306

1:安装Maatikit工具。

安装perl环境:

  #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

安装Maatikit:

下载maaikit工具源码包,并上传服务器。

  #tar -zxvf maatkit-7540.tar.gz
  #cd maatkit-7540
  #perl Makefile.PL  
  #make install

安装完成后在/usr/bin下存在mk-开头的工具命令:

2:模拟主从库数据不同步。

在从库上插入一条数据,使主从数据不同步,如下:

Master:                    Slave:

3:使用mk-table-checksum工具检查数据库数据是否一致:

 #mk-table-checksum h=192.168.189.143,u=root,p=123456,P=3306 h=192.168.189.144,u=root,p=123456,P=3306 -d cmhtest

检查cmhtest库的数据,发现两台服务器的checksum值不一致,即说明数据不同步。

4:使用mk-checksum-filter工具查看具体是哪张表数据不同步:

#mk-table-checksum h=192.168.189.143,u=root,p=123456,P=3306 h=192.168.189.144,u=root,p=123456,P=3306 -d cmhtest |mk-checksum-filter

可以看到,不同步的表,为t1。

5:使用mk-table-sync工具同步数据。

#mk-table-sync --execute --print --no-check-slave --transaction --databases cmhtest h=192.168.189.143,u=root,p=123456 h=192.168.189.144,u=root,p=123456

DELETE FROM `cmhtest`.`t1` WHERE `id`=‘5‘ AND `name`=‘zhangs‘ LIMIT 1 /*maatkit src_db:cmhtest src_tbl:t1 src_dsn:h=192.168.189.143,p=...,u=root dst_db:cmhtest dst_tbl:t1 dst_dsn:h=192.168.189.144,p=...,u=root lock:0 transaction:1 changing_src:0 replicate:0 bidirectional:0 pid:28358 user:root host:node1*/;

系统会反馈在同步过程中,具体操作了哪写sql,比如本例中,就只在从库上执行了1条sql:DELETE FROM `cmhtest`.`t1` WHERE `id`=‘5‘ AND `name`=‘zhangs‘ LIMIT 1。

使用mk-table-sync命令时,要注意连接mysql服务器的先后顺序,在前的服务器为源服务器,在后的服务器为被被同步服务器。

6:查看结果:

Master:                                                                  slave:

可以看到从库实例cmhtest上的表已经与主库同步了。

由于Maatkit工具包网上比较难找,附件是我之前下载的工具安装包,提供大家下载。

时间: 2024-10-12 21:27:21

使用maatkit工具检查并同步mysql主从数据的相关文章

mysql主从数据对比工具简介

1 Checksum 1.1 checksum原理 checksum table的原理是对表中的数据进行一行一行的较验和计算,在执行checksum命令时,表会被加一个读锁(read lock),因此对于大表,这是一个很耗时的过程. 读锁:又叫S锁/共享锁:当MySQL的一个进程为某一表开启读锁之后,其他的进程包含自身都没有权利去修改这表表的内容.但是所有的进程还是可以读出表里面的内容的.但是不能实现更新. 1.2 语法 在数据库中输入checksum  table   库.表: 说明:chec

mysql 主从数据不一致 Slave_SQL_Running: No 解决方法

在slave服务器上通过如下命令 mysql> show slave status\G; 显示如下情况: Slave_IO_Running: Yes Slave_SQL_Running: No 表示slave不同步 解决方法一(忽略错误,继续同步): 1.先停掉slave mysql> stop slave; 2.跳过错误步数,后面步数可变 mysql> set global sql_slave_skip_counter=1; 3.再启动slave mysql> start sla

MySQL 主从数据同步配置

1:需要两台MySQL服务器,如:master:192.168.1.120slave:192.168.1.121确定MySQL的版本是相同的,可以登录到MySQL CLI界面,输入:select version();此实验MySQL版本是5.6的 2:主服务器要授权从服务器,登录到master的MySQL CLI,输入:grant all on *.* to "test"@"%" identified by '123456'; 3:配置主从服务器的bin-log日志

MySQL主从数据同步延时分析

一.MySQL数据库主从同步延迟                                                              要了解MySQL数据库主从同步延迟原理,我们先从MySQL的数据库主从复制原理说起: MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高. Slave的IO Thread线程从主库中bin log中读取取日志. Slave的SQL Thread线程将主库的DDL和D

mysql 主从数据加keepalive

接着上一篇<配置mysql数据库的主从同步实验>,本文主要从应用的角度,在两台mysql服务器上部署keepalived服务,可以做到在任意一台mysql服务器故障的情况下,不影响mysql数据库的使用. 应用服务器配置的mysql数据库的地址是一个VIP(业务虚拟地址),这个VIP作为keepalived中的virtual_server地址,keepalived的real_server地址分别是两台mysql数据库服务器的地址. 1.安装keepalived .在两台服务器依次做以下操作 y

mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有一些常规问题: 比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复, 或者很多时候需要把一个从库提升为主库,但对从库和主库的数据一致性不能保证一样. 这种情况下就需要使用percona-toolkit工具的pt-table-checksum组件来检查主从数据的一致性:如果发现不一致的

MySQL主从说明详解、MySQL主从不同步处理方案

MySQL主从说明 同步问题 mysqldump:此工具适用于10G以下数据库或几个表percona-Xtrabackup备份工具:适用于100G-500GLVM快照:更大的数据量,或分库分表 主从复制目的 读写分离,减轻主库负载或数据分析: 数据安全,做备份恢复: 主从切换,做高可用: 常见主从结构: 一主一从:一个Master,一个Slave一主多从:一个Master,多个slave Master节点:负责所有的[写]请求Slave节点:负责大部分的[读]请求 主从复制步骤 A数据更新 A写

MySQL主从架构之Master-Slave主从同步

MySQL复制 MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步 MySQL主从架构:优点:故障时候可以切库:读写分离:从库执行其他业务例如备份. 1:Master-Slave    主从同步 2:Master-Slave-Slave……级联 3:Master-Master   互为主备 [主从同步]Master-Slave 注:需要主库打开log-bin ;设置server-id #mysqldump -uroot -p --all-data

1分钟利用mysqlreplicate快速搭建MySQL主从

利用mysqlreplicate快速搭建MySQL主从环境 简介 mysql-utilities工具集是一个集中了多种工具的合集,可以理解为是DBA的工具箱,本文介绍利用其中的mysqlreplicate工具来快速搭建MySQL主从环境. HE1:192.168.1.248 slave HE3:192.168.1.250 master 实战 Part1:安装mysql-utilities [[email protected] ~]# tar xvf mysql-utilities-1.5.4.t