La migración de bases de datos es algo que todos los administradores de sistemas tendrán que hacer en algún momento. Afortunadamente, MongoDB proporciona comandos integrados para crear y restaurar copias de seguridad, lo que facilita la migración a un nuevo servidor.
Usando mongodump para crear una copia de seguridad
mongodump es un comando simple que creará un archivo de respaldo de una base de datos y sus colecciones desde el cual puede restaurar. Esto requerirá un período de inactividad mientras se realiza la copia de seguridad y se inicia el nuevo servidor.
Si no quiere tiempo de inactividad, puedes realizar una migración de clúster agregar un nuevo nodo a su clúster, configurarlo como la fuente de escritura principal y luego intercambiar en caliente el nuevo nodo. Esto se hace mucho más fácil si está utilizando MongoDB Atlas, su servicio de base de datos administrado.
mongodump
es mucho más sencillo. Deberá crear un directorio para las copias de seguridad:
sudo mkdir /var/backups/mongobackups
Y luego corre mongodump
, pasándolo en un parámetro de base de datos y una ubicación de salida:
sudo mongodump --db databasename --out /var/backups/mongobackups/backup
También puede volcar manualmente colecciones específicas con el archivo --collection
bandera.
Mongodump se puede ejecutar en una base de datos en vivo y solo toma unos segundos crear la copia de seguridad. Sin embargo, cualquier escritura en la base de datos se perderá realmente, ya que está moviendo servidores. Por esta razón, le recomendamos que desactive el tráfico antes de crear el volcado.
Reinstalar desde el respaldo
Deberá transferir el archivo de respaldo del servidor antiguo al nuevo. Esto se puede hacer descargándolo a través de FTP, luego subiéndolo al nuevo servidor, pero para copias de seguridad grandes es mejor establecer una conexión directa y transferirlo usando scp
.
Puede usar el siguiente comando, reemplazando nombres de usuario y nombres de host con valores para los servidores.
scp user@SRC_HOST:/var/backups/mongobackups/FILENAME user@DEST_HOST:~/FILENAME
Luego, una vez que tenga la copia de seguridad en el nuevo servidor, puede cargarla desde la copia de seguridad. Por supuesto, necesitará instalar MongoDB en el nuevo servidor.
Para hacer esto, puede usar el archivo mongorestore
mando:
mongorestore <options> <connection-string> <file to restore>
Debería ver inmediatamente la nueva tabla disponible en la nueva base de datos.
Después de verificar que todo se haya transferido correctamente, deberá cambiar el tráfico al nuevo servidor, probablemente actualizando sus registros DNS. Si está utilizando AWS o un proveedor similar con direcciones IP elásticas, puede intercambiar la dirección para apuntar al nuevo servidor, que no requerirá una actualización de DNS.
Transferencia de todo el disco (opcional)
Opcionalmente, si se está moviendo a un servidor más potente, puede transferir a toda la unidad de arranque, que debería copiar la base de datos junto con el resto de la configuración del servidor.
En este caso, le recomendamos que utilice el archivo rsync
comando para cargar datos directamente al servidor de destino. rsync
se conectará mediante SSH y sincronizará las dos carpetas; en este caso, queremos enviar la carpeta local al servidor remoto:
sudo rsync -azAP / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} username@remote_host:/
Este es el comando completo. Debería ver una barra de progreso a medida que completa la transferencia (usando compresión con el -z
flag) y al final verá los archivos en la carpeta de destino en el nuevo servidor. Es posible que deba ejecutarlo varias veces para copiar cada carpeta; puedes usar esto en línea rsync
generador de comando para generar el comando para cada ejecución.
Descubre más contenido