kernelai
kernelai
写数据这么久大概率是rocksdb阻写了。你搜索下rocksdb的日志里是否有`Stall ` 或者`Stop`关键字。看一下相关的日志。
> https://github.com/Qihoo360/blackwidow/pull/17/files I tried to implement it, please help me check it out, bro.😀 ok,I will review it
pika有自动关闭空闲链接的机制,当一个连接超过timeout时长后会被关闭,防止过多的无效连接资源,这个与redis的机制是一致的。于是这个问题需要按照你们具体的场景设置。 1. 一方面通过增大timeout时长。在物理机资源充足的情况是是没问题的。 2. 如果资源紧张,应用程序可以在客户端设计连接池,并且通过空闲时发送`ping`不断保活。
能具体提供测试场景吗?
目前没有这样的工具。我觉着可以这样实现一个这样的功能。 1. 创建一个sharding模式的pika-A,其中slot的数目与codis集群的数目相同。 2. pika-A 中的slot与codis中的所有slot建立主从关系。此时pika-A 获取集群中的所有数据,但是数据是被分片的。 3. pika-A 扫描sst文件的全量数据和binlog中的增量数据发送到pika-B 经典模式的pika中。 4. 监控codis集群中的lag信息,当lag较少时停止codis集群的写。 5. 等待pika-A中的增量同步完成。 基本逻辑参考了pika-port的功能。这里繁琐的操作的原因是rocksdb 做不到sst文件的合并,无法直接将slot的数据直接合并。
> > 目前没有这样的工具。我觉着可以这样实现一个这样的功能。 > > > > 1. 创建一个sharding模式的pika-A,其中slot的数目与codis集群的数目相同。 > > 2. pika-A 中的slot与codis中的所有slot建立主从关系。此时pika-A 获取集群中的所有数据,但是数据是被分片的。 > > 3. pika-A 扫描sst文件的全量数据和binlog中的增量数据发送到pika-B 经典模式的pika中。 > > 4. 监控codis集群中的lag信息,当lag较少时停止codis集群的写。 > > 5. 等待pika-A中的增量同步完成。 >...
1. 我觉着社区确实有sharding集群到主从集群迁移的需求。社区可以考虑实现。 2. 基于pika现有代码及主从逻辑修改是成本最低的方式。 3. 其他语言如go,可以参考[go规范](https://github.com/xxjwxc/uber_go_guide_cn)
时间上不太能保证。预计今年完成吧。
> > 我司正在深入应用pika,对这个迁移功能关注度也很高。如果有帮得上忙的地方请联系我,我们愿意贡献自己的一份力。 > > 我这边基于阿里的redis-shake改造了一个go版本的迁移工具,目前正在公司内部测试使用。 > > ## 介绍 > codis2pika工具是基于阿里开源的redisshake工具改造的数据迁移工具。 主要目的是实现,从sharding模式的codis向经典模式的pika进行数据同步的功能。 > > ## 目前实现功能: > codis2pika理论上支持从redis/codis 向pika迁移。 codis2pika支持增量和全量同步。 codis2pika支持实时同步(延迟约2-3s)迁移。 codis2pika支持开关添加自定义key前缀和slot重分配功能植入。 > > @kernelai 你好,请问下社区对于这类通用工具有哪些要求?如果可以满足的话,我们也想把这个工具贡献出来。 非常感谢你们的贡献。核心功能能支持codis集群向主从集群的迁移。其他需求咱们可以迭代开发。我建议你们可以把工具放在公司的github下面,pika社区添加引用连接的方式。
方便在qq群里@下我吗?我跟您沟通下。