latest help cli basics redis snapshot

help - redis reload config



¿Cómo recuperar datos de redis de una instantánea(archivo rdb) copiada desde otra máquina? (7)

Transferí mi redis snapshot (archivo dump.rdb ) usando scp a un servidor remoto. Necesito ejecutar un servidor redis en este remoto y recuperar los datos del archivo dump.rdb . ¿Cómo puedo hacer eso?


Me gustaría agregar aquí un pequeño detalle que no se mencionó y no usaré el archivo de configuración, sino que especifico todo en la línea de comandos.

Cuando se especifican los archivos mydump.rdb y appendonly.aof al iniciar redis-server , será el archivo appendonly.aof el que gane de tal manera que los datos de appendonly.aof se carguen. Por ejemplo:

redis-server --dbfilename mydump001.rdb --dir /data --appendonly yes

La invocación de inicio anterior utilizará la ubicación /dir para buscar la presencia de mydump001.rdb o appendonly.aof files. En este caso, redis-server cargará los contenidos desde appendonly.aof . Si appendonly.aof no existe, creará un /data/appendonly.aof vacío y el servidor redis estará vacío.

Si desea cargar un archivo de volcado específico, puede hacer:

redis-server --dbfilename mydump001.rdb --dir /data

Agregué esta respuesta porque no es obvio cuál es cuál. En presencia de 2 archivos de copia de seguridad, y esto a menudo no se menciona.


No hay nada específico que hacer. Simplemente instale el servidor redis en la nueva máquina y edite el archivo de configuración. Solo necesita cambiar los siguientes parámetros para que apunten a la ubicación del archivo de volcado que acaba de copiar.

# 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/

Finalmente, el servidor redis se puede iniciar de la manera normal.


O tu puedes:

  1. Detenga su servidor / instancia redis, por ejemplo, el service redis6379 stop
  2. Copie el archivo dump.rdb en la ubicación correcta, por ejemplo, cp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb . Dale los permisos correctos (usuario: grupo debe ser redis: redis y modo 644)
  3. Inicie su servidor / instancia redis, por ejemplo, el service redis6379 start

Es importante que detenga el servidor de redis antes de copiar el archivo en la ubicación correcta, ya que Redis guarda una instantánea antes de finalizar, por lo que reemplazará su archivo.

Además, es posible que desee realizar una copia de seguridad del archivo dump.rdb existente primero.


Para las bases de datos en las que el indicador appendonly se establece en no , puede hacer lo siguiente:

  1. Detener redis (porque redis sobrescribe el archivo rdb actual cuando sale).
  2. Copie su archivo rdb de respaldo al directorio de trabajo de redis (esta es la opción dir en su configuración de redis). También asegúrese de que su nombre de archivo de copia de seguridad coincida con la opción de configuración dbfilename .
  3. Comience redis.

Si, por otro lado, necesita restaurar un archivo rdb a una base de datos de solo anexos, debe hacer algo como:

  1. Detener redis (porque redis sobrescribe el archivo rdb actual cuando sale).
  2. Copie su archivo rdb de respaldo en el directorio de trabajo de redis (esta es la opción dir en su configuración de redis). También asegúrese de que su nombre de archivo de copia de seguridad coincida con la opción de configuración dbfilename .
  3. Cambie la marca de redis appendonly a no (de lo contrario, redis ignorará su archivo rdb cuando se inicie).
  4. Comience redis.
  5. Ejecute redis-cli BGREWRITEAOF para crear un nuevo archivo adjunto.
  6. Restaura el indicador de configuración de appendonly a yes .

Específicamente, este es el bit relevante de documentación de los comentarios del archivo de configuración de 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.


Suponiendo que ejecute Redis 2.6 o superior, su nombre de archivo de instantánea Redis es dump.rdb , y existe en el directorio /home/user/dbs , el siguiente comando haría el truco:

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

Sección relevante de la documentación oficial: pasar argumentos a través de la línea de comando


comience a redisear en su segundo servidor, así:

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

cuando se inicie redis, encontrará su archivo rdb porque buscará el nombre y la ruta del archivo en el archivo de configuración ( redis.conf ) que proporcionará cuando inicie el servidor redis, como se indicó anteriormente.

para proporcionar el nombre y la ruta del archivo, solo edite dos líneas en la plantilla del archivo redis.conf (suministrada en el directorio raíz de la fuente redis. Guarde su versión revisada como redis.conf en la ubicación del directorio que proporcionó al iniciar el servidor.

Encontrará la configuración que necesita en la plantilla redis.conf en el directorio de nivel superior de origen, en las líneas 127 y 137 (redis versión 2.6.9).

# The filename where to dump the DB dbfilename dump.rdb # The working directory dir ./

Como puede ver, se proporcionan valores predeterminados para ambas configuraciones

así que simplemente cambie la primera de estas dos líneas (127) para identificar su archivo rdb y en la segunda (137) sustituya la "./" predeterminada para la ruta real del archivo para su archivo rdb de instantáneas; guarde el redis.conf con sus cambios y comience a pasar de nuevo este nuevo archivo conf.


intente establecer el apéndice sólo. En Mi caso, el archivo * .aof estaba vacío (0 byte), debe configurarse appendonly = no y luego hacer que cargue el dump.rdb