前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python实现MySQL和其他数据源的数据比对

使用python实现MySQL和其他数据源的数据比对

原创
作者头像
保持热爱奔赴山海
发布2024-06-26 09:41:44
1390
发布2024-06-26 09:41:44

日常工作有时候需要比对不同MySQL或者其他数据源的差异情况,如果是主从环境可是用percona-toolkit工具包,如果是非主从环境的数据比对,就需要我们自行写脚本实现。

下面是我个人之前写的 https://github.com/lirulei/data_diff 供参考。

data_diff

用于比对mysql和mysql/pg/es之间的数据差异,mysql2mysql和mysql2pg需要确保二者的列的顺序是一致的,mysql2es二者的列顺序无所谓。

说明

  • mysql2mysql 用于源端和目标端都是MySQL的数据比对场景。
  • mysql2pg 用于源端是MySQL,目标端是PG的数据比对场景。
  • 特别注意:mysql2mysql和mysql2pg这2个工具只支持主键为整型单调递增。代码里写死了主键为id,如果主键非id的话,批量替换下即可。非自增主键的场景,目前脚本还不支持。
  • mysql2es 用于源端是MySQL,目标端是ES的数据比对场景。它会将差异的es id输出到redis queue中。

依赖

mysql2mysql

  • pip3 install psycopg2==2.9.4

mysql2pg

  • pip3 install psycopg2==2.9.4
  • pip3 install mysql-connector-python==8.0.31

mysql2es

  • pip3 install elasticsearch==7.13.1
  • pip3 install mysql-connector-python==8.0.31
  • pip3 install redis==3.5.3

性能

  • step为1000时,每秒大约可以比对2.5k条记录

不足

  • mysql2pg的脚本,不能处理bit类型,会出现误判的情况
  • mysql2pg的脚本,暂时不具备where条件的功能,待完善

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • data_diff
    • 说明
      • 依赖
        • mysql2mysql
        • mysql2pg
        • mysql2es
      • 性能
        • 不足
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档