加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL主从一致性对比

发布时间:2020-12-25 08:22:24 所属栏目:编程 来源:网络整理
导读:《MySQL主从一致性对比》要点: 本文介绍了MySQL主从一致性对比,希望对您有用。如果有疑问,可以联系我们。 相关主题:MYSQL高可用/MYSQL调优 原文:http://www.jianshu.com/p/54192d03274d 作者:何约什 数据不一致的原因 我们平台中上线了大量的MySQL业务

通过以上手段流程就能完美的把大量的数据计算从MySQL迁移到大数据平台,剩下的少量不一致的key值,再到MySQL上比对,从而避免了对业务数据库的影响。大数据库对比有两种选择MapReduce以及Spark,相对来说Spark会比MapReduce简单很多,所以我们选择Spark,


下面简单介绍一下大概的对比方案的实施步骤:


1 导出文件


采用select * into outfile从mysql中导出要对比的表,假设我们从master中导出了一张表,导出文件为:master.txt,内容为:

1,"abc","dddddd"
2,"ef","adddd"

从slave中导出一张表,导出文件为:slave.txt,内容为:


1,"tttt"

2,"fffff"


2 上传文件到hdfs中


hadoop fs -copyFromLocal master.txt /

hadoop fs -copyFromLocal slave.txt /


3 采用下面的spark脚本计算不同的key值


val rddMaster = sc.textFile("/master.txt").map(x =>(x.split(",")(0),x)) // 假设第一个字段是主键

val rddSlave = sc.textFile("/slave.txt").map(x =>(x.split(",x))

val difference = rddMaster.cogroup(rddSlave).filter(x=> x._2._1 != x._2._2 )

val differenceKey = difference.keys()

differenceKey.collect


通过三面的三个步骤我们就能够得出不同的key值有哪些了。


上面的代码非常简单,只是提供一个思路,对于具体的情况肯定会复杂一些,如有多个主键的情况,依据主键数据中包含了分割符号等等情况,这里就不对这些情况进行细说了。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读