redis数据库还原未显示任何记录
希望这是一个简单的问题: 我试图将redis数据库从一台机器(M1)复制到另一台机器(M2)。运行相同版本redis的两台计算机。我是这样做的:-redis数据库还原未显示任何记录,redis,Redis,希望这是一个简单的问题: 我试图将redis数据库从一台机器(M1)复制到另一台机器(M2)。运行相同版本redis的两台计算机。我是这样做的:- 在M1上,发出“保存”。据我所知,这将为我的数据集创建一个时间点磁盘文件。根据我的配置文件(redis.conf),它会写入一个名为“dump.rdb”的文件 在M2上,我关闭redis并删除该机器上的dump.rdb文件。然后,我将dump.rdb从M1-->M2复制到M2的redis.conf中指定的预期位置,并在M2上重新启动redis实例 在
我做错了什么?我建议您使用redis备份和恢复 用法如下:
$ redis-dump
$ redis-dump -u 127.0.0.1:6371 > db_full.json
$ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json
$ < db_full.json redis-load
$ < db_db15.json redis-load -d 15
在更高的层次上,你没有做错任何事情。也许你是无意中犯了一些错误。。。确保文件在复制后具有相同的MD5和。确保第二个Redis配置为使用dump.rdb作为持久性方法,而不是AOF。读取Redis日志以检查它是否读取数据库文件。您是否也使用相同的数据库号?可能您的数据存储在DB5上,但您正在查询DB0?我遇到了完全相同的问题。我最终意识到我从中复制dump.rdb的redis实例运行的是2.4.x,而目标redis实例运行的是2.2.x。当2.2.x实例启动时,没有出现无法读取rdb文件的警告。但是
DBSIZE
,INFO
,键*
等都表示数据库为空
一旦我将第二个实例升级到2.4.x,我就能够按预期打开数据库。
我知道您已经声明您的计算机运行的是相同的版本,但我想在这里添加这一点,以确保其他人知道,如果版本不匹配,他们将看到相同的症状。自redis 2.6以来,还有一个MIGRATE语句,您可以使用COPY选项运行该语句: 我想我应该提到这个特性,因为有时您可能只想复制部分数据
我不会将其用于完整的数据库转储和加载,前面提到的方法更适合这种情况。谢谢-尽管看这个()它似乎是带有适当警告的alpha代码-它有多稳定?原始海报选择了正确的方法,只复制dump.rdb文件,在这种情况下,redis dump虽然对其他东西很酷,但却完全没有用处。我如何检查redis是否配置为使用dump.rdb文件作为持久性方法而不是AOF?
$ gem install redis-dump