memcached迁移方案——记一次memcached session服务的迁移

背景:

  (1)由于机房调整,需要迁移memcached;

  (2)需要在短期内迁移完成(一周以内);

  (3)该memcached 保存了用户的登录数据,非常重要,一旦出问题将导致大量的用户被踢出;

  (4)数据没有做持久化;

  (5)数据根据存储的key,hash 到 4台服务器的 16 个 memcached 实例上,需要迁移的服务器有两台,即8个 memcached 实例;

memcached 迁移的技术方案:

  (1)针对小规模的key-value 存储,可以采用memdump 工具,对memcached 的全量key 进行导出。具体可以参考: http://www.cnblogs.com/shrewdlin/archive/2013/03/27/2985167.html

  (2)针对大规模的key-value 存储,在时间充裕的情况下,可以采用双写方案,待数据热起来以后,再作迁移,不过该方案有一定局限性,这是因为迁移的时候,可能导致原来的 hash 策略发生变化,即使做了双写,切换时,仍旧有很多 key 不能命中。

  (3)针对大规模的key-value 存储,在时间不充裕的情况下,需要想办法在短时间内获取一段时间内的 key,本文采用的就是这种方案。具体的步骤为:

  • 首先通过日志,获取半个月前(该时间可视具体情况而定)所有活跃用户的 session-key
  • 通过获取到的session-key 拿到所有对应的 value
  • 将活跃用户的 key-value 写入到新旧系统的各个实例中,这样即便是hash策略变化,也不会导致用户被踢出
posted @ 2017-12-20 14:32  talk_is_cheap  阅读(1410)  评论(0编辑  收藏  举报