다른 머신에서 복사 한 스냅 샷 (rdb 파일)에서 redis 데이터를 복구하는 방법은 무엇입니까?
를 dump.rdb
사용하여 내 redis 스냅 샷 ( 파일)을 scp
원격 서버로 전송했습니다. 이 원격에서 redis 서버를 실행하고 dump.rdb
파일 에서 데이터를 복구해야 합니다. 어떻게 할 수 있습니까?
특별히해야 할 일은 없습니다. 새 컴퓨터에 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 서버는 일반적인 방법으로 시작할 수 있습니다.
appendonly
플래그가로 설정된 데이터베이스의 경우 no
다음을 수행 할 수 있습니다.
- redis를 중지합니다 (redis가 종료 될 때 현재 rdb 파일을 덮어 쓰기 때문에).
- 백업 rdb 파일을 redis 작업 디렉터리에 복사합니다 (이것은
dir
redis 구성 의 옵션입니다). 또한 백업 파일 이름이dbfilename
구성 옵션 과 일치하는지 확인하십시오 . - redis를 시작하십시오.
반면에 추가 전용 데이터베이스에 rdb 파일을 복원해야하는 경우 다음 행을 따라 작업을 수행해야합니다.
- redis를 중지합니다 (redis가 종료 될 때 현재 rdb 파일을 덮어 쓰기 때문에).
- 백업 rdb 파일을 redis 작업 디렉토리에 복사합니다 (이것은
dir
redis 구성 의 옵션입니다). 또한 백업 파일 이름이dbfilename
구성 옵션 과 일치하는지 확인하십시오 . - redis 구성
appendonly
플래그를로 변경하십시오no
(그렇지 않으면 redis가 시작될 때 rdb 파일을 무시합니다). - redis를 시작하십시오.
- 실행
redis-cli BGREWRITEAOF
하여 새 추가 전용 파일을 만듭니다. - 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 append only mode is enabled Redis will load the data from the
# >> log file at startup ignoring the dump.rdb file.
Redis 2.6 이상을 실행하고 Redis 스냅 샷 파일 이름이 dump.rdb
이고 디렉토리에 존재 한다고 가정하면 /home/user/dbs
다음 명령이 트릭을 수행합니다.
redis-server --dbfilename dump.rdb --dir /home/user/dbs
공식 문서의 관련 섹션 : 명령 줄을 통해 인수 전달
또는 다음을 수행 할 수 있습니다.
- redis 서버 / 인스턴스 중지, 예 :
service redis6379 stop
- dump.rdb 파일을 올바른 위치 (예 :
cp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb
. 올바른 권한을 부여하십시오 (사용자 : 그룹은 redis : redis 및 모드 644 여야 함). - redis 서버 / 인스턴스를 시작합니다.
service redis6379 start
Redis는 종료하기 전에 스냅 샷을 저장하여 파일을 교체하므로 파일을 올바른 위치에 복사하기 전에 redis 서버를 중지하는 것이 중요합니다.
Besides, you might want to back up the existing dump.rdb file first.
start redis on your second server, like so:
$ > redis-server /path/to/my/redis/configuration/file/redis.conf
when redis starts, it will find your rdb file because it will look for the name and file path in the configuration file (redis.conf) that you supply when start the redis server, as above.
to supply the file name and path, just edit two lines in the redis.conf file template (supplied in the root directory of the redis source. Save your revised version as redis.conf in the directory location that you supplied upon starting the server.
You will find the settings you need in the redis.conf template in the source top-level directory, at lines 127 and 137 (redis version 2.6.9).
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory
dir ./
as you can see, defaults are provided for both settings
so just change the first of these two lines (127) to identify your rdb file and in the second (137) substitute the default "./" for the actual file path for your snapshot rdb file; save the redis.conf with your changes, and start redis passing in this new conf file.
try set appendonly no. In My case, *.aof file was empty(0 byte), must set appendonly=no then make it load the dump.rdb
I would like to add here a tiny detail that did not get mentioned and I will not use config file but instead specify everything in the command line.
When both mydump.rdb and appendonly.aof files are specified when starting redis-server
, it will be the appendonly.aof
file that wins such that the data from appendonly.aof gets loaded. For example:
redis-server --dbfilename mydump001.rdb --dir /data --appendonly yes
The above start invocation will use the /dir
location to find the presence of mydump001.rdb
or appendonly.aof
files. In this case, redis-server
will load the contents from appendonly.aof
. If appendonly.aof
does not exists, it will create an empty /data/appendonly.aof
and the redis-server will be empty.
If you want to load a specific dump file, you can do:
redis-server --dbfilename mydump001.rdb --dir /data
I added this answer coz it is not obvious which is which. In the presence of 2 backup files, and this is often not mentioned.
'IT Share you' 카테고리의 다른 글
일부 bash 스크립트에서 사용되는 'function'키워드는 무엇입니까? (0) | 2020.12.14 |
---|---|
apache가 localhost 외부에서 들어오는 연결을 수락하지 않습니다. (0) | 2020.12.14 |
UIViewController로 다시 팝업 된 후 UIScrollView의 원점이 변경됩니다. (0) | 2020.12.14 |
IE11에서 createObjectURL로 만든 링크 열기 (0) | 2020.12.14 |
드롭 다운 목록에 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2020.12.14 |