博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL · 特性分析 · 数据一样checksum不一样
阅读量:5896 次
发布时间:2019-06-19

本文共 1385 字,大约阅读时间需要 4 分钟。

背景

有一个特殊环境需要进行人肉迁移数据,对比了表里的数据一模一样,但是无论如何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=$1table_list='`mysql -h127.0.0.1 -P${port} -u root -A -N << EOF | tail -n +3 use db_name;show tablesEOF`' 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.txtdone

转载地址:http://okosx.baihongyu.com/

你可能感兴趣的文章
Linux下修改PATH的方法
查看>>
JdbcTemplate使用总结
查看>>
一道腾讯面试题的思考:到底谁会赢?
查看>>
flex
查看>>
paip 自定义输入法多多输入法词库的备份导出以及导入
查看>>
创业公司
查看>>
asp.net页面与页面之间传参数值
查看>>
Jsp中使用数据库连接池.
查看>>
AndroidUI设计之布局-详细解析布局实现
查看>>
用 Python 脚本实现对 Linux 服务器的监控
查看>>
Windows phone 8 学习笔记(1) 触控输入
查看>>
Python补充03 Python内置函数清单
查看>>
分布式缓存服务器设计原理
查看>>
Eclipse换常用的快捷键
查看>>
Windows Phone 8.1 新特性 - 控件之列表选择控件
查看>>
线程同步:互斥锁,条件变量,信号量
查看>>
【cocos2d-x 3.0-Mac配置篇】
查看>>
学习学习
查看>>
提升jQuery开发技能的教程
查看>>
Android系统自带样式(@android:style/) (转)
查看>>