0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据迁移和数据一致性的问题

倩倩 来源:juejin.cn 作者:juejin.cn 2022-09-26 10:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

通过对数据的垂直拆分或水平拆分后,我们解决了数据库容量、性能等问题,但是将会面临数据迁移和数据一致性的问题。

在数据迁移方面,需要考虑如何快速迁移、平滑迁移、不停机的迁移等。待数据迁移完毕后,还需要校验数据的完整性。

数据一致性方面,要根据的业务来判断是否要必要引入分布式事务,如果需要引入分布式事务,需要斟酌是采用XA,还是基于BASE的柔性事务。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

视频教程:https://doc.iocoder.cn/video/

数据迁移

数据迁移是很容易出故障的一个环节,需要考虑怎么更加平滑的迁移旧数据到新的数据库和系统,以及达到数据准确、快速迁移、减少停机、对业务的影响小等,特别是异构的数据结构情况下,难度更大。

全量

全量迁移的过程如下:

业务系统停机。

数据库迁移,校验数据一致性。

然后业务系统升级,接入新的数据库。

缺点:

需要业务系统停机

迁移时间较长,对业务影响较大。如果是异构数据的话,需要使用程序来处理,迁移时间更长。

全量+增量

全量+增量迁移的方式,需要依赖数据本身的创建时间,步骤如下:

先同步数据到最近的某个时间戳(创建时间)。

然后发布系统升级维护的通知。

然后同步最近一段时间变化的数据。

最后升级系统,接入新的数据库。

全量+增量的同步相比全量同步的方式,大大的减少了系统停机的时间,对业务影响较小。

binlog+全量+增量

binlog+全量+增量是通过从数据库的主库或者从库解析和重新构造数据,实现复制。

通常情况下都需要中间件等工具的支持,一般需要中间件等工具的支持。可以实现多线程、断点续传、全量和增量数据的同步,还可以实现自动扩容和缩容。

常见的工具有:Canal、ShardingSphere-scaling等

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

项目地址:https://gitee.com/zhijiantianya/yudao-cloud

视频教程:https://doc.iocoder.cn/video/

分布式事务

XA分布式事务

XA分布式事务,是数据库本身支持的协议,具备强一致性。

96aab1ce-3d3f-11ed-9e49-dac502259ad0.jpg

XA分布式事务的组件:

应用程序(Application Program, 简称AP): 用于定义事务边界,即事务的开始和结束,并且在事务边界内对资源进行操作。

资源管理器(Resource Manager, 简称RM): 如数据库、文件系统,并且提供访问资源的方式。

事务管理器(Transaction Manager, 简称TM): 负责分配事务唯一标识,监控事务的执行进度,并且负责事务的提交、回滚等。

XA接口:

xa_start 负责开启或者恢复一个事务分支

xa_end 负责取消当前线程与事务分支的关联

xa_prepare 询问RM是否准备好提交事务分支

xa_commit 通知RM提交事务分支

xa_rollback 通知RM回滚事务分支

xa_recover 需要恢复的XA事务

MySQL从5.0.3开始支持InnoDB引擎的XA分布式事务。

96c5614a-3d3f-11ed-9e49-dac502259ad0.jpg

完整的XA事务处理流程如下:

96ee0b2c-3d3f-11ed-9e49-dac502259ad0.jpg

主流的XA框架有:Atomikos、Narayana、Seata

XA分布式事务存在的问题:

同步阻塞:全局事务包含了多个独立的事务分支,这一组事务分支要么都不成功,要不都失败,各个分支的ACID特性共同构成了全局事务的ACID特性。如果对读操作很敏感,需要将数据库的隔离级别设置为SERIALIZABLE,性能特别的差。

单点故障:TM存在单点故障,需要考虑TM高可用性。

数据不一致:极端情况下,会出现事务失败问题,需要监控和人工处理。即二阶段commit请求后,发送网络故障,只有一部分RM收到请求,其他节点没有收到Commit请求的情况。

柔性事务

BASE的核心在于,保证系统基本可用的前提下,通过利用柔性状态(支付操作后不是支付成功,而是支付中状态),实现数据的最终一致性,如下:

基本可用(Basically available),分布式事务参与方不一定同时在线。

柔性状态(Soft state), 允许系统状态更新有一定的延迟,出现一些中间状态,这个延迟对客户来说不一定能够察觉。

最终一致性(Eventually consistent),通常是通过消息传递的方式保证系统的最终一致性。

柔性事务核心理念是通过业务逻辑将互斥锁操作从RM层上升到业务层,通过放宽对强一致性的要求,来换取系统吞吐量的提升。

9729c7ca-3d3f-11ed-9e49-dac502259ad0.jpg

BASE柔性事务常见模式

TCC: 通过手动补偿处理

AT: 通过自动补偿处理

TCC介绍

TCC模式即将每个服务业务操作分成两个阶段,第一个阶段检查并预留相关资源,第二个阶段根据所有服务业务的try状态来操作,如果都成功,则进行Confirm操作,如果任意一个Try发送错误,则全部Cancel。

Try:准备操作,完成所有的业务检查,预留业务资源。

Confirm:真正执行的业务逻辑,不做任意的业务检查,只使用Try阶段预留的业务资源。因此Try操作成功,Confirm必须能成功。同时,Confirm操作必须保证冥等性,保证一笔分布式事务能切只能成功一次。

Cancel:释放Try阶段预留的业务资源,同样Cancel操作也必须满足冥等性。

977a8fca-3d3f-11ed-9e49-dac502259ad0.jpg

TCC模型实际是通过业务分解来实现分布式事务,对业务有较强的侵入性。

TCC模型需要注意的地方:

允许空回滚,即try没有完成资源预留,允许短路操作。

防悬挂控制,即需要保证,cancel必须在try之后才执行。

冥等性设计,即需要保证confirm和cancel需要保证冥等性,防止网络因素导致数据混乱。

AT

AT模式就是两阶段提交,自动生成反向SQL,当发生异常的时候,通过反向SQL回滚数据。

97cd1362-3d3f-11ed-9e49-dac502259ad0.jpg

Seata框架对AT的支持如下:

97eb13d0-3d3f-11ed-9e49-dac502259ad0.jpg

第一阶段,业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。

第二阶段,提交异步化,非常快速的完成,回滚的话通过一阶段的回滚日志进行反向补偿。

柔性事务下的事务特性

原子性:正常情况下保证

一致性:某个时间点,数据存在不一致,但是最终是一致的。

隔离性:某个时间点,A能读到B事务未提交的结果,即会脏读现象。

持久性:和本地事务一样,只要commit则数据就会被持久化。

总结

分布式事务主要目的是解决数据一致性问题,XA强一致,但是吞吐量太低,不利于高并发场景。柔性事务不保证强一致性,但是通过补偿实现最终一致性,常见的补偿有重试补偿、调度补偿、人工补偿等。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67736
  • 数据迁移
    +关注

    关注

    0

    文章

    87

    浏览量

    7219

原文标题:分库分表后,数据库数据一致性问题如何解决?

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SMD 贴片式车规铝电解电容 自动化生产 高一致性

    SMD贴片式车规铝电解电容通过封装革新、全流程自动化工艺及智能化检测技术,实现了高一致性生产,完全适配新能源汽车自动化产线需求 。具体分析如下: 、封装革新:适配自动化生产的核心优势 贴片式
    的头像 发表于 12-03 14:47 68次阅读

    电缆组件相位一致性的意义

    、技术本质:定义与量化指标 相位一致性描述的是多通道电缆组件在相同频率与输入信号下,各通道输出信号相位差的稳定程度。核心衡量指标包括: 相位偏差 :单通道相位的波动范围 通道间相位差 :多通道之间
    的头像 发表于 11-27 13:41 66次阅读
    电缆组件相位<b class='flag-5'>一致性</b>的意义

    请教大家下DP一致性测试问题

    请教大家下,DP的Vbios中已经固定了预加重和Swing的值,DP的TX信号一致性测试项中Non Pre-Emphasis Level Test(Swing2/Swing0)-PLTPAT,这个测试项意思是Swing2与Swing0偏差吗?已经固定了Swing中,这
    发表于 11-12 15:57

    解决锂电池一致性难题!景锂新能源电池均衡仪为储能安全/电动车续航保驾护航

    解决锂电池一致性难题!景锂新能源电池均衡仪为储能/电动车电池续航保驾护航
    的头像 发表于 11-06 11:00 363次阅读

    直播回顾 | 深度解读CAN总线一致性测试的四大层级与实战方法,虹科技术直播助您破解汽车通信稳定性的关键

    •直播主题CAN总线一致性测试“一致性测试是保障总线系统稳定、兼容、可靠运行的核心环节。”随着整车电子电气架构日益复杂,ECU数量增多、通信负载加大,CAN节点之间若存在电气特性不匹配、时序偏差
    的头像 发表于 10-30 17:34 1940次阅读
    直播回顾 |  深度解读CAN总线<b class='flag-5'>一致性</b>测试的四大层级与实战方法,虹科技术直播助您破解汽车通信稳定性的关键

    镜头不一致的问题原因分析

    在机器视觉系统的视界,镜头一致性犹如维系整个生态的隐形生命线,贯穿于光学成像、图像处理到智能决策的全链路,其细微波动足以颠覆整个检测系统的可靠。当工业界热衷于讨论算法精度与算力突破时,镜头这基础光学元件的
    的头像 发表于 09-11 09:45 690次阅读

    优化导航系统中的MEMS IMU数据一致性和时序

    新兴技术,以便帮助应对其当前PNT策略的脆弱。自动驾驶汽车(AV)的制导与导航控制(GNC)系统就属于这类技术,它必须能够识别与PNT服务丢失或受损相关的系列复杂威胁。
    的头像 发表于 07-11 15:49 1490次阅读

    stm32cubemx上的g031j6的管脚和数据手册不一致,请问哪个是正确的呢?

    stm32cubemx上的g031j6的管脚和数据手册不一致,请问哪个是正确的呢?
    发表于 07-10 06:39

    LED材料一致性比对(导热塑料开裂案例分享)

    不断地侵蚀着我们,面对这些劣质产品,可能个细小的失误就可能给企业造成巨大的财产损失或断送了前程。材料一致性比对的应用领域来料检验:由供应商未通知客户擅自改换原材料
    的头像 发表于 06-19 14:14 443次阅读
    LED材料<b class='flag-5'>一致性</b>比对(导热塑料开裂案例分享)

    车用锂离子电池机理建模与并联模组不一致性研究

    车用锂离子电池机理建模与并联模组不一致性研究
    发表于 05-16 21:02

    堆焊熔池轮廓实时监控,实现工艺稳定性与焊缝一致性

    及稀释程度等关键参数对焊层质量有直接影响,实时监控熔池轮廓和温度分布可及时预警缺陷并指导参数优化,以保证焊层一致性与工艺稳定性。今天起了解堆焊熔池轮廓实时监控,实现工艺稳定性与焊缝一致性。 堆焊简介 堆焊,又
    的头像 发表于 04-24 17:15 507次阅读
    堆焊熔池轮廓实时监控,实现工艺稳定性与焊缝<b class='flag-5'>一致性</b>

    一致性校正与边缘融合拼接

    电子发烧友网站提供《差一致性校正与边缘融合拼接.pdf》资料免费下载
    发表于 04-10 18:02 0次下载

    请问如何保证多片AD1278的通道之间相位一致性

    读取手册,发现要保证多片AD1278的通道之间相位一致性需要两点:1、CLK一致;2、SYNC_N同时拉高。 我的情况: 1、各个AD1278的CLK来着不同的时钟源,即分别采用10ppm
    发表于 01-14 06:02

    安立ME7834NR助力智联安验证NB-IoT NTN协议一致性

    安立公司日前宣布北京智联安科技有限公司(以下简称“智联安”)已经成功使用安立协议一致性测试平台ME7834NR来验证其最新NB-IoT NTN芯片MS210的协议功能。
    的头像 发表于 12-13 11:38 1426次阅读

    FCB-EV9520L光轴一致性的典范,焦距变换精准如初

    索尼FCB-EV9520L出色的光轴一致性在多个应用场景中展现出了其独特的优势和价值。通过提高图像的准确、减少图像畸变以及增强应用场景的适应,FCB-EV9520L成为了市场上备受瞩目的视频产品解决方案之
    的头像 发表于 12-09 09:45 993次阅读
    FCB-EV9520L光轴<b class='flag-5'>一致性</b>的典范,焦距变换精准如初