Подтвердить что ты не робот

Как восстановить redis-данные из моментального снимка (файл rdb), скопированного с другого компьютера?

Я передал мой redis snapshot (dump.rdb file) с помощью scp на удаленный сервер. Мне нужно запустить redis-сервер на этом удаленном компьютере и восстановить данные из файла dump.rdb. Как я могу это сделать?

4b9b3361

Ответ 1

Нет ничего конкретного. Просто установите сервер 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 можно запустить обычным способом.

Ответ 2

Для баз данных, где для флага appendonly установлено значение no, вы можете сделать следующее:

  • Остановить redis (потому что redis перезаписывает текущий файл rdb, когда он выходит).
  • Скопируйте резервный файл rdb в рабочий каталог redis (это параметр dir в вашем redis config). Также убедитесь, что ваше резервное имя файла соответствует параметру dbfilename.
  • Начать redis.

Если, с другой стороны, вам нужно восстановить файл rdb для добавления только базы данных, вы должны сделать что-то в строках:

  • Остановить redis (потому что redis перезаписывает текущий файл rdb, когда он выходит).
  • Скопируйте резервный файл rdb в рабочий каталог redis (это опция dir в вашей конфигурации redis). Также убедитесь, что ваше резервное имя файла соответствует параметру dbfilename.
  • Измените флаг redis config appendonly на no (иначе redis будет игнорировать ваш файл rdb при его запуске).
  • Начать redis.
  • Запустите redis-cli BGREWRITEAOF, чтобы создать новый файл appendonly.
  • Восстановить redis config 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. 

Ответ 3

запустите redis на вашем втором сервере, например:

$ > redis-server /path/to/my/redis/configuration/file/redis.conf

когда redis запускается, он найдет ваш файл rdb, потому что он будет искать имя и путь к файлу в файле конфигурации (redis.conf), который вы предоставляете, когда запустите сервер redis, как указано выше.

чтобы указать имя и путь файла, просто отредактируйте две строки в шаблоне файла redis.conf(в корневой директории источника redis. Сохраните исправленную версию как redis.conf в каталоге, которое вы указали при запуске сервера.

Вы найдете необходимые параметры в шаблоне redis.conf в каталоге верхнего уровня источника в строках 127 и 137 (redis version 2.6.9).

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory
dir ./

как вы можете видеть, значения по умолчанию предоставляются для обеих настроек

просто измените первую из этих двух строк (127), чтобы идентифицировать ваш файл rdb а во втором (137) заменить значение по умолчанию "./" для фактического пути к файлу для вашего файла снимка rdb; сохраните redis.conf с вашими изменениями и запустите redis в этом новом файле conf.

Ответ 4

Или вы можете:

  • Остановите ваш сервер/экземпляр redis, например., service redis6379 stop
  • Скопируйте файл dump.rdb в нужное место, например, cp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb. Дайте ему правильные разрешения (пользователь: группа должна быть redis: redis и mode 644).
  • Запустите свой сервер/экземпляр redis, например., service redis6379 start

Важно, чтобы вы остановили сервер redis перед копированием файла в нужное место, поскольку Redis сохраняет снимок перед завершением, поэтому он заменит ваш файл.

Кроме того, вы можете сначала создать резервную копию существующего файла dump.rdb.

Ответ 5

Предполагая, что вы запустили Redis 2.6 или выше, ваше имя файла снимка Redis dump.rdb, и оно существует в каталоге /home/user/dbs, следующая команда выполнит трюк:

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

Соответствующий раздел из официальной документации: Передача аргументов через командную строку

Ответ 6

попробуйте установить appendonly no. В моем случае *.aof файл был пуст (0 байт), должен установить appendonly = no, а затем заставить его загрузить dump.rdb