当前位置:网站首页>项目中遇到的线上数据迁移方案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预计不会太慢,效率之后有待验证)
边栏推荐
- There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks
- Unity adds a function case similar to editor extension to its script, the use of ContextMenu
- Is Guoyuan futures a regular platform? Is it safe to open an account in Guoyuan futures?
- 勾股数规律(任意三个数能够满足勾股定理需要满足的条件)
- 1006 Sign In and Sign Out(25 分)(PAT甲级)
- 基于NCF的多模块协同实例
- OpenCV的二值化处理函数threshold()详解
- Introduction to polyfit software
- Shell 編程核心技術《四》
- In flinksql, in addition to data statistics, is the saved data itself a state
猜你喜欢

一文掌握数仓中auto analyze的使用

SSRS筛选器的IN运算(即包含于)用法

Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?

每日一题(2022-07-02)——最低加油次数

There are multiple divs in the large div, which are displayed on the same line. After overflow, scroll bars are generated without line breaks

LM10丨余弦波动顺势网格策略

2022CoCa: Contrastive Captioners are Image-Text Fountion Models

Oracle with as ORA-00903: invalid table name 多表报错
redis分布式锁的8大坑总结梳理

Oracle with as ora-00903: invalid table name multi report error
随机推荐
大佬们,求助一下,我用mysql cdc 2.2.1(flink 1.14.5)写入kafka,设置
FPGA时序约束分享01_四大步骤简述
启牛开的证券账户安全吗?
2022CoCa: Contrastive Captioners are Image-Text Fountion Models
Qt实现界面滑动切换效果
函数式接口
876. 链表的中间结点
整理混乱的头文件,我用include what you use
1007 Maximum Subsequence Sum(25 分)(PAT甲级)
prometheus安装
Technologie de base de la programmation Shell IV
QT realizes interface sliding switching effect
Use canal and rocketmq to listen to MySQL binlog logs
Is Guoyuan futures a regular platform? Is it safe to open an account in Guoyuan futures?
牛客小白月赛7 谁是神箭手
php伪原创api对接方法
Nebula importer data import practice
Detailed explanation of the binary processing function threshold() of opencv
26. 删除有序数组中的重复项 C#解答
Leetcode ransom letter C # answer