Migrar desde MongoDB Atlas

TeselaDB

TeselaDB

Equipo de TeselaDB

40 minIntermedio

Copia una base de Atlas a tu clúster de TeselaDB con sus índices de búsqueda y cambia la cadena de conexión.

La migración desde Atlas usa las mismas herramientas que desde MongoDB: mongodump con la cadena mongodb+srv de Atlas y mongorestore contra TeselaDB. Lo que mongodump no copia son los índices de búsqueda, así que los apuntas antes y los creas otra vez al final.

Lo que vas a construir

La base tienda de Atlas copiada en tu clúster de TeselaDB con sus índices normales y sus índices de búsqueda, y al final tu aplicación apuntando al clúster nuevo.

Requisitos

  • Un usuario de Atlas con permiso de lectura sobre la base y la IP de tu máquina en la lista de acceso de Atlas.
  • Un clúster de TeselaDB, su CA (pki/ca.pem) y un usuario con el rol restore.
  • Las MongoDB Database Tools y mongosh en una máquina que vea Atlas y TeselaDB.

1. Apunta los índices de búsqueda

Abre mongosh contra Atlas y guarda la definición de cada índice de búsqueda de cada colección:

JavaScript
db.productos.getSearchIndexes();

2. Exporta desde Atlas

Shell
mongodump --uri "mongodb+srv://usuario:<contraseña>@cluster0.ejemplo.mongodb.net/tienda" --gzip --archive=tienda.gz

3. Importa en TeselaDB

Shell
mongorestore --uri "mongodb://root:<contraseña>@node-01:27017/?tls=true&tlsCAFile=./ca.pem" --gzip --archive=tienda.gz

mongorestore crea los índices normales. Las funciones propias de Atlas que no son de MongoDB, como los triggers de Atlas, no viajan en el archivo.

4. Crea otra vez los índices de búsqueda

En mongosh sobre TeselaDB, crea otra vez cada índice de búsqueda con la definición que apuntaste en el paso 1, como hace el ejemplo de abajo con el índice default de productos con mapeo dinámico:

JavaScript
db.productos.createSearchIndex("default", { mappings: { dynamic: true } });

Probarlo

En TeselaDB, los recuentos y los índices de cada colección coinciden con los de Atlas, y una búsqueda devuelve resultados en cuanto termina de construirse su índice. Compara el recuento de abajo con el que da countDocuments() en Atlas:

JavaScript
db.productos.countDocuments();
db.productos.aggregate([{ $search: { text: { query: "silla", path: { wildcard: "*" } } } }, { $limit: 3 }]);

Cuando todo coincide, cambia la cadena de conexión de tu aplicación por la del clúster de TeselaDB.

Limpiar

Borra el archivo de la exportación cuando los datos ya estén en TeselaDB, porque lleva todos tus datos sin cifrar:

Shell
rm tienda.gz

Siguientes pasos