如何从另一台机器复制的快照(RDB文件)中恢复Redis数据?

jdzmm42g  于 2022-09-21  发布在  Redis
关注(0)|答案(4)|浏览(260)

我使用scp将我的redis快照(dump.rdb文件)传输到远程服务器。我需要在这个远程服务器上运行一个redis服务器,并从dump.rdb文件恢复数据。我怎么能做到这一点?

oewdyzsn

oewdyzsn1#

对于appendonly标志设置为no的数据库,您可以执行以下操作:

1.停止Redis(因为Redis退出时会覆盖当前的RDB文件)。
1.将备份RDB文件复制到Redis工作目录(这是您的Redis配置中的dir选项)。此外,请确保您的备份文件名与dbfilename配置选项匹配。
1.启动Redis。

另一方面,如果您需要将RDB文件恢复到appendonly数据库,则应该执行以下操作:

1.停止Redis(因为Redis退出时会覆盖当前的RDB文件)。
1.将备份RDB文件复制到Redis工作目录(这是您的Redis配置中的dir选项)。此外,请确保您的备份文件名与dbfilename配置选项匹配。
1.将Redis的配置appendonly标志改为no(否则Redis在启动时会忽略您的RDB文件)。
1.启动Redis。
1.运行redis-cli BGREWRITEAOF创建新的appendonly文件。
1.将Redis配置appendonly标志恢复为yes

具体地说,这是Redis配置文件注解中的相关文档:


# Note that you can have both the async dumps and the append only file if you

# like (you have to comment the "save" statements above to disable the dumps).

# >> Still if appendonly mode is enabled Redis will load the data from the

# >> log file at startup ignoring the dump.rdb file.
vcirk6k6

vcirk6k62#

没有什么特别的事情要做。只需在新机器上安装redis服务器,并编辑配置文件。您只需更改以下参数,使其指向您刚刚复制的转储文件的位置。


# The filename where to dump the DB

dbfilename mydump.rdb

# The working directory.

# 

# The DB will be written inside this directory, with the filename specified

# above using the 'dbfilename' configuration directive.

# 

# Also the Append Only File will be created inside this directory.

# 

# Note that you must specify a directory here, not a file name.

dir /data/mydirectory/

最后,可以正常启动Redis服务器。

2wnc66cl

2wnc66cl3#

假设您运行的是Redis 2.6或更高版本,您的Redis快照文件名为dump.rdb,并且它位于目录/home/user/dbs中,则以下命令可以完成此任务:

redis-server --dbfilename dump.rdb --dir /home/user/dbs

官方文档中的相关部分:通过命令行传递参数

bqucvtff

bqucvtff4#

或者,您可以:

1.停止您的Redis服务器/示例,例如service redis6379 stop
1.将ump.rdb文件复制到正确的位置,例如cp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb。为其授予正确的权限(USER:GROUP应为redis:redis,模式为644)
1.启动您的Redis服务器/示例,如service redis6379 start

重要的是,在将文件复制到正确的位置之前停止Redis服务器,因为Redis在终止之前保存了一个快照,因此它将替换您的文件。

此外,您可能需要首先备份现有的dup.rdb文件。

相关问题