前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务迁移导致数据差异

服务迁移导致数据差异

作者头像
libo1106
发布2018-08-08 16:01:06
7360
发布2018-08-08 16:01:06
举报
文章被收录于专栏:Web 开发Web 开发

折腾博客的时候,经常搬服务器,按理来说,迁移是一件很简单的事。

通常,数据迁移包括以下几步:

  1. 网站根目录打包迁移,例如public_html这样的目录。
  2. 数据库迁移,通过phpmyadmin或者navicat之类的,把mysql数据复制到新的服务器上面。
  3. 通过修改本机hosts检查新服务器是否部署成功。
  4. 更改DNS,实施迁移。

通常我在dnspod里面,设置的解析缓存时间很短,基本上我修改DNS,是马上生效的。但毕竟用户的DNS不在我们的控制范围,总会有用户解析到旧的服务器上面,杯具就这样发生了。

案例回放

一个内部系统,进行服务迁移,从A服务器到B服务器。但是迁移过程中,域名解析没有同步生效,有的用户访问到了A,有的用户访问到了B。

一些用户,在系统上面新建了一部分数据,这部分新的数据,一部分存放在A里面,一部分存放在B里面。很自然,我必须得让B里面的数据是最新的,于是我需要去复制A里面的新数据到B里面去。因为A\B都有新数据,结果部分数据的ID冲突了。

ID冲突不要紧,insert的时候不要给ID,让B系统重新生成ID就好。但是这样又引入一个新的问题,数据表里面的ID有关联,新ID丢失了原来的关联。

解决方案

为了解决这个问题,复制A的新数据到B的时候,先给两边临时保存一下他们各自的ID,例如用temp_pid。

代码语言:javascript
复制
# 备份关联id
UPDATE `posts` SET temp_pid = pid

然后我们就可以根据这个temp_pid恢复新增数据的各种关联。

代码语言:javascript
复制
# 动态更新新关联id
UPDATE posts parent,posts child
SET child.parent_pid = parent.pid
WHERE child.parent_pid = parent.temp_pid
AND child.parent_pid <> 0

感谢@toobug提供的方案。

END

你们在服务迁移的时候,又是怎么做的呢?直接关闭旧系统?

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 案例回放
  • 解决方案
  • END
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档