电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

Redisslots迁移丢key问题排查

  • 资源ID:54810749       资源大小:43.24KB        全文页数:10页
  • 资源格式: DOCX        下载积分:0金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要0金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

Redisslots迁移丢key问题排查

RedisslotsRedisslots 迁移丢迁移丢 keykey 问题排查问题排查1.1.问题问题redis slots 迁移的时候,在迁移之后 key 数量会变少.2.2.排查排查2.12.1 思考思考redis 3.x 也是比较成熟的产品了,为什么会丢 key?别人有没有遇到同样的问题?假设丢 key 了,如果 key 是因为 expire 丢失,那应该是正常,如果没有 expire 丢失,就是问题了,首先复现问题。2.22.2 复现问题复现问题0.0.准备集群准备集群造了两个节点的集群:10.0.0.10:20003 和 10.0.0.10:20004,最大可使用内存200M,并保证在测试过程中不会导致内存满等其他问题? 1 2 310.0.0.10:20004> cluster nodes 2aed426536067077179a3d23875b93b223802dea 10.0.0.10:20003 master - 0 1482132098352 6 connected 03a53320815d8b5f774810f2d41329007d60ebf4 10.0.0.10:20004 myself,master - 0 0 7 connected 0-16383key 格式:test_i, 保证所有的 key 使用同一个 slot。test_i 的 slot 为 6918,并且测试前 slot 里面没有 key.? 1 2 3 4 5 6 7 8 9 10 1110.0.0.10:20004> cluster keyslot test_i (integer) 6918 10.0.0.10:20004> cluster countkeysinslot 6918 (integer) 0 10.0.0.10:20003> cluster countkeysinslot 6918 (integer) 0# 迁移函数,配合 redis-trib fix 迁移 def migrate_from_4_to_3(slot):cmd=“cluster setslot %s migrating 2aed426536067077179a3d23875b93b223802dea“ % (slot,)12 13 14 15 16 17 18 19cli4.execute_command(cmd)cmd=“cluster setslot %s importing 03a53320815d8b5f774810f2d41329007d60ebf4“ % (slot,)cli3.execute_command(cmd)def migrate_from_3_to_4(slot):cmd=“cluster setslot %s migrating 03a53320815d8b5f774810f2d41329007d60ebf4“ % (slot,)cli3.execute_command(cmd)cmd=“cluster setslot %s importing 2aed426536067077179a3d23875b93b223802dea“ % (slot,)cli4.execute_command(cmd)1.1.非过期非过期 keykey 测试测试 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2210.0.0.10:20003> cluster countkeysinslot 6918 (integer) 0 10.0.0.10:20004> cluster countkeysinslot 6918 (integer) 0# 向 10.0.0.10:20004 写入 20000 个不带过期时间的 keyfor i in range(20000):cmd=“set test_%s %s“ % (i, i)print cmd, cli4.execute_command(cmd)10.0.0.10:20004> cluster countkeysinslot 6918 (integer) 20000# 迁移 slot 6918 migrate_from_4_to_3(6918) redis-trib fix 10.0.0.10:20004#check 10.0.0.10:20003> cluster countkeysinslot 6918 (integer) 20000 10.0.0.10:20004> cluster countkeysinslot 6918 (integer) 0结论: 20000 个 key 全部迁移,没有问题。638 棋牌 http:/www.rodlg.com2.2.部分带过期时间的部分带过期时间的 keykey 测试测试使用和上面相同的方法,测试20000 个不过期的 key,20000 个带过期时间的 key的情况。使用了test_i 的 slot=6918 和bug_i 的 slot=7910 这两个 slot 进行了测试。如果迁移的过程中没有 key 正在过期,发现迁移后 key 的数量也会减少如果有迁移的过程中有 key 正在过期,那么迁移完成后 key 的数量少于 20000,并且多次实验测试少的 key 的数量不同,有的时候少几百个,有的时候少 2000 多个。说明,如果在迁移 slot 的过程中,如果有 key 过期,那么会对那么没有过期时间的key 造成影响,导致丢失一些不过期的 key.3.3.是不是是不是 redis-tribredis-trib 的问题?的问题?redis-trib 在判断是不是迁移完成时,只判断了 getkeysinslot,当 getkeysinslot返回空时就直接认为迁移完成了,直接退出。所以在代码里面添加了 countkeysinslot,当两者同时为 0 时,在尝试判断 10 次在退出试一下。? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24# 修改后的 redis-trib.rb . # Migrate all the keys from source to target using the MIGRATE command zerocounttime = 0 while truekeys = source.r.cluster(“getkeysinslot“,slot,o:pipeline)cntkeysinslot = source.r.cluster(“countkeysinslot“,slot)if keys.length = 0 if (ttl) setExpire(c->db,c->argv1,mstime()+ttl);signalModifiedKey(c->db,c->argv1);addReply(c,shared.ok);server.dirty+;if (sdslen(c->argv1->ptr) argv1->ptr, ttl); / add log for migrateCommand . /* Create RESTORE payload and generate the protocol to call the command. */ for (j = 0; j db,kvj);if (expireat != -1) ttl = expireat-mstime();if (ttl ptr,sdslen(kvj->ptr);serverAssertWithInfo(c,NULL,rioWriteBulkLongLong(serverLog(LL_WARNING,“prepare cmd, key:%s, ttl:%lld“, kvj->ptr, ttl);/debug log/* Emit the payload argument, that is the serialized object using* the DUMP format. */createDumpPayload(serverAssertWithInfo(c,NULL,rioWriteBulkString(sdsfree(payload.io.buffer.ptr);/* Add the REPLACE option to the RESTORE command if it was specified* as a MIGRATE option. */天地棋牌 http:/www.dadiqipaigw.cnif (replace)serverAssertWithInfo(c,NULL,rioWriteBulkString( . . /* Create RESTORE payload and generate the protocol to call the command. */ for (j = 0; j ptr); / debug logexpireat = getExpire(c->db,kvj);if (expireat != -1) ttl = expireat-mstime();if (ttl >> len(notfound) 7 >>>4 5>>> notfound 4, 3994, 3995, 3996, 3997, 3998, 3999在 redis-trib 和 source 节点都能看到缺少的 key 的日志,很明显的看到 key 被迁移了。在 target 的节点看到日志是这样的:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16125838:M 21 Dec 11:40:36.390 # store key ok, key:haha_399, ttl:0 125838:M 21 Dec 11:40:36.390 # store key ok, key:haha_3990, ttl:0 125838:M 21 Dec 11:40:36.426 # store key ok, key:haha_3991, ttl:0 125838:M 21 Dec 11:40:36.445 # store key ok, key:haha_3992, ttl:0 125838:M 21 Dec 11:40:36.467 # store key ok, key:haha_3993, ttl:0 125838:M 21 Dec 11:40:36.486 # store key ok, key:haha_3994, ttl:1 125838:M 21 Dec 11:40:36.505 # store key ok, key:haha_3995, ttl:14 125838:M 21 Dec 11:40:36.524 # store key ok, key:haha_3996, ttl:22 125838:M 21 Dec 11:40:36.544 # store key ok, key:haha_3997, ttl:25 125838:M 21 Dec 11:40:36.561 # store key ok, key:haha_3998, ttl:30 125838:M 21 Dec 11:40:36.580 # store key ok, key:haha_3999, ttl:32 125838:M 21 Dec 11:40:36.599 # store key ok, key:haha_4, ttl:35 125838:M 21 Dec 11:40:36.632 # store key ok, key:haha_

注意事项

本文(Redisslots迁移丢key问题排查)为本站会员(m****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

分享当前资源【Redisslots迁移丢key问题排查】到朋友圈,您即可以免费下载此资源!
微信扫一扫分享到朋友圈
二维码
操作提示:任选上面一个二维码,打开微信,点击“发现”使用“扫一扫”,即可将选择的网页分享到朋友圈
您可能感兴趣的------------------------------------------------------------------------------------------------------



关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.