MySQL · 特性分析 · 数据一样checksum不一样

简介: 背景有一个特殊环境需要进行人肉迁移数据,对比了表里的数据一模一样,但是无论如何checksum就是不一致,那么问题出在哪里呢?问题排查数据是否一致眼睛都把屏幕盯穿了,也没发现不一致的数据。导出数据的方式checksum还是不一致,所以这个原因排除。MySQL版本嗯,这个确实不一样,源端是5.5,目的端是5.6,但是这个是checksum函数不一样吗?还是表的结构变了

背景

有一个特殊环境需要进行人肉迁移数据,对比了表里的数据一模一样,但是无论如何checksum就是不一致,那么问题出在哪里呢?

问题排查

数据是否一致

眼睛都把屏幕盯穿了,也没发现不一致的数据。

导出数据的方式

image
checksum还是不一致,所以这个原因排除。

MySQL版本

嗯,这个确实不一样,源端是5.5,目的端是5.6,但是这个是checksum函数不一样吗?还是表的结构变了?咨询了内核的同学,说checksum的源代码没变啊,接下来那应该是表结构变了?通过查手册发现:
The checksum value depends on the table row format. If the row format changes, the checksum also changes. For example, the storage format for temporal types such as TIME, DATETIME, and TIMESTAMP changes in MySQL 5.6 prior to MySQL 5.6.5, so if a 5.5 table is upgraded to MySQL 5.6, the checksum value may change.
既然这样了,那我们就来验证下是不是因为datetime的问题。
image
嗯,确实是datetime的格式导致的。

总结

这个问题总结来说是因为MySQL5.5和5.6的时间存储格式有变化,导致了checksum不一样。

这个问题知道原因后觉得非常简单,但是排查起来却不是那么简单的。遇到问题不要慌,理出要查的1,2,3,然后用排除法一步一步验证就能知道问题在哪里了。

附一详细步骤如下:

源端:

1.备份结构和数据

mysqldump -h127.0.0.1 -P源端口 -u root --default-character-set=utf8 -B drcdb>src_lingluo.sql

2.拷贝文件

scp src_lingluo.sql lingluo.sss@目的端:/tmp

目的端:

3.把数据导进去

mysql>set names utf8;source /tmp/src_lingluo.sql;

4.在两边取checksum

sh get_checksum.sh

5.目的端:

scp table_checksum.txt lingluo.sss@目的端:/tmp

6.vimdiff 对比文件

如果文件内容一样的话,说明数据一样

附二get_checksum.sh

#!/bin/sh 
port=$1

table_list='`mysql -h127.0.0.1 -P${port} -u root -A -N << EOF | tail -n +3
    use db_name;show tables
EOF`'

for i in ${table_list}
do
    table_cs='`mysql -h127.0.0.1 -P${port} -u root -A -N -D db_name -e \"checksum 
table ${i};\"`'
    echo ${table_cs} >> table_checksum.txt
done
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
默认网关填了不能保存问题秒解
周末的休息,电脑也跟着一起休息了起来,晕晕乎乎了两天,没想到电脑也受到了感染,变成了中毒的状态,具体特征表现为:默认网关填写之后确定不能保存;当然电脑也就不能够通过网络与外网或者局域网通信了~
|
7月前
|
运维 网络协议 API
IP地址到底是什么?一张图看懂+命令行/网站查询实操
IP地址是设备联网的“门牌号”,分公网/私网、IPv4/IPv6,用于识别与定位。本文详解其原理、命令行(ipconfig/ifconfig/curl)及在线查询方法,并介绍风控、广告等业务集成场景,助你从理解到实战高效用好IP信息。(239字)
6239 1
IP地址到底是什么?一张图看懂+命令行/网站查询实操
|
8月前
|
人工智能 自然语言处理 监控
2026年企业级智能客服系统建设方案,瓴羊Quick Service打造全链路智能服务体系
2026年,企业服务体验成核心竞争力。本文阐述企业级智能客服系统建设方案,聚焦全渠道接入、AI交互、数据融合与价值运营四大模块,并详解瓴羊Quick Service如何以全链路智能能力(多模态交互、动态知识、人机协同、数据驱动)推动客服从成本中心迈向价值中心。(239字)
|
机器学习/深度学习 数据采集 算法
回归算法全解析!一文读懂机器学习中的回归模型
回归算法全解析!一文读懂机器学习中的回归模型
2017 0
|
监控 安全 网络安全
外贸企业网站制作:使用WordPress搭建一个展示型的外贸企业网站
本篇主要介绍使用WordPress的CMS管理系统搭建企业外贸网站,也可以称为B2B外贸网站。外贸网站制作需要准备的资料和建站流程:域名申请注册、服务器性能选配、服务器管理工具、WordPress的安装、企业展示型主题的选择和安装、使用WordPress插件的完成网站所需的功能、监控服务器运行状态保证网站正常运行、利用白帽技术提升SEO排名、使用SEO工具对站内内容文章的持续更新优化,吸引更多的自然流量提高转化率和成单率。
1640 6
外贸企业网站制作:使用WordPress搭建一个展示型的外贸企业网站
|
机器学习/深度学习 人工智能 计算机视觉
《深度剖析:一文读懂卷积神经网络中的感受野》
感受野是卷积神经网络(CNN)中关键概念,指神经元在输入数据中对应的区域大小。它影响模型对特征的捕捉能力,决定局部与全局特征的提取。单层卷积的感受野由卷积核大小、步长和填充决定;多层卷积时感受野会逐层累加扩大。合适感受野能提升模型性能,过大或过小都会影响效果。调整感受野可通过改变卷积核大小、步长或使用空洞卷积实现。深入理解感受野有助于优化CNN设计,推动AI技术发展。
1207 4
|
算法 关系型数据库 Java
数据库原理第四章课后题答案(第四版)
数据库原理第四章课后题答案(第四版)
930 0
|
应用服务中间件 Linux nginx
Docker镜像管理篇
关于Docker镜像管理的教程,涵盖了Docker镜像的基本概念、管理命令以及如何制作Docker镜像等内容。
1389 7
Docker镜像管理篇
|
缓存 监控 数据可视化
利用GitLab CI/CD自动化您的软件开发流程
【10月更文挑战第10天】GitLab CI/CD 是 GitLab 内置的持续集成和持续部署工具,通过编写 .gitlab-ci.yml 文件,可以自动化构建、测试和部署应用程序的过程。本文介绍 GitLab CI/CD 的核心优势、实施步骤及在现代开发中的应用,帮助您提高开发效率和软件质量。
|
测试技术 API 数据安全/隐私保护
『App自动化测试之Appium应用篇』| Appium常用API及操作
『App自动化测试之Appium应用篇』| Appium常用API及操作
1035 1

相关产品

  • 云数据库 RDS MySQL 版