前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线上数据平滑迁移思考及拙见

线上数据平滑迁移思考及拙见

作者头像
一枝花算不算浪漫
发布2019-02-20 17:29:07
6800
发布2019-02-20 17:29:07
举报

前言

服务重构,老版系统为php代码,新版系统改为Java。 数据层面沿用之前老版服务的数据库结构,部分库字段进行修改。

最终目的:服务实现切换,数据实现切换(老库到新库),不能停机升级,尽量减小对用户影响。

实现方案:日志追加 下面具体说一下自己的实现方案,可能会有纰漏的地方,仅做参考。

日志追加法

  1. 步骤一 通过用户执行的新增、修改、删除操作,记录到日志文件中,old_db不再写入新数据。 日志的格式统一为被修改的库、被修改的表、被修改的字段等信息。 保证日志的统一性,方便日志同步服务同步数据。
  1. 步骤二 开发一个数据同步服务syn-data-service,将旧库的数据同步到新库中。
  1. 步骤三 当数据同步完毕后,将new-service设置为暂不可写数据(日志同步很快,会牺牲部分用户体验)。 且开发一个日志同步工具syn-log-service,将日志同步到新库中

4,步骤四 开发一个compare-service,进行数据校验

5,步骤五 数据没有问题后切换为new-db,用户执行的新增、修改、删除 双写到日志和new_db中。

6,步骤六 兜底策略:如果发现数据有大规模不一致或者大规模数据丢失的情况,可以通过日志回写到old_db中,然后切换服务到old_server。

大致步骤如上所示,可能有考虑不周全的地方,这里只是短时间的牺牲了用户的体验来完整数据同步的一致性。 步骤六是我多加的一个步骤,做任何事情都要想一个兜底策略,这也是我最近感触最深的一点体验。用于不要过分相信依赖的调用方,做好plan b。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 日志追加法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档