[MySQL Q&A] 说说checksum table

         有同学问到 checksum table在逻辑备份时候前后是否可以用于验证数据一致性。扩展一下发现有一些有趣的问题,比如数据插入顺序不同、表引擎不同、操作系统位数不同等。

 

 

插入顺序不同是否有影响

         我们知道全表扫描是可以有很多种顺序的,尤其当表里面出现过delete动作以后,逻辑导出再导入另外一个表后,两个表的全表扫描结果可能不同。

         Checksum table计算返回值的逻辑大致如下:

       

ha_checksum crc= 0;
foreach(row in table)
{
  row_crc= get_crc(row);
  crc+= row_crc;
}
return crc;

 

 

 可以看到只要总行数已经行内容相同,与读取行的顺序无关。

 从这个逻辑还能得到一下几个结论:

1)       与使用的引擎无关,也就是说即使主备不用同一个引擎,checksum也可用于检查。虽然InnoDB有隐藏行,但这里无视。

2)       与是否有索引无关。row_crc只用行本身的数据来计算,并不包括索引数据。

也就是说如果能够保证两个表里面的数据一样,表结构(列内容和顺序一样),操作系统一样,MySQL版本一致,是能够保证checksum的结果的。

 

下面我们讨论集中“不一样”

 

字段顺序不同是否有影响

在个row计算row_crc时,是每个字段依次计算的。但计算过程中会将上一个字段的结果作为计算下一个值的输入。

 

              switch (f->type()) {

                case MYSQL_TYPE_BLOB:

                case MYSQL_TYPE_VARCHAR:

                case MYSQL_TYPE_GEOMETRY:

                case MYSQL_TYPE_BIT:

                {   

                  String tmp;

                  f->val_str(&tmp);

                  row_crc= my_checksum(row_crc, (uchar*) tmp.ptr(),

                           tmp.length());

                  break;

                }   

                default:

                  row_crc= my_checksum(row_crc, f->ptr, f->pack_length());

                  break;

              }   

因此字段顺序会影响结果。

 

 

字段长度不同是否有影响

即使看到相同的内容,也有可能得到不同的checksum。

         从上面计算每个field的crc上看,若为变长字段(varchar等),由于用于计算的是实际长度,因此不会影响。比如将表的varchar(20)字段改成varchar(25),不会改变checksum的值。

         但若将char(20)改成char(25),或者int改成bigint,则会改变checksum。

 

操作系统位数不同

         因为返回值是unsigned long,我们就担心32位和64位机器的溢出问题。所幸在计算过程中的ha_myisam直接定义为uint32,只是在返回的时候才转成unsigned long,因此无影响。

 

字符集不同

         这个问题其实一直比较含糊。实际上与输入字符集有关。但有一个结论是肯定的:若表里面字段的unhex()值相同,得到的checksum即相同。

pt-table-checksum数据一致性校验工具和pt-table-sync数据同步工具解析 1.背景我的MySQL主从数据库运行了很长时间了,我现在不知道主从数据库中的数据是否一致?我该怎么办?该怎么验证主从库中的数据是否一致?如果我明确的知道主从数据库由于某次故障或者误操作已经存在数据不一致,那么我该怎么修复呢?需要使用主库数据重新搭一遍复制么?或者需要重新开始某个库或者表的复制么?相信很多MySQL DBA都提出过这些问题,或者自己动手实现过检测和恢复的功能。实际上大名鼎鼎的Perco 阅读详情

相关推荐

MiniMax H3本地部署实战:ComfyUI整合包安装与提速插件验证指南

在AIGC工具链快速演进的当下,本地部署内容生成模型成为许多创作者和开发者的关注焦点。本地部署意味着数据不出本机、可按需定制工作流,还能规避云端排队与外部依赖,其核心价值在于为内容生产提供可控、私密且可编程的生成环境。ComfyUI作为模块化节点式AI绘画工具,凭借灵活的工作流编排和API接口能力,成为承载这类模型的热门平台。MiniMax H3作为支持文本、参考图等多种输入的内容生成模型,与ComfyUI结合后,既适合个人进行概念验证,也能用于团队私有化流程搭建。实际落地过程中,中文整合包显著降低了环境配

weixin_29042035的博客 296

mysql checksum用法_MySQL checksum理解_mysql

mysql checksum了解在主从复制中Checksum常常需要对某些重要的表进行一致性检查。Checksum Table在逻辑备份时候前后是否可以用于验证数据一致性。扩展一下发现有一些有趣的问题,比如数据插入顺序不同、表引擎不同、操作系统位数不同等。插入顺序不同是否有影响我们知道全表扫描是可以有很多种顺序的,尤其当表里面出现过delete动作以后,逻辑导出再导入另外一个表后,两个表的全表扫描...

weixin_39850150的博客 1879

STM32最小系统硬件组成详解

STM32最小系统硬件组成详解 0组成: 电源 复位 时钟 调试接口 启动 1、电源 : 一般3.3V LDO供电 加多个0.01uf去耦电容 2、复位:有三种复位方式:上电复位、手动复位、程序自动复位 通常低电平复位:(51单片机高电平复位,电容电阻位置调换) 上电复位,在上电瞬间,电容充电,RESET出现短暂的低电平,该低电平持续时间由电阻和电容共同决定,计...

alala120的博客 12万+

使用checksum table比对mysql主从表数据

但这种方法看不出来具体是哪里不一致,要想看具体哪里不一致,可使用percona tool kit的pt-table-checksum比对,使用pt-table-sync来发现及同步不一致的数据。可以使用checksum table比对mysql主从表数据是否一致。确认主从上输出的值是否完全一致,若一致,则说明主从数据一致。checksum table 表名;

雅冰石的专栏 677

手把手带你搭建一个语音对话机器人:5分钟定制个人AI小助手

通过本文的简单步骤,你已经掌握了如何用 Python 搭建一个语音对话机器人。我们使用了实现语音识别,利用 OpenAI API 生成对话内容,并通过gTTS将文本转换为语音。整个流程非常简洁,你可以根据自己的需求进一步扩展机器人功能,甚至将其集成到实际的应用场景中。

小蜗牛的珍贵百宝箱 4806

3D Slicer中Auto3DSeg和TotalSegmentator等自动分割插件总是安装失败,怎么办?教你两招

TotalSegmentator, MONAI auto3Dseg,这些工具因分割器官多,准确性高,备受关注。同时,这些自动分割工具被集成在了3D slicer平台,非常方便临床医生做手术规划。详细了解这些工具看之前的教程👇-------- 简单概述 --------其中,MONAIAuto3DSeg扩展附带数十种针对特定临床用例的预训练分割模型,这些模型旨在快速运行,几分钟内即可在任何普通计算机上运行,无需 GPU,甚至在笔记本电脑上。

zzjlhlcd的博客 1698

mysql校验工具_pt-table-checksum--mysql数据校验工具

pt-table-checksum--mysql数据校验工具mysql简介pt-table-checksum是著名的percona-toolkit工具集的工具之一。它通过在主库执行基于statement的sql语句来生成主库数据块的checksum,把相同的sql语句传递到从库,并在从库上计算相同数据块的checksum,最后,比较主从库上相同数据块的checksum值,由此判断主从数据是否一致。...

weixin_42510600的博客 812

具身智能(40):主流 VLA 模型π₀

摘要: π₀是首款专为机器人设计的VLA(视觉-语言-动作)端到端基础模型,通过双阶段训练实现“感知-决策-执行”闭环。其创新点包括:1)FlowMatching技术实现连续平滑动作控制(精度0.3°);2)结合VLM预训练与多机器人实操数据,零样本任务完成率达76.4%,远超同类模型;3)支持模糊指令理解与动态场景适应(如遮挡识别)。开源版本涵盖不同规模模型,适用于工业装配、服务机器人等场景,在延迟(213ms)和稳定性(92%自主恢复率)上显著领先OpenVLA等竞品。

码农17年的博客 512

mysql checksum用法_MySQL 使用pt-table-checksum 检查主从数据一致性 (实例转)

1、基本环境:Mysql版本:5.6.12-logPercona-toolkit:2.2.18Linux:centos6.52、安装源码安装:# 一些依赖包yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y# 下载安装percona-toolkitwget https://www.percon...

weixin_31673213的博客 803

uniapp(全端兼容) - 最新实现全局设置修改字体大小功能,统一修改全部页面所有文字的大小(标准/小/中/大字号切换,用户修改后整个项目立即生效)设置应用字体的大小(详细示例代码,一键复制开箱即用

uni-app,支付宝微信小程序,h5,手机端H5网页,移动端网站,安卓app,ios苹果app,nvue,全局设置字体大小,退出后还能记录字号大小,uniApp将全部页面的字体字号进行修改,uniapp设置改变全局字体大小功能,动态调整应用字体大小,详细教程,动态显示字体大小,可调整显示字体大小,如何解决不同端字体大小的问题,除了rem还有什么方法,设置全局字体大小,用户设置字号大小,应用字体大中小,实现用户全局设置应用字体大小,老年模式字体设置思路,h5端不行怎么办,移动端不生效,修改全局字号,一键改整

✅ 精选推荐文章 8886

Unreal5从入门到精通之如何实现移动端触屏滑动手势

随着移动设备的普及,越来越多的游戏和应用选择在移动平台上发布。Unreal Engine 5(UE5)作为一款强大的游戏引擎,提供了丰富的工具和功能,帮助开发者打造出色的移动体验。UE5不仅提升了图形质量,还大幅简化了开发流程,使得开发者能够更专注于游戏设计和用户体验。在移动游戏中,触屏滑动手势是用户与应用互动的主要方式之一。然而,许多开发者在实现这些功能时常常遇到困难。为了填补这一知识空白,本篇文章将详细介绍如何在UE5中实现移动端触屏滑动手势,帮助你从入门到精通,提升你的开发技能。

TxNet 1138

mysql checksum_mysql8 参考手册--CHECKSUM TABLE语句

CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED]CHECKSUM TABLE报告 表内容的校验和。您可以使用此语句来验证备份,回滚或旨在将数据恢复到已知状态的其他操作前后的内容是否相同。该语句需要SELECT该表的 特权。视图不支持该语句。如果CHECKSUM TABLE针对视图运行 ,则该Checksum值始终为 NULL,并...

weixin_28941265的博客 793

【Frida Android】实战篇8:客户端证书认证绕过 Hook 教程

通过重写类的方法,自定义证书校验逻辑;利用配置文件,从系统层面管理证书信任策略;以及通过 OkHttp 框架提供的方法,实现证书的强绑定校验。这些内容主要围绕客户端如何验证服务端证书的合法性展开。客户端证书认证。当 APK 预置了客户端证书,并且服务端会对客户端证书进行校验时,传统的中间人攻击方式将面临新的挑战。我们将深入分析这种场景的工作原理,并详细介绍如何通过技术手段获取客户端证书、配置中间人工具,最终成功实现抓包分析。

水滴石穿 1427

CHECKSUM TABLE Statement

https://dev.mysql.com/doc/refman/5.7/en/checksum-table.html 13.7.2.3CHECKSUM TABLE Statement CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED] CHECKSUM TABLE reports a checksum for the contents of a table. You can use this statement to ver.

kongkong的专栏 542

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

CHECKSUM TABLE 语法(翻译自mysql官方文档)

CHECKSUM TABLE tbl_name [, tbl_name] ... [QUICK | EXTENDED] check table is reports a table checksum check table 命令提供了表的checksum。 this statement requires theselect privilege for the table 此语句需...

听说的专栏 2136

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql 表 checksum_mysql数据校验工具mk-table-checksum

校验工具介绍:1.mysql管理工具maatkit,包含以下主要工具:mk-table-checksum检查主从表是否一致的有效工具mk-table-sync不必重载从表而能够保证一致,打印、修复两个表之间不一致的记录。mk-visual-explainexlpain解释工具mk-heartbeat主从同步的监视工具,能够给出从落后于主多少mk-parallel-dump多线程的mysqldump...

weixin_33240461的博客 1086

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pt-table-checksum使用总结

1、pt-table-checksum概述 pt-table-checksum是Percona-Toolkit工具集中的一个组件,是一个检查主从复制一致性的工具,通过在主库上执行检查语句可以在线检查MySQL主从数据的一致性。它通过指定选项连接指定服务器实例,可以通过指定条件过滤库级别或表级别,每次检查一张表,所以不需要大量的内存和多余操作。即使是非常大的表也可以运行良好,这主要是因为pt-table-checksum可以将表划分为多个chunk,根据checksum query运行的时间来调整c..

qq_40770026的博客 2245

MySQL主从数据一致性校验工具:pt-table-checksum 详解

在MySQL主从架构中,尽管binlog同步机制能保证数据大部分情况下的一致性,但网络波动、SQL语句兼容性、从库延迟等问题仍可能导致主从数据偏差。一旦数据不一致,会给业务对账、数据恢复带来极大麻烦。Percona Toolkit中的pt-table-checksum工具,正是为解决主从数据一致性校验而生,它支持大表高效校验、自带负载保护,且能灵活控制校验范围。本文将从工具特点、实操案例两方面,带你全面掌握pt-table-checksum的使用。

专注Java和MySQL领域知识分享 2030

mysql analyze_mysql的analyze,check,checksum,optimize,explain

ANALYZE TABLE用来分析和存储表的关键字的分布,使得系统获得准确的统计信息,影响 SQL 的执行计划的生成。对于数据基本没有发生变化的表,是不需要经常进行表分析的。但是如果表的数据量变化很明显,用户感觉实际的执行计划和预期的执行计划不同的时候,执行一次表分析可能有助于产生预期的执行计划。表分析的语法是:ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE ...

weixin_34177886的博客 1217

The Flow Of Percona Toolkit pt-table-checksum

在master节点上执行的UPDATE语句,通过MySQLbinlog协议在所有的slave节点原样执行,更新slave节点本地的checksums表上的记录的master_crc和master_cnt信息;master_crcmaster节点数据库服务器上的当前数据表的当前chunk中所有记录的crc计算结果;master_cntmaster节点数据库服务器上的当前数据表的当前chunk中所有记录的条数;ts本条记录的时间戳,记录有变化就会更新;...

来啊 快活啊 1285

mysql checksum原理_pt-table-checksum 原理解析

Mysql的复制是通过传输binlog来实现,是一种逻辑复制,然而这种复制方式也带来了主从不一致的风险。因此主从不一致的校验对一个DBA来说是至关重要的。percona的pt-table-checksum一直作为主从不一致校验的热门工具,让我们现在来一起了解他吧。pt-table-checksum通过sql在主库执行数据块的校验,然后把相同的语句传送到从库,并在从库上计算数据块的校验,最后将主从库...

weixin_32010647的博客 1133

技术分享 | 数据校验工具 pt-table-checksum

作者:耿进 爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。对数据库技术有着浓厚的兴趣。你见过凌晨四点 MySQL 的 error 吗? 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 参考文档:https://www.percona.com/doc/percona-toolkit/LATEST/pt-table-checksum.html 1. 概述 pt-table-checksum 是 Percona-.

ActionTech的博客 1833

MySQL主从数据一致性的终极武器:pt-table-checksum实战

与的组合拳,是保障MySQL主从架构数据生命线的核心工具,也是每个MySQL DBA吃饭的家伙。掌握它,不是为了炫技,而是为了在出现问题时,我们能有条不紊、有理有据地解决问题。MD5。

fuladulu的博客 924

pt-table-checksum安装使用

pt –table -checksumpercona-toolkit系列工具中的一个用途:    可以用来检测主、 从数据库中数据的一致性。原理:    在主库上运行, 对同步的表进行checksum, 记录下来。 然后对比主从中各个表的checksum是否一致, 从而判断数据是否一致。pt-table-sync用途:用来修复多个实例之间数据的不一致,它可以让...

yimenglin的博客 961

mysql主从 利用mk-table-checksum监测Mysql主从数据一致性操作记录

root@master-server ~]# mk-table-checksum h=192.168.1.101,u=data_check,p=check@123,P=3306 h=192.168.1.102,u=data_check,p=check@123,P=3306 -dhuanqiu,huanpc --count | mk-checksum-filter //如下表示huanqiu库下只有haha表的数据,主从不一。如果不加-d,校验的是所有库;

分享技术架构、运维、程序开发经验 948
上一篇: Doublebinlog for MySQL
下一篇: 5.6 explain update一个疑似bug
iteye_621
博客等级 码龄8年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值