Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

Migrar un conjunto de réplicas independiente a un conjunto de réplicas de un solo miembro.

A partir de Kubernetes Operator 1.15, las implementaciones independientes están obsoletas y dejarán de ser compatibles en la próxima versión principal. Migre sus implementaciones independientes a conjuntos de réplicas de un miembro. Un conjunto de réplicas de un miembro proporciona la misma topología de nodo único que una instancia independiente y permite agregar miembros posteriormente sin necesidad de migrar de nuevo.

  • Esta migración no es una actualización in situ. Se implementa un nuevo conjunto de réplicas de un solo miembro, se copian los datos con mongodump y mongorestore, y luego se redirigen las aplicaciones al conjunto de réplicas.

  • Un proyecto de Ops Manager contiene una única implementación, por lo que el conjunto de réplicas requiere un proyecto nuevo. No se puede reutilizar el proyecto que utiliza la implementación independiente.

  • mongodump y mongorestore no copian los usuarios de la base de datos. Después de la restauración, vuelva a crear sus usuarios como recursos MongoDBUser.

  • La implementación independiente permanece intacta hasta que la elimine. Si la migración falla, puede redirigir sus aplicaciones de nuevo a la implementación independiente.

  • Implementa un recurso independiente administrado por el operador de Kubernetes. Para obtener más información, consulta Implementar una instancia independiente de MongoDB.

  • Configure kubectl para acceder al clúster de Kubernetes que aloja la implementación independiente.

  • Tenga en cuenta el valor de spec.version en el recurso independiente. El conjunto de réplicas de un solo miembro debe ejecutar la misma versión de MongoDB.

1

Un proyecto de Ops Manager contiene un único despliegue, por lo que no se puede reutilizar el proyecto que utiliza el despliegue independiente. Copie el ConfigMap al que hace referencia el despliegue independiente, conserve los valores baseUrl y orgId, y establezca un nuevo valor projectName único. Aplique el ConfigMap al mismo espacio de nombres de Kubernetes que el despliegue independiente.

Para obtener más información,consulte Crear un proyecto por implementación de MongoDB mediante un ConfigMap.

2

Cree un recurso MongoDB con spec.type configurado como ReplicaSet y spec.members como 1. Configure spec.version con la misma versión de MongoDB que utiliza la implementación independiente y haga referencia al ConfigMap que creó en el paso anterior. Puede reutilizar el secreto de credenciales que utiliza la implementación independiente. Copie cualquier configuración adicional de spec del recurso independiente.

---apiVersion: mongodb.com/v1kind: MongoDBmetadata: name: <my-replica-set> namespace: <my-namespace>spec: members: 1 # Must match the MongoDB version of the standalone deployment version: "<mongodb-version>" opsManager: configMapRef: # Must match metadata.name in the new project ConfigMap file name: <configMap.metadata.name> # Can match the credentials Secret that the standalone deployment uses credentials: <mycredentials> type: ReplicaSet persistent: true...

Aplicar el recurso:

kubectl apply -f <replica-set-yaml> --namespace <my-namespace>

Para verificar el estado de su MongoDB recurso, utilice el siguiente comando:

kubectl get mdb <resource-name> -o yaml -w

Con la bandera -w (observar) activada, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el estado Running. Para obtener más información sobre el estado de implementación de recursos, consulta Solucionar problemas con el operador de Kubernetes.

3

Las imágenes de contenedor que ejecutan los pods de la base de datos no incluyen las herramientas de base de datos de MongoDB. Para ejecutar mongodump y mongorestore, implemente un pod de herramientas dedicado basado en la imagen mongodb-enterprise-server. Configure la etiqueta de la imagen con la misma versión de MongoDB que se ejecuta en la implementación independiente.

---apiVersion: v1kind: Podmetadata: name: mongodb-tools namespace: <my-namespace>spec: containers: - name: mongodb-tools # Use the standalone's MongoDB version without the -ent # suffix, for example 8.0.4 image: quay.io/mongodb/mongodb-enterprise-server:<mongodb-version>-ubi9 command: ["sleep", "infinity"]...

Aplicar la cápsula:

kubectl apply -f <tools-pod-yaml> --namespace <my-namespace>
4

Detenga todas las escrituras de la aplicación en la implementación independiente y mantenga las escrituras detenidas hasta que sus aplicaciones se conecten al nuevo conjunto de réplicas. El volcado no captura las escrituras que se produzcan después de que comience el volcado.

5

Registre el número de documentos de cada colección y el dbHash de cada base de datos en la implementación independiente, excepto las bases de datos admin, config y local. La restauración excluye las bases de datos admin y config, y la replicación escribe en la base de datos local, por lo que estos valores nunca coinciden. Después de la restauración, repita estas mediciones en el conjunto de réplicas para verificar la migración.

6

Ejecutar mongodump desde el pod de herramientas contra el servicio de la implementación independiente:

kubectl exec mongodb-tools --namespace <my-namespace> -- \ mongodump \ --host "<my-standalone>-svc.<my-namespace>.svc.cluster.local:27017" \ --out /tmp/dump

Si la implementación independiente requiere autenticación, conéctese como un usuario con los roles backup y readAnyDatabase. Si la implementación requiere TLS, agregue las opciones de conexión mongodump correspondientes. Para obtener más información, consulte mongodump.

7

Ejecutar mongorestore desde el pod de herramientas contra el servicio del conjunto de réplicas:

kubectl exec mongodb-tools --namespace <my-namespace> -- \ mongorestore \ --host "<my-replica-set>-svc.<my-namespace>.svc.cluster.local:27017" \ --nsExclude="admin.*" \ --nsExclude="config.*" \ /tmp/dump

Las opciones --nsExclude excluyen las bases de datos admin y config de la restauración. Una salida completa mongodump incluye admin.system.users y admin.system.version. Restaurarlas implicaría escribir los usuarios de la base de datos y el esquema de autenticación en el conjunto de réplicas fuera de la configuración de automatización, por lo que la lista de usuarios del proyecto en Ops Manager ya no coincidiría con la base de datos.

Si el conjunto de réplicas requiere autenticación, aún no tiene usuarios, ya que los usuarios de la base de datos se recrean en un paso posterior. Cree un recurso temporal MongoDBUser en el nuevo proyecto con los roles restore, readWriteAnyDatabase y dbAdminAnyDatabase, y conéctese como ese usuario. Para obtener más información sobre la creación de usuarios, consulte la sección "Administrar usuarios de la base de datos".

Si el conjunto de réplicas requiere TLS, agregue las opciones de conexión mongorestore correspondientes. Para obtener más información, consulte mongorestore.

8

Repita el recuento de documentos y las mediciones de dbHash del paso anterior en el conjunto de réplicas y confirme que los valores coinciden con los valores que registró en la implementación independiente.

9

El volcado no incluye usuarios de la base de datos. Recrea cada usuario como un recurso MongoDBUser en el nuevo proyecto. Si creaste un usuario temporal para la restauración, elimínalo después de recrear los usuarios. Para obtener más información, consulta la sección «Administrar usuarios de la base de datos» y la «Especificación de recursos de usuario de MongoDB».

10

Actualice las cadenas de conexión de sus aplicaciones para que hagan referencia al conjunto de réplicas de un solo miembro.

11

Tras verificar la migración, elimine el recurso MongoDB independiente. El operador de Kubernetes no elimina la solicitud de volumen persistente que utilizaba la implementación independiente, por lo que debe eliminarla manualmente. Para obtener más información, consulte Eliminar un recurso MongoDB.

La implementación independiente permanece intacta hasta que la elimine. Para revertir la migración, redirija sus aplicaciones a la implementación independiente. Esta implementación no contiene las escrituras que el conjunto de réplicas recibió después de la migración.