Copia de seguridad y restauración de Elasticsearch

La migración de datos de un servidor Elasticsearch mediante snapshots se realiza con relativa rapidez. En primer lugar, se realiza una copia de seguridad de los datos del servidor y después se guarda en un repositorio para posterior restauración del mismo.

Crear copia de Seguridad

La máquina donde se realizará el backup se denomina “máquina origen” y la máquina donde se realizará la restauración se denomina “máquina destino”.

  • En la máquina origen

Modifique el fichero de configuración elasticsearch.yml:

vi /etc/elasticsearch/elasticsearch.yml

Añada la siguiente línea:

path.repo: /usr/local/var/backups/

Cree el directorio añadido anteriormente al fichero de configuración:

mkdir -p /usr/local/var/backups/

Otorgue permisos de lectura y escritura al directorio y usuario:

chmod 700 /usr/local/var/backups
chown elasticsearch:elasticsearch /usr/local/var/backups

Reinicie servicio:

/etc/init.d/elasticsearch restart

Cree backup:

curl -XPUT http://localhost:9200/_snapshot/my_backup -d '{"type": "fs", "settings": {"compress": "true", "location": "/usr/local/var/backups/"}}}'

Comprima backup:

 cd /usr/local/var/
 tar -zcvf elastic_backup.tar.gz backups/

Desde la máquina destino copie el backup comprimido de la máquina origen.

scp -P 41122 root@<dir_ip_origin>:/root/elastic_backup.tar.gz /home/user/backup
  • Para utilizar el comando scp se debe tener instalado un servidor SSH en la máquina origen y al menos un cliente SSH en la máquina destino.
  • Es importante que la versión de Elasticsearch en la máquina destino sea compatible con la exportación de datos; es decir, en este caso la máquina origen debe tener la misma versión o superior. Si no es así, primero debe actualizar Elasticsearch en la máquina destino.

Restaurar copia de Seguridad

  • En la máquina destino.

Modificar el fichero de configuración elasticsearch.yml de la misma manera hecha al crear el backup en la máquina origen:

vi /etc/elasticsearch/elasticsearch.yml

Añadir la siguiente línea:

path.repo: /usr/local/var/backups/

Crear el directorio añadido anteriormente al fichero de configuración:

mkdir -p /usr/local/var/backups/

Otorgar permisos de lectura y escritura al directorio:

 chmod 700 /usr/local/var/backups
 chown elasticsearch:elasticsearch /usr/local/var/backups

Reiniciar el servicio:

/etc/init.d/elasticsearch restart

Descomprimir el backup importado de la máquina origen:

tar -xzvf /home/user/backup/elastic_backup.tar.gz -C /usr/local/var/backups

Crear los repositorios donde se localizan las snapshots:

curl -X PUT "localhost:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d'

{
  "type": "fs",
  "settings": {
    "location": "/usr/local/var/backups"
  }
}
'

Cerrar los índices:

curl -XPOST http://localhost:9200/<nombreIndices>-*/_close

El asterisco muestra todos los índices que empiecen por ese nombre.

Importar el backup: Primero copiar el backup al repositorio:

cp <name_snapshot.dat> my_backup_location/

Renombrar el fichero sin mayúsculas:

mv my_backup_location/<name_snapshot.dat> my_backup_location/snap1

Finalmente se importa:

curl -X POST "localhost:9200/_snapshot/my_backup/snap1/_restore?wait_for_completion=true"

Para terminar, reabrir los índices:

curl -XPOST http://localhost:9200/<nombreIndices>-*/_open

Volver al Índice de Documentación Pandora FMS