当前位置:网站首页>项目中遇到的线上数据迁移方案1---总体思路整理和技术梳理
项目中遇到的线上数据迁移方案1---总体思路整理和技术梳理
2022-07-04 18:00:00 【Koikoi123】
项目有一个需求,旧库拆分到新库,将旧数据迁移到新库里,期间需要考虑补录和迁移数据,因为没有canal同步,我分配到的任务就是在代码里加入补录迁移数据的接口去保证迁移顺滑和数据一致性
因为线上数据量很大且每时每刻都会有数据入表,需要考虑的几个点:
- 先整理出凌晨期间持续增长数据的表,正常时间入库的表在凌晨一般都不会写入,或者事先限制告知用户在凌晨期间不要做入表操作,因此可以忽略不做迁移
- dba迁移1点前所有数据,假设迁移时间一小时,2点迁完,2点后实现双写,新旧数据源内的数据都会做写入
- 配置多数据源,实现自定义注解切换数据源
- 我会写一个开放接口,传入指定时间范围(假如1点-2点),期间新旧数据源会有偏差,我只需要传入时间范围参数,接口做迁移1-2点之间的数据即可
- 该接口要做两件事,新增和修改,分别拉取create_time和update_time在该时间段内的所有数据,这里一定要事先提交DB工单去申请给线上的这两个字段建立索引
- 先从旧表查create_time范围的数据,因为是双写,所以从旧数据源内查出的实体类list需要不传ID插入新数据源(并且要分页插入)保证迁移的数据是一致的,但是ID不保证(因为自增ID可能会有问题)
- 再从旧表查update_time范围的数据,并且sql多加 update_time != create_time来确保只查出更新过的旧数据,这里迁移的时候ID是保证一致的,可以根据所传ID进行更新(这里是可以走索引的,目前线上log表数据量有千万级别,但凌晨一小时内数据其实不多,批量update预计不会太慢,效率之后有待验证)
边栏推荐
- Qt实现界面滑动切换效果
- To sort out messy header files, I use include what you use
- Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?
- 2022-07-04: what is the output of the following go language code? A:true; B:false; C: Compilation error. package main import 'fmt' func
- 测试工程师如何“攻城”(上)
- Is it safe to open an account at Great Wall Securities? How to open an account when buying stocks
- Leetcode fizzbuzz C # answer
- 页面元素垂直水平居中、实现已知或者未知宽度的垂直水平居中。
- The page element is vertically and horizontally centered, realizing the vertical and horizontal centering of known or unknown width.
- Technologie de base de la programmation Shell IV
猜你喜欢
如何使用Async-Awati异步任務處理代替BackgroundWorker?
2022CoCa: Contrastive Captioners are Image-Text Fountion Models
mysql中explain语句查询sql是否走索引,extra中的几种类型整理汇总
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
The 300th weekly match of leetcode (20220703)
在线SQL转Excel(xls/xlsx)工具
性能优化之关键渲染路径
Process of manually encrypt the mass-producing firmware and programming ESP devices
一文掌握数仓中auto analyze的使用
联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点
随机推荐
Unity adds a function case similar to editor extension to its script, the use of ContextMenu
千万不要只学 Oracle、MySQL!
函数式接口
HDU 1372 & POJ 2243 Knight Moves(广度优先搜索)
Detailed explanation of issues related to SSL certificate renewal
大佬们,求助一下,我用mysql cdc 2.2.1(flink 1.14.5)写入kafka,设置
Build your own website (15)
测试工程师如何“攻城”(上)
"Only one trip", active recommendation and exploration of community installation and maintenance tasks
Is the securities account opened by qiniu safe?
Unity editor extends C to traverse all pictures in folders and subdirectories
如何使用Async-Awati异步任務處理代替BackgroundWorker?
The page element is vertically and horizontally centered, realizing the vertical and horizontal centering of known or unknown width.
IBM WebSphere MQ retrieving messages
基于NCF的多模块协同实例
.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
与二值化阈值处理相关的OpenCV函数、方法汇总,便于对比和拿来使用
Leetcode ransom letter C # answer
Guys, for help, I use MySQL CDC 2.2.1 (Flink 1.14.5) to write Kafka and set
In flinksql, in addition to data statistics, is the saved data itself a state