Migrar desde MongoDB Atlas
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 rolrestore. - Las MongoDB Database Tools y
mongoshen 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:
db.productos.getSearchIndexes();2. Exporta desde Atlas
mongodump --uri "mongodb+srv://usuario:<contraseña>@cluster0.ejemplo.mongodb.net/tienda" --gzip --archive=tienda.gz3. Importa en TeselaDB
mongorestore --uri "mongodb://root:<contraseña>@node-01:27017/?tls=true&tlsCAFile=./ca.pem" --gzip --archive=tienda.gzmongorestore 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:
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:
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:
rm tienda.gzSiguientes pasos
- Comprobar una migración, con sumas y hashes por colección.
- Índices de búsqueda, con lo que acepta cada definición.