前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tair数据迁移三步走

Tair数据迁移三步走

作者头像
高广超
发布2018-12-12 11:16:30
8270
发布2018-12-12 11:16:30
举报
文章被收录于专栏:互联网技术栈互联网技术栈

image.png

迁移的三个阶段

在多机房数据迁移中,整个过程分为三个阶段:历史数据迁移阶段、redolog迁移阶段、实时复制阶段。

1 历史数据迁移

历史数据的迁移使用一个队列完成,这个队列由多个线程消费。迁移模块保存一个本dataserver的主桶有序序列,存储引擎顺序按桶扫描所有数据(对ldb引擎来讲,是扫描memtable、immutable memtable和所有的SSTable),并将扫描到的数据放到队列里。主线程会同步等待每个桶的数据同步完成,然后在从机房上打上标签,每次同步前都会判断这个标签,避免重启后历史数据重迁。

2 redolog迁移

由于在历史数据同步时,client又会有新的写入,新写入的key可能已经被扫描过,所以如果不记录这些操作,这部分数据可能会被丢失。

对历史数据迁移来讲,桶有三种状态:已迁移、正在迁移、未迁移

redolog只记录“正在迁移”的桶的新写入请求。对于已迁移的桶的新写入请求,把它放到实时迁移队列,对于未迁移的桶的新写入请求,不做特殊处理,因为等到迁移这些桶时,数据已经落到ldb上。

image.png

当一个桶的ldb数据迁移完成时,立即开始迁移新产生的log。迁移log时,也可能会有新的写入,当剩余log很大时,新的写入会追加到log;当剩余log小于一定阈值后,会锁定log,新的写入会被阻塞,直到log迁移完毕后,再将被阻塞的请求放到实时复制队列里。 redolog的迁移使用多个队列,根据请求key的hash值放到不同的队列里,每个队列只有一个消费线程,这样来保证相同key的时序性。

3 实时复制

实时复制也使用多个队列,根据请求key的hash值放到不同的队列里,每个队列只有一个消费线程,来保证相同key的时序性。

如上所述,当一个桶的历史数据、redolog迁移完毕后,新的请求就会放到实时队列里。


个人介绍: 高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能互联网架构。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 迁移的三个阶段
    • 1 历史数据迁移
      • 2 redolog迁移
        • 3 实时复制
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档