今天下暴雨,不想出去跑业务和拜访客户了,准备好好休息一下,可是,不到八点电话响了,说一个redis迁移不成功,赶紧起来干活,悲催啊!


问清情况,大致是这样的:从一个开发服务器的redis客户端执行了save指令,得到一个dump .rdb文件,然后把这个文件复制到新redis系统的数据目录(数据目录由redis配置文件指定);但重启redis-server以后,数据为空。

redis的导入导出需要特别注意的地方_第1张图片


看样子对方搞不定,只好连***登录系统,查看配置文件,进程等。在日志中发现一些warning,担心是这些问题引起的,顺手做了修改,其内容为一下两部分:

1、修改系统参数文件/etc/sysctl.conf,增加如下的行:

     net.core.somaxconn = 10000

      vm.overcommit_memory = 1

2、在/etc/rc.local增加一行

       echo never > /sys/kernel/mm/transparent_hugepage/enabled

修改完毕后,执行sysctl -p使内核参数生效;命令行执行echo never > /sys/kernel/mm/transparent_hugepage/enabled  ,重启redis仍然无效。折腾了好一阵,也是一样,看来问题不在这里啊!


突然想到一个哥们,也是用redis啊,立即求助,问他是不是导出的redis与目标redis是不是要一致(安装路径一致、名称一致、配置文件一致、日志路径等一致),答复是这样的。于是告知对方,建议把两边处理成一致(开发机我无法访问,在他办公室呢,所以不知道原样是啥),他还不太愿意执行呢,我说现在这样,只有试试呢!


改成一致之后,传来消息,好了!登上去查看,果然如此!

redis的导入导出需要特别注意的地方_第2张图片