我将我的redis快照(dump.rdb文件)转移scp到远程服务器.我需要在这个遥控器上运行一个redis服务器并从dump.rdb文件中恢复数据.我怎样才能做到这一点?
Did*_*zia 63
没有什么特别的事情要做.只需在新机器上安装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/
Run Code Online (Sandbox Code Playgroud)
最后,redis服务器可以正常方式启动.
Rob*_*jic 47
对于appendonly标志设置为的数据库no,您可以执行以下操作:
dirredis配置中的选项).还要确保备份文件名与dbfilenameconfig选项匹配.另一方面,如果需要将rdb文件还原到仅附加数据库,则应该执行以下操作:
dirredis配置中的选项).还要确保备份文件名与dbfilenameconfig选项匹配.appendonly标志更改为no(否则redis会在启动时忽略您的rdb文件).redis-cli BGREWRITEAOF以创建新的appendonly文件.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 append only mode is enabled Redis will load the data from the
# >> log file at startup ignoring the dump.rdb file.
Run Code Online (Sandbox Code Playgroud)
tza*_*bal 14
假设您运行Redis 2.6或更高版本,您的Redis快照文件名是dump.rdb,并且它存在于目录中/home/user/dbs,以下命令将执行此操作:
redis-server --dbfilename dump.rdb --dir /home/user/dbs
Run Code Online (Sandbox Code Playgroud)
官方文档中的相关部分:通过命令行传递参数
Rux*_* T. 10
或者你可以:
service redis6379 stopcp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb.给它正确的权限(用户:组应该是redis:redis和模式644)service redis6379 start在将文件复制到正确位置之前停止redis服务器非常重要,因为Redis会在终止之前保存快照,因此它将替换您的文件.
此外,您可能希望首先备份现有的dump.rdb文件.
该解决方案适用于 redis-cluster,但也应该适用于 redis。
安装此依赖项https://github.com/sripathikrishnan/redis-rdb-tools
pip install rdbtools python-lzf
Run Code Online (Sandbox Code Playgroud)
之后执行这个
rdb -c protocol /path/to/dump.rdb | redis-cli -h host -p port --pipe
Run Code Online (Sandbox Code Playgroud)
如果这是一个集群,则该端口应该是主端口。
我想在这里添加一个没有提到的小细节,我不会使用配置文件,而是在命令行中指定所有内容。
当启动时指定了 mydump.rdb 和appendonly.aof 文件时redis-server,该文件将appendonly.aof获胜,以便加载appendonly.aof 中的数据。例如:
redis-server --dbfilename mydump001.rdb --dir /data --appendonly yes
Run Code Online (Sandbox Code Playgroud)
上面的启动调用将使用该位置来查找或文件/dir的存在。在这种情况下,将从 加载内容。如果不存在,它将创建一个空的并且redis-server将为空。mydump001.rdbappendonly.aofredis-serverappendonly.aofappendonly.aof/data/appendonly.aof
如果你想加载特定的转储文件,你可以这样做:
redis-server --dbfilename mydump001.rdb --dir /data
Run Code Online (Sandbox Code Playgroud)
我添加了这个答案,因为不清楚哪个是哪个。在存在2个备份文件的情况下,这通常不会被提及。
在你的第二台服务器上启动redis,如下所示:
$ > redis-server /path/to/my/redis/configuration/file/redis.conf
Run Code Online (Sandbox Code Playgroud)
当redis启动时,它会找到你的rdb文件,因为它会在你启动redis服务器时提供的配置文件(redis.conf)中查找名称 和文件路径,如上所述.
要提供文件名和路径,只需在redis.conf文件模板中编辑两行(在redis源的根目录中提供.将修改后的版本保存为redis.conf,在启动服务器时提供的目录位置.
您可以在源顶级目录的redis.conf模板中找到所需的设置,第127和137行(redis版本2.6.9).
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory
dir ./
Run Code Online (Sandbox Code Playgroud)
如您所见,为这两个设置提供了默认值
所以只需更改这两行中的第一行(127)以标识您的rdb文件,然后在第二行(137)中将默认的"./"替换为快照rdb文件的实际文件路径; 使用您的更改保存redis.conf,然后启动redis传递这个新的conf文件.
| 归档时间: |
|
| 查看次数: |
60154 次 |
| 最近记录: |