分布式系统 读书笔记(二)数据平滑迁移

标签: 分布 系统 读书 | 发表时间:2014-06-09 01:00 | 作者:xjl712
出处:http://www.iteye.com

可以参考方案

在开始进行数据迁移时,记录增量的日志,在迁移结束后,再对增量变化进行处理。在最后,可以把要迁移的数据的写暂停,保证增量日志都处理完毕后,再切换规则,放开所有的写,完成迁移工作。

 

 用户信息表示示例

id     name   age   gender

 

我们希望根据id去模把上面这个表 划分到两个数据库中,  也就是id  mod 2 为0的还在原数据库  为1的在新库中

假设我们有4条数据

根据前面描述

1首先我们确定要开始扩容,并且开始记录数据库的数据变更的增量日志

    源库表          增量日志       新库表

     id=1 v=1

     id=2 v=1

     id=3 v=1

     id=4 v=2

id标识记录   v 标识版本号

 

2 接下来,数据开始复制到新库表,并且更新进来。可能形成以下格式

     源库表          增量日志         新库表

     id=1 v=2       id=1 update    id=1 v=1

     id=2 v=2       id=2 update    id=3 v=2

     id=3 v=2       id=3 update

     id=4 v=2   

可以看到1 和3 的已经在新库中。但是id=1的记录版本是旧的 id=3是新的

 

3.当全量迁移结束后,我们把增量日志中的数据也进行迁移 ,如下

  源库表          增量日志         新库表

     id=1 v=2       id=1 update    id=1 v=2

     id=2 v=2       id=2 update    id=3 v=2

     id=3 v=2       id=3 update  

     id=4 v=2       id=4 update

                          id=3 update

虽然不能保证新库和源库一直,但这是一个逐渐收敛的过程

 

4 然后我们进行数据比对,这时可能会有新库数据和源库数据不同的情况,把它们记录下来。

 

5、接着我们停止源数据库中对于要迁移的数据的写操作,然后进行递增日志处理,以使得新库表的数据时最新的。

 

6最后更新路由规则,所有新数据的读和写就到了新库表,这样就完成了迁移过程

 

 

书名《大型网站系统和Java中间件实践》

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [分布 系统 读书] 推荐:

分布式系统 读书笔记(二)数据平滑迁移

- - 企业架构 - ITeye博客
在开始进行数据迁移时,记录增量的日志,在迁移结束后,再对增量变化进行处理. 在最后,可以把要迁移的数据的写暂停,保证增量日志都处理完毕后,再切换规则,放开所有的写,完成迁移工作. 我们希望根据id去模把上面这个表 划分到两个数据库中,  也就是id  mod 2 为0的还在原数据库  为1的在新库中.

分布式系统 读书笔记(三)跨库查询的问题和及解决

- - 企业架构 - ITeye博客
如果一个查询涉及多个库或者多张分表 结果该如何处理. 1.排序,即多个来源的数据查询出来以后,在应用层进行排序的工作. 查出来如果是已经排序号的,则对多路进行归并排序否则就要进行一个全排序. 2.函数处理,即使用Max,Min,Sum,Count 等函数对多个数据来源的值进行相应的函数处理. 3.求平均值,从多个数据来源进行查询时,需要把SQL改为查询SUM和Count,然后对多个数据来源的Sum求和,count求和后,计算平均值,这是需要注意的地方.

分布式缓存系统 Xixibase

- Le - 开源中国社区最新软件
Xixibase是一个高性能,跨平台的分布式缓存系统. Xixibase server 采用 C++ 实现,底层网络库采用的是Boost Asio. Xixibase 主要特点: 1. 实现'Local Cache'功能, 当客户端打开'Local Cache'选项, 客户端可以将数据同时存储在Server 端和本地,并且保证本地数据和Server 端的数据的一致性.

分布式检索系统 ElasticSearch

- - 丕子
ElasticSearch最近发展不错,github等都用它,可以关注I下. ElasticSearch是分布式,REST风格,搜索和分析系统. 具有实时数据,实时分析,分布式,高可用性,多租户,全文搜索,面向文档,冲突管理,自由模式,rest风格API,每个操作的持久性,Apache 2的开源许可证,基于Apache Lucene之上的特点.

分布式消息系统:Kafka

- - 标点符
Kafka是分布式发布-订阅消息系统. 它最初由LinkedIn公司开发,之后成为Apache项目的一部分. Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务. 在大数据系统中,常常会碰到一个问题,整个大数据是由各个子系统组成,数据需要在各个子系统中高性能,低延迟的不停流转. 传统的企业消息系统并不是非常适合大规模的数据处理.

分布式系统介绍-PNUTS

- - CSDN博客推荐文章
PNUTS是Yahoo!的分布式数据库系统,支持地域上分布的大规模并发操作. 它根据主键的范围区间或者其哈希值的范围区间将表拆分为表单元(Tablet),多个表单元存储在一个服务器上. 一个表单元控制器根据服务器的负载情况,进行表单元的迁移和拆分. 每条记录的数据都没有固定的模式(采用JSON格式的文本).

Ganglia:分布式监控系统

- - CSDN博客移动开发推荐文章
1         环境安装配置. 1.1      依赖软件下载. Ganglia是伯克利开发的一个集群监控软件. 可以监视和显示集群中的节点的各种状态信息,比如如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈现. 而ganglia又依赖于一个web服务器用来显示集群状态,用rrdtool来存储数据和生成曲线图,需要xml解析因此需要expat,配置文件解析需要libconfuse.

kafka分布式消息系统

- - CSDN博客云计算推荐文章
Kafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程状态). 当前很多的消息队列服务提供可靠交付保证,并默认是即时消费(不适合离线).

分布式内存文件系统:Tachyon

- - 杨尚川的个人页面
Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存储在Tachyon里的文件. Tachyon是架构在最底层的分布式文件系统和上层的各种计算框架之间的一种中间件,其主要职责是将那些不需要落地到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存,从而提高效率,减少内存冗余,减少GC时间等.

FastDFS分布式文件系统

- - 开源软件 - ITeye博客
       FastDFS是一个开源的轻量级 分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题. 特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等.