mysql数据迁移数据一致性检教6_数据迁移后的一致性校验

本文介绍了在数据迁移过程中保证数据一致性的方法,特别是从Scala项目迁移到Java微服务时。通过使用MD5函数进行数据内容校验,结合COUNT函数验证数据条数,并通过GROUP_CONCAT和MIN/MAX ID定位不一致数据。此外,文中还探讨了特殊场景的处理和数据量大的解决方案,以及迁移验证中的问题和总结。

背景

目前正在对 scala 项目(某块业务)重构,重构成 Java 微服务,业务、表设计都有些许变化,其中涉及到数据迁移,简单来说就是从老表迁到新表(表结构发生了变化)。为了保证迁移前后数据的一致性,需要进行一些必要的验证。本文主要讨论下自己在进行数据一致性校验时用到的方法,仅仅作为一种数据验证的思路,分享给大家,内容可能有一些瑕疵,欢迎大家指正。

1.数据迁移场景描述

以下只列举几个特殊场景:

scala 那边的表字段名和现在微服务中的字段名大部分不一致

scala 项目 A 表中的大部分字段需要迁移到微服务中的 A’ 表中,但是有一小部分字段需要和 B 表中的所有字段关联后迁移到微服务的 B’ 表中

scala 项目中的一些枚举与现在微服务中重新规定的枚举有一些差异

待迁移表中有一个特别大的待迁移字段:

`value` varchar(10000) NOT NULL COMMENT '属性值';

术语约定:

​ 源表:scala 中待迁移到微服务中的表

​ 目的表:微服务中的表

2、验证函数选择

网上介绍更多的方法是借助 pt-table-chum 工具进行验证,下面是其原理介绍:

pt-table-checksum 是 Percona-Toolkit 的组件之一,用于检测MySQL主、从库的数据是否一致。其原理是在主库执行基于statement的sql语句来生成主库数据块的checksum,把相同的sql语句传递到从库执行,并在从库上计算相同数据块的checksum,最后,比较主从库上相同数据块的chec七墨博客ksum值,由此判断主从数据是否一致…

根据其原理发现这个工具基于当前特殊场景好像不是很适合,但是还是很有借鉴意义的,比如原理中提到的比较主从库上相同数据块的 checksum 值,那我们这边也可以对源表与目的表分别进行分组并取 checksum 值,最后对比相同数据块的checksum值就可以了。所以搜索下 checksum 是如何计算的,找到如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值