我在 qa 环境中有一个包含 10 个键的 redis 实例。该实例配置为dump.rdb
在目录中使用/tmp
。我运行了“save”命令并看到了dump.rdb
创建的新文件。然后我在其他主机上创建了新实例。将其复制dump.rdb
到“dir”目录中的新实例,因为它是在redis.conf
文件中配置的。我停止了新实例然后启动它。如果我在新实例上运行“keys *”命令,我会得到 null。可能是dump.rdb
在服务器启动时没有读取该文件。我关注了帖子
https://stackoverflow.com/questions/14497234/how-to-recover-redis-data-from-snapshotrdb-file-copied-from-another-machine
但没有成功。
旧实例上的步骤:
set aaa 111
set bbb 222
etc etc
SAVE
scp dump.rdb new_host:/dir
在新主机上:
stop redis serivce
start redis service .
redis-cli -h ... -p ...
keys *
(空列表或集合)
和想法?
答案1
发现问题所在。
启动新服务器时需要使用特定的转储文件作为参数,尽管配置文件中设置了“dir”参数,但上面写着启动服务时 redis 会查找配置的 rdb 文件,但这对我来说不起作用。必须运行 redis-server /path_to_config_file --dbfilename dump.rdb --dir /path_to_directory_where_the_dump_file_is_located
上述命令完成了这项工作。