场景:一次qa(docker)环境机器重启需要redis也被迫重启(redis 设置过 config set requirepass )。流程:
1:save/bgsave --> "save阻塞备份能提示ok bu ! ?; bgsave:不会提示,须看log结果"
2:stop
3:start(ps 重点:未再次配置config set requirepass)
再次重启服务,提示连接“ Could not get a resource from the pool” ,But shit happens --》redis-cli 可以set get
奈何反应驰化,,,,,,,,,,,,,,,,,,,,,,,
也没想到看下debug下polConfig 为什么not get a resource;任性又docker-create-redis redis6379实例;执行:《config set requirepass alexpwd》 服务可以用。接下里心存有备份的 “ .rdb ” 便copy redis6379 的data下。restart redis6379 (问题接着来了,重点:未再次配置config set requirepass)服务再次出现异常连接信息;
一时百度无果,心灰意懒。逃避之(以后redis不重启了)。两天后的今天周末,心中有事,觉夜无眠。
究其原因才有了:如下图1(一图解万语) ,不解释了,都在图里面。。。
图一
综其原因:有其二。
- 重启之后:未再次配置config set requirepass ,虽然redis-cli 可以set get但是不能通过poolconfig 取,(为什么不能姑且待查更新~) poolconfig init启动不需要-a 但是get a resoure要求restart 必须再次 -auth.
- 解决问题必须从问题出处查看(read code By origin )
- mysweetheart not happy,,,,,,,,,,,,,,,,,,,
整理下迁移策略:
- 停止redis6379 (使用实例)
- copy origin 到 redis6379
- start redis6379 (
重启需config setrequirepass。。。shit happens):详图二 - 结果见图三
- 仅限(主从,单redis)实例(迁移)不适合集群市cluster迁移更为复杂。。。。
图二
图三