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.
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”.
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
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