一次redis数据迁移restart 未config set requirepass流程隐藏的小漏洞

场景:一次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(一图解万语) ,不解释了,都在图里面。。。

一次redis数据迁移restart 未config set requirepass流程隐藏的小漏洞_第1张图片

                                                                                                 图一

综其原因:有其二。

  1. 重启之后:未再次配置config set requirepass ,虽然redis-cli 可以set get但是不能通过poolconfig 取,(为什么不能姑且待查更新~) poolconfig init启动不需要-a 但是get a resoure要求restart 必须再次 -auth.
  2.  解决问题必须从问题出处查看(read code By origin )
  3. mysweetheart not happy,,,,,,,,,,,,,,,,,,,

整理下迁移策略:

  1. 停止redis6379 (使用实例)
  2. copy origin 到 redis6379
  3. start redis6379 (重启需config set requirepass 。。。shit happens):详图二
  4. 结果见图三
  5. 仅限(主从,单redis)实例(迁移)不适合集群市cluster迁移更为复杂。。。。

一次redis数据迁移restart 未config set requirepass流程隐藏的小漏洞_第2张图片

                                                                                        图二 

一次redis数据迁移restart 未config set requirepass流程隐藏的小漏洞_第3张图片

                                                                   图三

总而言之,言而总之:shit happens 

你可能感兴趣的:(Linux-docker,devOps)