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