pt-table-checksum和pt-table-sync是常用来做MySQL主从数据一致性校验的工具,pt-table-checksum只校验数据,不能对数据进行同步;pt-table-sync不仅可以检验数据,还可以将不一致的数据同步。
工作原理
  两个工具的工作原理基本差不多,分开说明。为了说明简单易懂,抛开了所有内部函数,只是简易的介绍一下工具的工作过程。
pt-table-checksum工作原理
1.单行数据checksum值的计算
  首先检查表结构,获取每列的数据类型,把所有类型都转换为字符串,把一整行数据拼接成一个很长的字符串,这行数据计算出一个校验值。就是通过这个值进行主从比较的,如果主从两个值一致,则数据一致,反之亦然。
2.数据块checksum值的计算
  对于大表,进行单行的比较,势必工作量很大。数据块的比较就顺势而出,其实和单行拼接的原理类似,整块比较只是把一个数据块作为一个单位,拼接成一个长字符串,计算出校验值。说是数据块,其实是按索引来取值进行比较的。因此对于块计算,就需要表有主键或唯一索引。
3.主从一致性比较
  主库上计算的过程sql通过binlog传递到从库进行从库计算,主库的计算结果存储到一个pt.checksums统计表中,然后将表通过binlog日志方式传递到从库。从库根据计算过程sql计算出数据块的校验值,并把值更新到pt.checksums表中。再通过比较pt.checksums表上主从库的计算值,来比较主从数据是否一致。
  当计算某个数据块的值时,主库可能还有更新,为保证校验的是同一份数据,需要对正在计算的数据块加for update锁,加上锁的同时show master status获取主库的日志点。这样传到从库时,从库执行到该日志点时就wait,直到校验完数据块。
  ye,校验的过程就是这么简单。
 
pt-table-sync工作原理
1.单行数据checksum值的计算
2.数据块checksum值的计算
3.主从一致性比较
1,2,3步的原理和上面的一样,就不重复了。
  上面的校验过程只是发现不一致的数据块,发现后就需要深入到块内部,一条条语句比较了,找出那条语句不一致了,并生产replace into语句在主库上执行(注意,不能是insert。这分为两种情况:一是有唯一性主键,如果有唯一性主键或者索引,则insert相同记录会在主库上插入失败;二是没有唯一性主键或者索引,insert相同记录会造成记录重复。故要求pt-table-sync的表必须要有唯一性主键或者索引)。
  之后一块块,一从从的进行校验,递归进行直到over。
总结:
  MySQL只要涉及到主从,都能和binlog扯上关系,嗯,好好理解binlog。
 
 
 

主从校验工具pt-table-checksum和pt-table-sync工作原理的更多相关文章

  1. mysql 案例 ~ pt校验工具介绍

    简介:今天咱们来聊聊PT校验工具pt-table-checksum 注意事项:    1. 根据测试,需要一个即能登录主库,也能登录从库的账号:    2. 只能指定一个host,必须为主库的IP:  ...

  2. pt和px区别 pt是逻辑像素,px是物理像素

    pt和px区别 pt是逻辑像素,px是物理像素字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢?先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点:pt就是po ...

  3. Manifesto – HTML5 离线应用程序缓存校验工具

    Manifesto 是一个 HTML5 离线应用程序缓存校验工具,提供了快速校验 HTML5 manifest 文件有效性的方法.离线应用程序缓存在使用中最困难的部分之一就是无法正常工作的时候没有明显 ...

  4. ESLint – 可扩展的 JavaScript & JSX 校验工具

    ESLint 是一个开源的 JavaScript 代码校验工具,最初是由 Nicholas C. Zakas 在2013年创建的.经常被用来发现问题的模式或代码,不符合特定的风格准则. ESLint ...

  5. Javabean非空变量校验工具

    摘要 调研java Class getDeclaredFields() 与getFields()的区别,设计请求参数为Javabean时,基于反射机制校验其中非空变量的公共方法. java Class ...

  6. NXP ARM Vector Table CheckSum

    Signature Creator for NXP Cortex-M Devices Algorithm for creating the checksum The reserved Cortex-M ...

  7. Hash(MD5校验工具)

    本站提供md5校验工具下载.Hash(md5校验工具)是一款小巧好用的哈希计算器,Hash支持文件拖放,速度很快,可以计算文件的MD5.SHA1.CRC32 的值.在论坛上.软件发布时经常用Hash ...

  8. java-TokenProcessor令牌校验工具类

    TokenProcessor令牌校验工具类 public class TokenProcessor { private long privious;// 上次生成表单标识号得时间值 private s ...

  9. java常用正则校验工具类

    正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...

随机推荐

  1. Go技术日报(2020-02-28)

    go 语言中文网(每日资讯)_2020-02-28 一.Go 语言中文网 Gopher 学习效率低怎么办?曹大谈工程师应该怎么学习 Go 的 http 包中默认路由匹配规则 [每日一库]Web 表单验 ...

  2. Django中使用websocket并实现简易聊天室

    django使用websocket并实现简易聊天室 django默认只支持http协议 如果你想让django即支持http协议又支持websocket协议,则需要做以下配置 前期配置 前提需要安装c ...

  3. python通用读取vcf文件的类(可以直接复制粘贴使用)

    前言   处理vcf文件的时候,需要多种切割,正则匹配,如果要自己写其实会比较麻烦,并且每次还得根据vcf文件格式或者需要读取的值不同要修改相应的代码.因此很多人会选择一些python的vcf的库,但 ...

  4. 【Eclipse】eclipse设置,为了更简单快捷的开发

    保存时自动导包 Windows->Perferences->Java->Editor->Save Actions

  5. Java入门教程八(面向对象)

    对象概念 一切皆是对象.把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作.一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的.对象之间通过 ...

  6. 《自拍教程36》段位三_Python面向对象类

    函数只能面向过程,来回互相调用后顺序执行, 简单的编码项目,还能应付的过来, 复杂的大型项目,调用多了,就会乱. 如何才能不乱呢,可尝试下, 面向对象类的概念, 将现实世界的事物抽象成对象,将现实世界 ...

  7. vue配合iview/element等ui实现界面效果起步

    iview与element都是与vue配合使用的ui框架,用法与配置基本一致,在此,我以iview为例,教你如何起步.*首先,你需要有一定的vue基础,如果你还是个小白,可以去我之前介绍如何搭建一个v ...

  8. 一块小饼干(Cookie)的故事-下篇

    上篇介绍了注册的基本流程,下篇简单的讲讲登录的流程以及Cookie的出现 实现登录的小功能 当你在浏览器的输入框里输入localhost:8080/sign_in的时候,会发起GET请求,去访问sig ...

  9. 一个轻量级的基于 .NET Core 的 ORM 框架 HSQL

    HSQL 是一种轻量级的基于 .NET Core 的数据库对象关系映射「ORM」框架 HSQL 是一种可以使用非常简单且高效的方式进行数据库操作的一种框架,通过简单的语法,使数据库操作不再成为难事.目 ...

  10. .NET Core 3.x之下的配置框架

    一.配置框架的核心类库 首先我们使用.NET Core的配置框架需要安装额外的NuGet扩展包,下面是列举最常用的几个扩展包以及所对应的配置功能 NuGet Package Description M ...