

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Migración a Amazon DocumentDB
<a name="docdb-migration"></a>

Amazon DocumentDB es una base de datos administrada que es compatible con la API de MongoDB. Puede migrar sus datos a Amazon DocumentDB desde bases de datos de MongoDB que se ejecuten localmente o en Amazon Elastic Compute Cloud (Amazon EC2) mediante el proceso que se detalla en esta sección.

**Topics**
+ [Guía de inicio rápido](migration-quick-start.md)
+ [Manual de procedimientos de migración](docdb-migration-runbook.md)
+ [Migración desde Couchbase Server](migration-from-couchbase.md)

# Migración a Amazon DocumentDB mediante AWS Database Migration Service (DMS): guía de inicio rápido
<a name="migration-quick-start"></a>

**Topics**
+ [Preparación del origen de DMS](#migrate-qs-dma-source)
+ [Configuración de DMS](#migrate-qs-dms-setup)
+ [Habilitación de la compresión de DocumentDB](#migrate-qs-comp)
+ [Creación de una tarea de replicación](#migrate-qs-create)
+ [Monitorear el progreso](#migrate-qs-monitor)
+ [Información adicional](#migrate-qs-info)

## Preparación del origen de DMS
<a name="migrate-qs-dma-source"></a>

Consulte [Habilitación de flujos de cambios](change_streams.md#change_streams-enabling) para habilitar los flujos de cambios de DocumentDB o habilitar el oplog de MongoDB para admitir la captura de datos de cambio (CDC) de DMS.
+ El origen de DMS debe retener todos los cambios en curso hasta que se complete la carga completa de DMS para todas las colecciones incluidas.
+ Los flujos de cambios de DocumentDB se basan en el tiempo. Asegúrese de que la configuración de `change_stream_log_retention_duration` sea lo suficientemente grande como para cubrir el tiempo necesario para concluir la carga completa.
+ El oplog de MongoDB tiene un tamaño fijo. Asegúrese de que tiene el tamaño adecuado para admitir todas las operaciones durante la carga completa.

## Configuración de DMS
<a name="migrate-qs-dms-setup"></a>

Cree puntos de conexión de instancia, origen y destino de DMS y pruebe cada punto de conexión.

## Habilitación de la compresión de DocumentDB
<a name="migrate-qs-comp"></a>

Para habilitar la compresión, adjunte un grupo de parámetros personalizado al clúster de DocumentDB y actualice el parámetro default\$1collection\$1compression a habilitado. Para obtener más información, consulte [Gestión de la compresión de documentos a nivel de colección](doc-compression.md).

## Creación de una tarea de replicación
<a name="migrate-qs-create"></a>

1. En la consola de DMS, en el panel de navegación, elija **Migrar o replicar** y, a continuación, elija **Tareas**.

1. Seleccione **Crear tarea**.

1. En la página **Crear tarea**, en la sección **Configuración de tareas**:
   + Introduzca un **Identificador de tarea** único y significativo (por ejemplo, «mongodb-docdb-replication»).
   + Elija el punto de conexión de origen que creó anteriormente en el menú desplegable de **Punto de conexión de la base de datos de origen**.
   + Elija el punto de conexión de destino que creó anteriormente en el menú desplegable de **Punto de conexión de la base de datos de destino**.
   + En **Tipo de tarea**, elija **Migrar y replicar**.

1. En la sección **Configuración**:
   + En **Registros de tareas**, marque la casilla **Activar registros de CloudWatch**.
   + En **Modo de edición** (en la parte superior de la sección), elija el **editor JSON** y defina los siguientes atributos:
     + Establezca `ParallelApplyThreads` en 5 (en `TargetMetadata`). Esto permite \$11000 operaciones de insertar/actualizar/eliminar por segundo en la CDC.
     + Establezca `MaxFullLoadSubTasks` en 16 (en `FullLoadSettings`). Considere aumentar el valor en función del tamaño de la instancia.
     + Para colecciones grandes (más de 100 GB), habilite la partición automática (en Correspondencia de tablas y en el atributo `parallel-load`):
       + «type»: «partitions-auto»
       + «number-of-partitions»: 16

## Monitorear el progreso
<a name="migrate-qs-monitor"></a>

Use la consola de AWS DMS o cree un panel de control personalizado ([herramienta de panel de control](https://github.com/awslabs/amazon-documentdb-tools/tree/master/monitoring/docdb-dashboarder)) para realizar un seguimiento de la migración. Debe concentrarse en las siguientes métricas:
+ **FullloadThroughputBandWidthTarget**: mide el ancho de banda de la red (en KB/segundo) que utiliza DMS para transferir datos a la base de datos de destino durante la fase de carga completa de la migración.
+ **CDCLatencyTarget**: mide el tiempo transcurrido (en segundos) entre el momento en que se produce un cambio en la base de datos de origen y el momento en que ese cambio se aplica a la base de datos de destino.
+ **CDCThroughputRowsTarget**: mide el número de filas por segundo que DMS aplica a la base de datos de destino durante la fase de replicación en curso de la migración.

## Información adicional
<a name="migrate-qs-info"></a>

Para obtener más información acerca de Amazon DocumentDB y AWS DMS, consulte:
+ [Manual de procedimientos de migración de Amazon DocumentDB](docdb-migration-runbook.md)
+ [Migración desde MongoDB a Amazon DocumentDB](https://docs.aws.amazon.com/dms/latest/sbs/chap-mongodb2documentdb.html)

# Manual de procedimientos de migración de Amazon DocumentDB
<a name="docdb-migration-runbook"></a>

Este manual proporciona una guía completa para migrar una base de datos de MongoDB a Amazon DocumentDB mediante (DMS). AWS Database Migration Service Está diseñado para ayudar a los administradores de bases de datos, ingenieros de nube y desarrolladores durante todo el proceso de migración, desde el descubrimiento inicial hasta la validación posterior a la end-to-end migración.

Dadas las diferencias en la implementación y las características compatibles entre MongoDB y Amazon DocumentDB, en este manual de procedimientos se hace hincapié en un enfoque estructurado y sistemático. Se describen las evaluaciones esenciales previas a la migración, se destacan las consideraciones de compatibilidad y se detallan las tareas clave necesarias para garantizar una migración correcta con un mínimo de interrupciones.

El manual de procedimientos se organiza en los siguientes temas:
+ **[Compatibilidad](#mig-runbook-compatibility)**: conozca las características y los tipos de datos de MongoDB compatibles con Amazon DocumentDB e identifique posibles incompatibilidades.
+ **[Detección de la carga de trabajo](#mig-runbook-workload)**— Analice las cargas de trabajo de MongoDB existentes, read/write incluidos los patrones, los volúmenes de datos y las líneas base de rendimiento.
+ **[Migración de índices](#mig-runbook-index)**: analice las estrategias para extraer y transformar los índices de MongoDB para obtener un rendimiento óptimo en Amazon DocumentDB.
+ **[Migración de usuario](#mig-runbook-user)**: detalle el enfoque para migrar los usuarios, los roles y los controles de acceso de las bases de datos a Amazon DocumentDB.
+ **[Migración de datos](#mig-runbook-data)**— Describa varios métodos para la migración de datos AWS DMS, incluida la captura de datos a plena carga y cambios (CDC).
+ **[Supervisión](#mig-runbook-monitoring)**: detalle varios enfoques de supervisión cuando haga una migración mediante DMS o herramientas nativas.
+ **[Validación](#mig-runbook-validation)**: proporcione procedimientos para las comprobaciones de integridad de los datos, la validación funcional y la comparación del rendimiento después de la migración.

Si se siguen las instrucciones de este manual de procedimientos, los equipos pueden garantizar una transición fluida, segura y eficiente a Amazon DocumentDB, a la vez que conservan la funcionalidad de la aplicación y minimizan los riesgos.

## Compatibilidad
<a name="mig-runbook-compatibility"></a>

**Topics**
+ [Compatibilidad de características básicas](#w2aac23b9c13c13)
+ [Herramienta de evaluación de compatibilidad de Amazon DocumentDB](#w2aac23b9c13c15)

Cuando se realiza una migración de MongoDB a Amazon DocumentDB, es esencial realizar una evaluación inicial exhaustiva y comprobar la compatibilidad de las características para que la migración se lleve a cabo correctamente. Este proceso comienza con un inventario completo de las características de MongoDB, incluidos los operadores de canalización de agregación, los patrones de consulta, los índices y los modelos de datos.

Dado que Amazon DocumentDB es compatible con las API de MongoDB 3.6, 4.0, 5.0 y 8.0, es posible que sea necesario refactorizar las aplicaciones que utilizan características específicas de MongoDB más recientes. Las áreas críticas que se deben evaluar incluyen los mecanismos de partición (Amazon DocumentDB utiliza un enfoque diferente), las implementaciones de transacciones, la funcionalidad de los flujos de cambios y los tipos de índices (especialmente los índices dispersos y parciales).

Las características de rendimiento también difieren, ya que Amazon DocumentDB está optimizada para cargas de trabajo empresariales con un rendimiento predecible. Las pruebas deben incluir la ejecución de cargas de trabajo representativas en ambos sistemas para identificar los patrones de consulta que puedan requerir optimización.

Durante la fase de evaluación, es importante supervisar los planes de ejecución para detectar posibles brechas de rendimiento. Esto ayuda a crear una hoja de ruta de migración clara, ya que identifica los cambios necesarios en las aplicaciones y establece plazos realistas para una transición fluida.

### Compatibilidad de características básicas
<a name="w2aac23b9c13c13"></a>



#### Soporte de características integral
<a name="w2aac23b9c13c13b5"></a>
+ **Operaciones CRUD**: disfrute de una compatibilidad total con todas las operaciones básicas de creación, lectura, actualización y eliminación, incluidos los operadores masivos y de consulta, lo que proporciona una compatibilidad perfecta entre aplicaciones.
+ **Amplias capacidades de indexación**: aproveche el soporte integral para índices de un solo campo, compuestos, TTL, parciales, dispersos y de 2dsphere para optimizar el rendimiento de sus consultas y los índices de texto (versión 5) para las búsquedas basadas en texto.
+ **Replicación de nivel empresarial**: benefíciese de un sólido mecanismo de conmutación por error automática con réplicas de lectura para obtener una alta disponibilidad superior sin sobrecargas operativas.
+ **Soluciones de respaldo avanzadas**: descanse tranquilo con un sistema de respaldo automatizado que incluye Point-in-Time recuperación (PITR) e instantáneas manuales bajo demanda para proteger los datos.

#### Funciones integradas y mejoradas AWS
<a name="w2aac23b9c13c13b7"></a>
+ **Agregación simplificada**: aproveche las etapas de agregación más utilizadas (`$match`, `$group`, `$sort`, `$project`, etc.) con un rendimiento optimizado para las cargas de trabajo empresariales.
+ **Soporte de transacciones**: implemente transacciones con documentos y colecciones múltiples, lo que resulta perfecto para la mayoría de las necesidades de las aplicaciones empresariales.
+ **Seguimiento de datos en tiempo real**: habilite los flujos de cambios con un simple comando y aumente el período de retención del flujo de cambios mediante una sencilla configuración de grupos de parámetros para supervisar los cambios en los datos en tiempo real.
+ **Servicios basados en la ubicación**: implemente aplicaciones geoespaciales compatibles con los índices de operador y de 2dsphere de `$geoNear`.
+ **Capacidades de búsqueda de texto**: utilice la funcionalidad integrada de búsqueda de texto para las necesidades de detección de contenido.

#### Ventajas de la arquitectura moderna
<a name="w2aac23b9c13c13b9"></a>
+ **Diseño nativo de la nube**: disfrute de una arquitectura AWS optimizada que reemplaza las funciones antiguas, como MapReduce las operaciones de canalización de agregación más eficientes.
+ **Seguridad mejorada: aproveche** las ventajas de la autenticación mediante AWS Identity and Access Management certificado (IAM), SCRAM-SHA-1, SCRAM-SHA-256, X.509 y autenticación basada en contraseñas.
+ **Rendimiento predecible**: disfrute de un rendimiento uniforme optimizado específicamente para las cargas de trabajo empresariales.

Para obtener una descripción general completa de las capacidades de Amazon DocumentDB, consulte [APIsMongoDB, operaciones y tipos de datos compatibles en Amazon DocumentDB](mongo-apis.md) y [Diferencias funcionales: Amazon DocumentDB y MongoDB](functional-differences.md) para maximizar el potencial de su base de datos.

Amazon DocumentDB no es compatible con todos los índices que ofrece MongoDB. Proporcionamos una [herramienta de indexación](https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md) gratuita para comprobar la compatibilidad. Recomendamos utilizar la herramienta de indexación para evaluar la incompatibilidad y planificar las soluciones alternativas en consecuencia.

### Herramienta de evaluación de compatibilidad de Amazon DocumentDB
<a name="w2aac23b9c13c15"></a>

La herramienta de compatibilidad de [MongoDB a Amazon DocumentDB es una utilidad de código abierto GitHub que ayuda a evaluar la compatibilidad de las cargas de trabajo de MongoDB](https://github.com/awslabs/amazon-documentdb-tools/blob/master/compat-tool/README.md) con Amazon DocumentDB mediante el análisis de los registros de MongoDB o del código fuente de la aplicación.

**Características principales**
+ Identifica los patrones de uso de la API de MongoDB en su carga de trabajo.
+ Señala posibles problemas de compatibilidad antes de la migración.
+ Genera informes de compatibilidad detallados con recomendaciones.
+ Está disponible como una utilidad independiente que se puede ejecutar localmente.

#### Métodos de evaluación
<a name="w2aac23b9c13c15b9"></a>

**Evaluación basada en registros**


+ Ventajas:
  + Captura el comportamiento real del tiempo de ejecución y los patrones de consulta.
  + Identifica las frecuencias de uso y las características de rendimiento del mundo real.
  + Detecta consultas dinámicas que podrían no estar visibles en el código fuente.
  + No requiere el acceso al código fuente de la aplicación.
+ Desventajas:
  + Requiere acceso a los registros de MongoDB con la creación de perfiles habilitada.
  + Captura solamente las operaciones que se produjeron durante el período de registro.
  + Es posible que pase por alto las características que se utilizan con poca frecuencia o las cargas de trabajo estacionales.

**Análisis del código fuente**


+ Ventajas:
  + Brinda cobertura completa de todas las posibles operaciones de MongoDB en el código base.
  + Puede identificar problemas en las rutas de código que se ejecutan con poca frecuencia.
  + Detecta la lógica del lado del cliente que podría verse afectada por las diferencias en Amazon DocumentDB.
  + No requiere que se ejecute la aplicación para realizar la evaluación.
+ Desventajas:
  + Puede marcar un código que existe, pero que nunca se ejecuta en producción.
  + Requiere acceso al código fuente completo de la aplicación.
  + Tiene capacidad limitada para analizar consultas creadas dinámicamente.

Para obtener los mejores resultados, recomendamos utilizar ambos métodos de evaluación siempre que sea posible para obtener una visión completa de los problemas de compatibilidad antes de la migración.

## Detección de la carga de trabajo
<a name="mig-runbook-workload"></a>

La migración de MongoDB a Amazon DocumentDB requiere un conocimiento profundo de la carga de trabajo de la base de datos existente. La detección de la carga de trabajo es el proceso de analizar los patrones de uso de la base de datos, las estructuras de datos, el rendimiento de las consultas y las dependencias operativas para garantizar una transición fluida con una interrupción mínima. En esta sección se describen los pasos clave que implica la detección de cargas de trabajo para facilitar una migración eficaz de MongoDB a Amazon DocumentDB.

**Topics**
+ [Evaluación de la implementación de MongoDB existente](#w2aac23b9c15b7)
+ [Identificación de diferencias en los modelos de datos](#w2aac23b9c15b9)
+ [Análisis de consultas y rendimiento](#w2aac23b9c15c11)
+ [Revisión de seguridad y control de acceso](#w2aac23b9c15c13)
+ [Consideraciones operativas y de supervisión](#w2aac23b9c15c15)

### Evaluación de la implementación de MongoDB existente
<a name="w2aac23b9c15b7"></a>

Antes de la migración, es fundamental evaluar el entorno actual de MongoDB, que incluye:
+ **Arquitectura del clúster**: identifique la cantidad de nodos, los conjuntos de réplicas y las configuraciones de partición. Cuando migra de MongoDB a Amazon DocumentDB, es importante comprender la configuración de partición de MongoDB, ya que Amazon DocumentDB no admite la partición controlada por el usuario. Las aplicaciones diseñadas para un entorno de MongoDB con partición necesitarán cambios en la arquitectura, ya que Amazon DocumentDB utiliza un enfoque de escalado diferente con su arquitectura basada en el almacenamiento. Tendrá que adaptar su estrategia de distribución de datos y, posiblemente, consolidar las colecciones con partición cuando pase a Amazon DocumentDB.
+ **Almacenamiento y volumen de datos**: mida el tamaño total de los datos y el tamaño del índice de su clúster. Complemente esto con la [herramienta de revisión del oplog](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/mongodb-oplog-review) para comprender los patrones de escritura y la velocidad de crecimiento de los datos. Para obtener más información acerca del dimensionamiento de su clúster, consulte [Determinación del tamaño de las instancias](best_practices.md#best_practices-instance_sizing). 
+ **Patrones de carga de trabajo**: analice el rendimiento de lectura y escritura, la frecuencia de ejecución de las consultas y la eficiencia de la indexación.
+ **Dependencias operativas**: documente todas las aplicaciones, los servicios y las integraciones que se basan en MongoDB.

### Identificación de diferencias en los modelos de datos
<a name="w2aac23b9c15b9"></a>

Si bien Amazon DocumentDB es compatible con MongoDB, existen diferencias en las características compatibles, como:
+ **Transacciones**: Amazon DocumentDB admite transacciones ACID, pero con algunas [Limitaciones](transactions.md#transactions-limitations).
+ **Diseño de esquemas**: asegúrese de que las estructuras de los documentos, los documentos incrustados y las referencias se ajusten a las [prácticas recomendadas de Amazon DocumentDB](https://d1.awsstatic.com/product-marketing/Data%20modeling%20with%20Amazon%20DocumentDB.pdf).

### Análisis de consultas y rendimiento
<a name="w2aac23b9c15c11"></a>

Comprender el comportamiento de las consultas ayuda a optimizar el rendimiento de la migración y después de la migración. Las siguientes son áreas clave que se deben analizar:
+ **Consultas lentas**: identifique las consultas con un tiempo de ejecución elevado mediante las herramientas de creación de perfiles de MongoDB.
+ **Patrones de consulta**: clasifique los tipos de consultas más frecuentes, incluidas las operaciones CRUD y las agregaciones.
+ **Uso de índices**: evalúe si los índices se utilizan de forma eficaz o si es necesario optimizarlos en Amazon DocumentDB. Para evaluar el uso de los índices y optimizar el rendimiento en Amazon DocumentDB, use la etapa de canalización de agregación de `$indexStats` en combinación con el método de `explain()` en sus consultas críticas. Comience por ejecutar `db.collection.aggregate([{$indexStats{}}])` para identificar qué índices se están utilizando. Puede realizar un análisis más detallado ejecutando las consultas más frecuentes con `explainPlan`.
+ **Concurrencia y distribución de la carga de trabajo**: evalúe las relaciones de lectura y escritura, la agrupación de conexiones y los cuellos de botella en el rendimiento.

### Revisión de seguridad y control de acceso
<a name="w2aac23b9c15c13"></a>

**Autenticación y autorización**
+ **RBAC de MongoDB a IAM y RBAC de Amazon DocumentDB: asigne los usuarios y roles de control de acceso basado en roles de MongoDB a las políticas (IAM) y a los usuarios de autenticación SCRAM de Amazon** DocumentDB. AWS Identity and Access Management 
+ **Estrategia de migración de usuarios**: planifique la migración de los usuarios de bases de datos, los roles personalizados y los privilegios a los mecanismos de autenticación compatibles con Amazon DocumentDB.
+ **Diferencias de privilegios**: identifique los privilegios de MongoDB sin equivalentes directos de Amazon DocumentDB (por ejemplo, roles de administración de clústeres).
+ **Autenticación de aplicaciones**: actualice las cadenas de conexión y la administración de credenciales para las políticas de contraseñas de Amazon DocumentDB. Puede usar el administrador de secretos para almacenar sus credenciales y rotar las contraseñas.
+ **Administración de cuentas** de servicio: establezca procesos para AWS Secrets Manager administrar las credenciales de las cuentas de servicio en.
+ **Implementación de privilegios mínimos**: revise y perfeccione los controles de acceso para implementar los principios de privilegios mínimos en el nuevo entorno.

**Cifrado**

Asegúrese de que el cifrado en reposo y en tránsito se ajuste a los requisitos de conformidad.

**Configuración de red**

Planifique la configuración de la [nube privada virtual (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) y las reglas de los grupos de seguridad.

### Consideraciones operativas y de supervisión
<a name="w2aac23b9c15c15"></a>

Para mantener la fiabilidad del sistema, la detección de la carga de trabajo también debe incluir lo siguiente:
+ **Estrategia de copia de seguridad y restauración**: evalúe los métodos de copia de seguridad existentes y las capacidades de copia de seguridad de Amazon DocumentDB.
+ **AWS Backup integración**: aproveche la administración centralizada AWS Backup de copias de seguridad en todos AWS los servicios, incluido Amazon DocumentDB.
+ **CloudWatch métricas: asigne las métricas** de monitoreo de MongoDB a las métricas de Amazon DocumentDB para la CPU, la memoria, las conexiones y el almacenamiento. CloudWatch 
+ **Información sobre rendimiento**: implemente la Información de rendimiento de Amazon DocumentDB para visualizar la carga de la base de datos y analizar los problemas de rendimiento con análisis de consultas detallados.
+ **Generador de perfiles**: configure el generador de perfiles de Amazon DocumentDB para capturar operaciones de ejecución lenta (similar al generador de perfiles de MongoDB, pero con ajustes específicos de Amazon DocumentDB).
  + Realice la habilitación mediante grupos de parámetros con los umbrales adecuados.
  + Analice los datos del generador de perfiles para identificar oportunidades de optimización
+ **CloudWatch Eventos**: configure la supervisión basada en eventos para los eventos del clúster de Amazon DocumentDB.
  + Configure las notificaciones para los eventos de copia de seguridad, los períodos de mantenimiento y las conmutaciones por error.
  + Intégrelo con Amazon SNS para recibir alertas y respuestas automatizadas AWS Lambda .
+ **Registro de auditoría**: planifique la configuración del registro de auditoría para rastrear la actividad de los usuarios y los eventos relevantes para la seguridad.
+ **Supervisión mejorada**: habilite una supervisión mejorada para obtener métricas granulares a nivel del sistema operativo en intervalos de 1 segundo.

## Migración de índices
<a name="mig-runbook-index"></a>

La migración de MongoDB a Amazon DocumentDB implica transferir no solo datos, sino también índices para mantener el rendimiento de las consultas y optimizar las operaciones de la base de datos. En esta sección se describe el step-by-step proceso detallado para migrar índices de MongoDB a Amazon DocumentDB y, al mismo tiempo, garantizar la compatibilidad y la eficacia.

### Uso de la herramienta de indexación de Amazon DocumentDB
<a name="w2aac23b9c17b5"></a>

**Clonación de la [herramienta de indexación](https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md)**

```
git clone https://github.com/aws-samples/amazon-documentdb-tools.git
cd amazon-documentdb-tools/index-tool
```

```
pip install -r requirements.txt
```

**Exportación de índices desde MongoDB (si se migra desde MongoDB)**

```
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir mongodb_index_export --uri
'mongodb://localhost:27017'
```

**Exportación de índices desde Amazon DocumentDB (si se migra desde Amazon DocumentDB)**

```
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir docdb_index_export --uri
'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west-
2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-
bundle.pem&replicaSet=rs0&retryWrites=false'
```

**Índices de importación**

```
python3 migrationtools/documentdb_index_tool.py --restore-indexes --skip-incompatible --dir
mongodb_index_export --uri 'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west-
2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-
bundle.pem&replicaSet=rs0&retryWrites=false'
```

**Verificación de índices**

```
python3 migrationtools/documentdb_index_tool.py --show-issues --dir mongodb_index_export
```

## Migración de usuario
<a name="mig-runbook-user"></a>

La migración de usuarios de MongoDB a Amazon DocumentDB es esencial para mantener el control de acceso, la autenticación y la seguridad de la base de datos. En esta sección se describen los pasos detallados para migrar correctamente los usuarios de MongoDB y, al mismo tiempo, conservar sus roles y permisos mediante la herramienta de exportación de usuarios de Amazon DocumentDB.

### Uso de la herramienta de exportación de usuarios de Amazon DocumentDB
<a name="w2aac23b9c19b5"></a>

[https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/export-users](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/export-users)Exporta los usuarios y las funciones de MongoDB o Amazon DocumentDB JavaScript a archivos, que luego se pueden usar para volver a crearlos en otro clúster.

**Requisitos previos**

```
# Clone the repository
git clone https://github.com/awslabs/amazon-documentdb-tools.git
cd amazon-documentdb-tools/migration/export-users
```

```
# Install required dependencies
pip install pymongo
```

**Paso 1: exportar usuarios y roles**

```
# Export users and roles to JavaScript files
python3 docdbExportUsers.py \
--users-file mongodb-users.js \
--roles-file mongodb-roles.js \
--uri "mongodb://admin:password@source-host:27017/"
```

**Paso 2: editar el archivo de usuarios**

```
// Example of how to update the users.js file
// Find each user creation statement and add the password
db.getSiblingDB("admin").createUser({
user: "appuser",
// Add password here
pwd: "newpassword",
roles: [
{ role: "readWrite", db: "mydb" }
]
})
```

**Paso 3: restaurar roles personalizados en Amazon DocumentDB**

```
# Import roles first
mongo --ssl \
--host target-host:27017 \
--sslCAFile rds-combined-ca-bundle.pem \
--username admin \
--password password \
mongodb-roles.js
```

**Paso 4: restaurar usuarios en Amazon DocumentDB**

```
# Import users after roles are created
mongo --ssl \
--host target-host:27017 \
--sslCAFile rds-combined-ca-bundle.pem \
--username admin \
--password password \
mongodb-users.js
```

**Notas importantes**
+ Las contraseñas no se exportan por motivos de seguridad y deben añadirse manualmente al archivo users.js.
+ Los roles se deben importar antes que los usuarios para garantizar una asignación de roles adecuada.
+ La herramienta genera JavaScript archivos que se pueden ejecutar directamente con el shell mongo.
+ Los roles personalizados y sus privilegios se conservan durante la migración.
+ Este enfoque permite revisar y modificar los permisos de los usuarios antes de importarlos.

Este método proporciona un enfoque seguro y flexible para migrar usuarios y roles de MongoDB a Amazon DocumentDB y, al mismo tiempo, permite restablecer las contraseñas durante el proceso de migración.

## Migración de datos
<a name="mig-runbook-data"></a>

**Topics**
+ [Migración en línea](#w2aac23b9c21b5)
+ [Migración sin conexión](#w2aac23b9c21b7)
+ [Requisitos previos](#w2aac23b9c21c11)
+ [Preparación de un clúster de Amazon DocumentDB](#w2aac23b9c21c13)
+ [Realización de volcado de datos (mongodump)](#w2aac23b9c21c15)
+ [Transferencia de archivos de volcado al entorno de restauración](#w2aac23b9c21c17)
+ [Restauración de datos en Amazon DocumentDB (mongorestore)](#w2aac23b9c21c19)

### Migración en línea
<a name="w2aac23b9c21b5"></a>

En esta sección se proporcionan pasos detallados para realizar una migración en línea de MongoDB a Amazon DocumentDB para permitir un tiempo de inactividad mínimo y AWS DMS una replicación continua. Para empezar, debe configurar un clúster de Amazon DocumentDB como destino y asegurarse de que su instancia de MongoDB esté correctamente configurada como el origen, lo que normalmente requiere el modo de conjunto de réplicas para la captura de datos de cambios. A continuación, debe crear una instancia de replicación de DMS y definir los puntos de conexión de origen y destino con los detalles de conexión necesarios. Tras validar los puntos de conexión, debe configurar e iniciar una tarea de migración que puede incluir la carga completa de los datos, la replicación continua o ambas.

#### Configuración del destino (Amazon DocumentDB)
<a name="w2aac23b9c21b5b5"></a>

**nota**  
Si ya ha aprovisionado un clúster de Amazon DocumentDB al que migrar, puede omitir este paso.

**Cree un grupo de parámetros personalizado**

Consulte los AWS CLI procedimientos Consola de administración de AWS o en[Creación de grupos de parámetros de clúster de Amazon DocumentDB](cluster_parameter_groups-create.md).

**Create an Amazon DocumentDB cluster** (Crear un clúster de Amazon DocumentDB)

**nota**  
Si bien en esta guía hay otros procedimientos para crear un clúster de Amazon DocumentDB, los pasos de esta sección se aplican específicamente a la tarea de migrar grandes cantidades de datos a un nuevo clúster.

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon DocumentDB en https://console.aws.amazon.com /docdb.](https://console.aws.amazon.com/docdb)

1. En el panel de navegación, seleccione **Clusters (Clústeres)**.
**sugerencia**  
Si no ve el panel de navegación del lado izquierdo de la pantalla, seleccione el icono de menú (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/images/docdb-menu-icon.png)) en la esquina superior izquierda de la página.

1. En la consola de administración de Amazon DocumentDB, en **Clústeres**, elija **Crear**.

1. En la página **Crear clúster de Amazon DocumentDB**, en la sección **Tipo de clúster**, elija **Clúster basado en instancias** (esta es la opción predeterminada).

1. En la sección Configuración de clúster:
   + En el campo **Identificador del clúster**, ingrese un nombre único, como **mydocdbcluster**. Tenga en cuenta que la consola cambiará todos los nombres de los clústeres a minúsculas independientemente de cómo se ingresen.
   + En **Versión del motor**, elija 5.0.0.

1. En la sección **Configuración del almacenamiento en clúster**, deje la opción **Amazon DocumentDB estándar** como se encuentra (es la opción predeterminada).

1. Sección de **Configuración de instancias**:
   + En **Clase de instancia de base de datos**, elija **Clases optimizadas para memoria (incluidas las clases r)**, que es la opción predeterminada.
   + En **Clase de instancia**, elija una clase de instancia en función de la carga de trabajo. Por ejemplo:
     + db.r6g.large: para cargas de trabajo más pequeñas
     + db.r6g.4xlarge: para cargas de trabajo más grandes

     Como práctica recomendada, sugerimos elegir una instancia del mayor tamaño posible para obtener el mejor rendimiento a carga completa y reducirla verticalmente una vez finalizada la migración.
   + En **Número de instancias**, elija 1 instancia. La elección de una instancia ayuda a minimizar los costos. Recomendamos que escale a tres instancias para una alta disponibilidad después de que se complete la migración a carga completa.

1. En la sección **Autenticación**, ingrese un nombre de usuario para el usuario principal y, a continuación, elija **Autoadministrado**. Ingrese una contraseña y, a continuación, confírmela.

1. En la sección **Configuración de red**, elija una VPC y un grupo de subredes y, a continuación, configure el grupo de seguridad de la VPC. Actualice las reglas de entrada para asegurarse de que su grupo de seguridad de Amazon DocumentDB permita la conexión entrante desde el grupo de seguridad de la instancia de DMS.

1. En la ncryption-at-rest sección **E**, habilite el cifrado (recomendado) y elija o introduzca una clave KMS.

1. En la sección **Copia de seguridad**, establezca el período de retención de copia de seguridad (1-35 días).

1.  Revise la configuración y elija **Crear clúster**.

   El tiempo de implementación suele tardar entre 10 y 15 minutos.

#### Configurar el origen
<a name="w2aac23b9c21b5b7"></a>

Tanto MongoDB como Amazon DocumentDB pueden servir como orígenes de migración, según la situación:
+ **MongoDB como** fuente: común cuando se migra de un MongoDB local o autogestionado a Amazon DocumentDB u otros servicios de base de datos. AWS Requiere ejecutarse en modo conjunto de réplicas con un oplog del tamaño adecuado (asegúrese de que tenga el tamaño adecuado para contener todas las operaciones durante la carga completa) para permitir la captura de datos de cambios durante la migración.
+ **Amazon DocumentDB como origen**: normalmente se utiliza para la replicación entre regiones, las actualizaciones de versiones o la migración a otros servicios de bases de datos, como MongoDB Atlas. Se requiere [Habilitación de flujos de cambios](change_streams.md#change_streams-enabling) mediante la configuración del parámetro `change_stream_log_retention_duration` en el grupo de parámetros del clúster para capturar los cambios en curso durante la migración. Asegúrese de que la configuración de la `change_stream_log_retention_duration` sea lo suficientemente prolongada como para cubrir el tiempo necesario para concluir la carga completa.

Antes de iniciar la migración, configure la fuente para permitir el acceso. AWS DMS 

Cree un usuario de MongoDB con los permisos adecuados:

```
db.createUser({
user: "dmsUser",
pwd: "yourSecurePassword",
roles: [{ role: "readAnyDatabase", db: "admin" }]
})
```

Configure la red y la autenticación.

Cuando configure la conectividad de red para la migración de MongoDB a DMS:

**MongoDB alojado en EC2 como origen**
+ Modifique el grupo de seguridad de EC2 para permitir el tráfico entrante desde el grupo de seguridad de la instancia de replicación de DMS.
+ Agregue una regla para el puerto TCP 27017 (o su puerto MongoDB personalizado).
+ Utilice el identificador del grupo de seguridad de la instancia de replicación de DMS como origen para un control de acceso preciso.
+ Asegúrese de que la subred de la instancia de EC2 tenga una ruta hacia la subred de la instancia de replicación de DMS.

**MongoDB en las instalaciones como origen**
+ Configure su firewall para permitir las conexiones entrantes desde las direcciones IP públicas de la instancia de replicación de DMS.
+ Si utilizas Direct Connect una VPN, asegúrate de que se enrute correctamente entre la red y la VPC que contiene la instancia de DMS.
+ Pruebe la conectividad mediante comandos telnet o nc desde la subred de DMS a su servidor MongoDB.

**MongoDB Atlas como origen**
+ Agregue las direcciones IP de una instancia de replicación de DMS a la lista de IP permitidas de MongoDB Atlas.
+ Configure el emparejamiento de VPC entre VPC y AWS MongoDB Atlas VPC si Atlas se está ejecutando. AWS
+ Configúrelo AWS PrivateLink para la conectividad privada (nivel empresarial), si se ejecuta en otro proveedor de nube.
+ Cree un usuario dedicado con read/write los permisos adecuados.
+ Utilice una cadena de conexión de MongoDB Atlas con el modo SSL establecido en «verify-full».
+ Asegúrese de que el tamaño del oplog sea suficiente para la duración de la migración.

**Amazon DocumentDB como origen**

Configure el grupo de seguridad de Amazon DocumentDB de origen para permitir el tráfico entrante desde el grupo de seguridad de la instancia de replicación de DMS.

#### Creación de una instancia de replicación de DMS
<a name="w2aac23b9c21b5b9"></a>

Recomendamos utilizar [DMS Buddy](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/dms_buddy) para aprovisionar su infraestructura de DMS, ya que crea una infraestructura de migración óptima con una configuración de DMS y tamaños de instancia óptimos.

Si prefiere realizar la configuración manualmente, siga estos pasos:

1. Abra la consola AWS DMS y elija **Crear instancia de replicación**.

1. Introduzca los detalles de la instancia de replicación:
   + **Nombre de la instancia**: elija un nombre único.
   + **Clase de instancia**: selecciónela en función de la carga de trabajo. Ejemplo: dms.r5.large (cargas de trabajo pequeñas), dms.r5.4xlarge (cargas de trabajo grandes).
   + **Versión del motor**: 3.5.4
   + **Almacenamiento asignado**: el valor predeterminado es 100 GB (puede aumentarse si es necesario). Esto viene determinado por el tamaño del documento updates/second y la duración de la carga completa.
   + **Implementación multi-AZ**: se habilita para una alta disponibilidad, si es necesario.
   + Elija la misma VPC que Amazon DocumentDB.
   + Asegúrese de que los **grupos de seguridad** permitan el tráfico entrante desde el origen y Amazon DocumentDB.

1. Haga clic en **Crear instancia de replicación** y espere a que el estado esté disponible.

#### Creación de puntos de conexión de DMS
<a name="w2aac23b9c21b5c11"></a>

##### Creación de un punto de conexión de origen
<a name="w2aac23b9c21b5c11b3"></a>

**Si se toma MongoDB como origen**

1. En la consola de DMS, en el panel de navegación, elija **Migrar o replicar** y, a continuación, elija **Puntos de conexión**.

1. Seleccione **Crear punto de conexión**.

1. En la página **Crear punto de conexión**, elija **Punto de conexión de origen**.

1. En la sección **Configuración de punto de conexión**:
   + Introduzca un **Identificador de punto de conexión** único y significativo (por ejemplo, «mongodb-source»).
   + Elija **MongoDB** como **motor de origen**.
   + Para **acceder a la base de datos de puntos de conexión**, elija **Proporcionar información de acceso manualmente**.
   + En **Nombre del servidor**, introduzca su*MongoDB server DNS name/IP address*.
   + En **Puerto**, introduzca **27017** (puerto MongoDB predeterminado).
   + En **Modo de autenticación**, elija el modo adecuado para su aplicación (contraseña/SSL) (el predeterminado es el administrador de secretos).
   + Si el **Modo de autenticación** es **Contraseña**, proporcione:
     + **Nombre de usuario** y **Contraseña**: escriba las credenciales de MongoDB.
     + **Nombre de base de datos**: el nombre de la base de datos de origen.
     + **Mecanismo de autenticación**: SCRAM-SHA-1 (predeterminado) o mecanismo apropiado.

1. En **Modo de metadatos**, deje la configuración predeterminada del **documento**.

1. Atributos de conexión adicionales:
   + authSource=admin (si la base de datos de autenticación es diferente).
   + ReplicaSet=< your-replica-set-name > (obligatorio para los CDC)

**Si se toma Amazon DocumentDB como origen**

1. En la consola de DMS, en el panel de navegación, elija **Migrar o replicar** y, a continuación, elija **Puntos de conexión**.

1. Seleccione **Crear punto de conexión**.

1. En la página **Crear punto de conexión**, elija **Punto de conexión de origen**.

1. En la sección **Configuración de punto de conexión**:
   + Introduzca un **Identificador de punto de conexión** único y significativo (por ejemplo, «docdb-source»).
   + Elija **Amazon DocumentDB** como **Motor de origen**.
   + Para **acceder a la base de datos de puntos de conexión**, elija **Proporcionar información de acceso manualmente**.
   + En el **nombre del servidor**, introduzca su. *source Amazon DocumentDB cluster endpoint*
   + En **Puerto** ingrese **27017** (puerto predeterminado de Amazon DocumentDB).
   + En **Modo SSL**, elija **verify-full** (recomendado para Amazon DocumentDB).
   + En **Certificado CA**, elija el certificado CA de Amazon RDS.
   + En **Modo de autenticación**, elija el modo adecuado para su aplicación (contraseña/SSL) (el predeterminado es el administrador de secretos).
   + Si el **Modo de autenticación** es **Contraseña**, proporcione:
     + **Nombre de usuario** y **contraseña**: introduzca las credenciales de Amazon DocumentDB.
     + **Nombre de base de datos**: el nombre de la base de datos de origen.
     + **Mecanismo de autenticación**: SCRAM-SHA-1 (predeterminado) o mecanismo apropiado.

1. En **Modo de metadatos**, deje la configuración predeterminada del **documento**.

##### Creación de un punto de conexión de destino (Amazon DocumentDB)
<a name="w2aac23b9c21b5c11b5"></a>

1. En la consola de DMS, en el panel de navegación, elija **Migrar o replicar** y, a continuación, elija **Puntos de conexión**.

1. Seleccione **Crear punto de conexión**.

1. En la página **Crear punto de conexión**, elija **Punto de conexión de destino**.

1. En la sección **Configuración de punto de conexión**:
   + Introduzca un **Identificador de punto de conexión** único y significativo (por ejemplo, «docdb-target»).
   + Elija **Amazon DocumentDB** como **Motor de destino**.
   + En **Acceder a la base de datos de puntos de conexión**, elija el método que desee utilizar para autenticar el acceso a la base de datos:
     + Si elige **Secrets Manager de AWS **, elija el secreto en el que guarda sus credenciales de Amazon DocumentDB en el campo **Secreto**.
     + Si elige **Proporcionar información de acceso manualmente**: 
       + En **Nombre del servidor**, introduzca su*target Amazon DocumentDB cluster endpoint*.
       + En **Puerto** ingrese **27017** (puerto predeterminado de Amazon DocumentDB).
       + En **Modo SSL**, elija **verify-full** (recomendado para Amazon DocumentDB).
       + En **Certificado CA**, descargue y especifique el paquete de certificados CA para la verificación de SSL.
       + En **Modo de autenticación**, elija el modo adecuado para su aplicación (contraseña/SSL) (el predeterminado es el administrador de secretos).
       + Si el **Modo de autenticación** es **Contraseña**, proporcione:
         + **Nombre de usuario** y **contraseña**: introduzca las credenciales de Amazon DocumentDB.
         + **Nombre de base de datos**: el nombre de la base de datos de origen.
         + **Mecanismo de autenticación**: SCRAM-SHA-1 (predeterminado) o mecanismo apropiado.

1. En **Modo de metadatos**, deje la configuración predeterminada del **documento**.

#### Creación de una tarea de replicación
<a name="w2aac23b9c21b5c13"></a>

1. En la consola de DMS, en el panel de navegación, elija **Migrar o replicar** y, a continuación, elija **Tareas**.

1. Seleccione **Crear tarea**.

1. En la página **Crear tarea**, en la sección **Configuración de tareas**:
   + Introduzca un **identificador de tarea** único y significativo (por ejemplo, "mongodb-docdb-replication«).
   + Elija el punto de conexión de origen que creó anteriormente en el menú desplegable de **Punto de conexión de la base de datos de origen**.
   + Elija el punto de conexión de destino que creó anteriormente en el menú desplegable de **Punto de conexión de la base de datos de destino**.
   + En **Tipo de tarea**, elija **Migrar y replicar**.

1. En la sección **Configuración**:
   + En el **Modo de preparación de la tabla de destino**, deje la configuración predeterminada.
   + En **Detener la tarea después de que concluya la carga completa**, deje la configuración predeterminada.
   + En **Configuración de columnas de LOB**, deje la configuración del **Modo LOB limitado** como está.
   + En **Validación de datos**, deje **Desactivar**, la configuración predeterminada.
   + Para **los registros de tareas**, marca la casilla **Activar CloudWatch** los registros.
   + En **Aplicar optimización por lotes**, deje la configuración predeterminada, es decir, desactivada (sin marcar).

1. Regrese a la parte superior de la sección **Configuración de tareas**. En el **Modo de edición**, seleccione **Editor JSON** y establezca los siguientes atributos:

   ```
   {
     "TargetMetadata": {
       "ParallelApplyThreads": 5
     },
     "FullLoadSettings": {
       "MaxFullLoadSubTasks": 16
     }
   }
   ```

1. En la sección **Mapeos de tabla**, añada una nueva regla de selección.
   + En **Nombre del esquema**, añada la base de datos de origen que quiere migrar. Utilice % para especificar bases de datos múltiples.
   + En **Tabla del esquema**, añada la colección de origen que quiere migrar. Utilice % para especificar colecciones múltiples.
   + En **Acción**, deje **Incluir**, la configuración predeterminada.

1. Para colecciones grandes (más de 100 GB), añada la **Regla de configuración de tablas**:
   + En **Nombre del esquema**, añada la base de datos de origen que quiere migrar. Utilice % para especificar bases de datos múltiples.
   + En **Tabla del esquema**, añada la colección de origen que quiere migrar. Utilice % para especificar colecciones múltiples.
   + En **Número de particiones**, escriba 16 (debe ser menor que `MaxFullLoadSubTask`).

1. En la sección **Evaluación previa a la migración**, asegúrese de que esté desactivada.

### Migración sin conexión
<a name="w2aac23b9c21b7"></a>

En esta sección se describe el proceso para realizar una migración sin conexión desde una instancia de MongoDB autogestionada a Amazon DocumentDB mediante herramientas nativas de MongoDB: `mongodump` y `mongorestore`.

### Requisitos previos
<a name="w2aac23b9c21c11"></a>

**Requisitos de MongoDB como origen**
+ Acceda a la instancia de MongoDB de origen con los permisos adecuados.
+ Instale `mongodump` si es necesario (se instala durante una instalación de MongoDB).
+ Asegúrese de que haya suficiente espacio en disco para los archivos de volcado.

**Requisitos de Amazon DocumentDB como destino**
+ Asegúrese de tener aprovisionado un clúster de Amazon DocumentDB.
+ Asegúrese de que haya una instancia de EC2 en la misma VPC que Amazon DocumentDB para facilitar la migración.
+ La conectividad de red debe estar disponible entre el entorno de origen y Amazon DocumentDB.
+ **mongorestore** debe estar instalado en la instancia de EC2 de migración.
+ Se deben configurar los permisos de IAM adecuados para acceder a Amazon DocumentDB.

**Requisitos generales**
+ AWS CLI debe configurarse (si se utilizan AWS servicios de almacenamiento intermedio)
+ Debe haber un ancho de banda suficiente para la transferencia de datos.
+ Se debe aprobar el tiempo de inactividad (si realiza una migración en vivo, considere otros enfoques).

### Preparación de un clúster de Amazon DocumentDB
<a name="w2aac23b9c21c13"></a>

Creación de un clúster de Amazon DocumentDB en AWS:
+ Asigne un tamaño de instancia en función de su carga de trabajo.
+ Configure una VPC, subredes y grupos de seguridad.
+ Habilite los parámetros necesarios mediante grupos de parámetros.

### Realización de volcado de datos (mongodump)
<a name="w2aac23b9c21c15"></a>

Elija una de las siguientes opciones para crear un archivo de volcado:
+ **Opción 1: básica**

  ```
  mongodump --
  uri="mongodb://<source_user>:<source_password>@<source_host>:<source_port>/<database>" --
  out=/path/to/dump
  ```
+ **Opción 2: mejor control y rendimiento**

  ```
  mongodump \
  --uri="mongodb://<source_user>:<source_password>@<sourcehost>:<source_port>" \
  --out=/path/to/dump \
  --gzip \# Compress output
  --numParallelCollections=4 \# Parallel collections dump
  --ssl \# If using SSL
  --authenticationDatabase=admin \ # If auth is required
  --readPreference=secondaryPreferred # If replica set
  ```
+ **Opción 3: bases de datos de gran tamaño**

  ```
  mongodump \
  --host=<source_host> \
  --port=<source_port> \
  --username=<source_user> \
  --password=<source_password> \
  --db=<specific_db> \# Only dump specific DB
  --collection=<specific_collection> \ # Only dump specific collection
  --query='{ "date": { "$gt": "2020-01-01" } }' \ # Filter documents
  --archive=/path/to/archive.gz \# Single archive output
  --gzip \
  --ssl
  ```

### Transferencia de archivos de volcado al entorno de restauración
<a name="w2aac23b9c21c17"></a>

Elija un método adecuado en función del tamaño del volcado:
+ **Pequeño**: copie los archivos directamente en su máquina de migración (instancia de EC2 que creó anteriormente):

  ```
  scp -r /path/to/dump user@migration-machine:/path/to/restore
  ```
+ **Mediano**: utilice Amazon S3 como almacenamiento intermedio:

  ```
  aws s3 cp --recursive /path/to/dump s3://your-bucket/mongodb-dump/
  ```
+ **Grande**: para bases de datos muy grandes, considere AWS DataSync la posibilidad de realizar una transferencia física.

### Restauración de datos en Amazon DocumentDB (mongorestore)
<a name="w2aac23b9c21c19"></a>

Antes de iniciar el proceso de restauración, cree los índices en Amazon DocumentDB. Puede utilizar la [herramienta de indexación de Amazon DocumentDB](https://github.com/awslabs/amazon-documentdb-tools/tree/master/index-tool) para exportar e importar índices.

Seleccione una de las siguientes opciones para restaurar los datos:
+ **Opción 1: restauración básica**

  ```
  mongorestore --uri="mongodb://<docdb_user>:<docdb_password>@<docdb_endpoint>:27017"
  /path/to/dump
  ```
+ **Opción 2: mejor control y rendimiento**

  ```
  mongorestore \
  --uri="mongodb://<docdb_user>:<docdb_password>@<docdb_endpoint>:27017" \
  --ssl \
  --sslCAFile=/path/to/rds-combined-ca-bundle.pem \ # DocumentDB CA cert
  --gzip \# If dumped with gzip
  --numParallelCollections=4 \# Parallel restoration
  --numInsertionWorkersPerCollection=4 \# Parallel documents insertion
  --noIndexRestore \# skip indexes as they are pre-created
  /path/to/dump
  ```
+ **Opción 3: bases de datos grandes o controles específicos**

  ```
  mongorestore \
  --host=<docdb_endpoint> \
  --port=27017 \
  --username=<docdb_user> \
  --password=<docdb_password> \
  --ssl \
  --sslCAFile=/path/to/rds-combined-ca-bundle.pem \
  --archive=/path/to/archive.gz \# If using archive format
  --gzip \
  --nsInclude="db1.*" \# Only restore specific namespaces
  --nsExclude="db1.sensitive_data" \ # Exclude specific collections if needed
  --noIndexRestore \# skip indexes as they are pre-created
  --writeConcern="{w: 'majority'}" # Ensure write durability
  ```

## Supervisión
<a name="mig-runbook-monitoring"></a>

En esta sección se proporciona un proceso de supervisión detallado para hacer un seguimiento del progreso, el rendimiento y el estado de una migración en curso:

De **MongoDB** a **Amazon DocumentDB**

o

De **Amazon DocumentDB** a **Amazon DocumentDB**

Los pasos de supervisión se aplican independientemente del método de migración (AWS DMS, mongodump/mongorestore u otras herramientas).

### AWS DMS Supervisión de la migración (si corresponde)
<a name="w2aac23b9c23c13"></a>

Supervise las siguientes CloudWatch métricas clave:

**Métricas de la fase de carga completa**
+ **FullLoadThroughputBandwidthTarget**— Ancho de banda de red (KB/segundo) a plena carga
+ **FullLoadThroughputRowsTarget**— Número de cargas por rows/documents segundo
+ **FullLoadThroughputTablesTarget**— Número de unidades tables/collections completadas por minuto
+ **FullLoadProgressPercent**— Porcentaje de carga completa completada
+ **TablesLoaded**— Número de cargadas tables/collections correctamente
+ **TablesLoading**— Número de personas que se tables/collections están cargando actualmente
+ **TablesQueued**— Número de personas en tables/collections espera de ser cargadas
+ **TablesErrored**— Número de los tables/collections que no se pudieron cargar

**Métricas de la fase de CDC**
+ **CDCLatencyObjetivo**: retraso (segundos) entre el cambio de fuente y la aplicación de destino
+ **CDCLatencyFuente**: retraso (segundos) entre el cambio en la fuente y la lectura del DMS
+ **CDCThroughputRowsTarget**— Se aplicaron filas por segundo durante la replicación en curso
+ **CDCThroughputBandwidthTarget**— Ancho de banda de red (KB/segundo) durante la CDC
+ **CDCIncomingCambios**: número de eventos de cambio recibidos de la fuente
+ **CDCChangesMemoryTarget**— Memoria utilizada (MB) para almacenar los cambios en el lado de destino

**Métricas de recursos**
+ **CPUUtilization**— Uso de CPU de la instancia de replicación
+ **FreeableMemory**— Memoria disponible en la instancia de replicación
+ **FreeStorageSpace**— Almacenamiento disponible en la instancia de replicación
+ **NetworkTransmitThroughput**— Rendimiento de red para la instancia de replicación
+ **NetworkReceiveThroughput**— Rendimiento de red para la instancia de replicación

**Métricas de errores**
+ **ErrorsCount**— Número total de errores durante la migración
+ **TableErrorsCount**— Número de errores específicos de la tabla
+ **RecordsErrorsCount**— Número de errores específicos del registro

Cree CloudWatch alarmas para métricas críticas, como `CDCLatencyTarget` recibir notificaciones si `CPUUtilization` el rendimiento de la migración se deteriora.

#### Registros de DMS (registros) CloudWatch
<a name="w2aac23b9c23c13c23"></a>



1. Ve a la consola de Amazon CloudWatch Logs.

1. Busque y elija un elemento de su grupo de registro. Tendrá un aspecto similar a «dms-tasks –».

1. Busque flujos de registro que puedan contener información de error:
   + Flujos con la palabra «error» en el nombre
   + Transmisiones con nombres de tareas IDs o puntos de conexión
   + Los flujos de registro más recientes durante el tiempo de la migración

1. En estos flujos, busque palabras clave como:
   + «error» (error)
   + «exception» (excepción)
   + «failed» (fallo)
   + «warning» (advertencia)

#### Estado de la tarea de DMS (utilizando AWS CLI)
<a name="w2aac23b9c23c13c25"></a>



```
aws dms describe-replication-tasks --filters Name=replication-task id,Values=<task_id> --query
"ReplicationTasks[0].Status"
```

Flujo de estado previsto:

crear → listo → en ejecución → detener → detenido (o fallido)

#### Supervise usando `docdb-dashboarder`
<a name="w2aac23b9c23c13c27"></a>

La `docdb-dashboarder` herramienta proporciona una supervisión integral de los clústeres de Amazon DocumentDB mediante la generación automática de CloudWatch cuadros de mando con las métricas de rendimiento esenciales. Estos paneles muestran métricas críticas a nivel de clúster (retraso de réplica, contadores de operaciones), métricas a nivel de instancia (CPU, memoria, conexiones) y métricas de almacenamiento (uso del volumen, almacenamiento de copias de seguridad). Para las situaciones de migración, la herramienta ofrece paneles especializados que rastrean el progreso de la migración con métricas como el retraso en la replicación de la CDC y las tasas de operación. Los paneles pueden monitorear varios clústeres simultáneamente e incluyen soporte para NVMe instancias respaldadas. Si visualiza estas métricas, los equipos pueden identificar de forma proactiva los cuellos de botella en el rendimiento, optimizar la asignación de recursos y garantizar el buen funcionamiento de sus implementaciones de Amazon DocumentDB. La herramienta elimina la necesidad de crear un panel manual y, al mismo tiempo, proporciona una supervisión uniforme en todos los entornos. Para obtener instrucciones de configuración y opciones de configuración avanzadas, consulte el repositorio de herramientas [Amazon DocumentDB Dashboarder](https://github.com/awslabs/amazon-documentdb-tools/tree/master/monitoring/docdb-dashboarder). GitHub 

## Validación
<a name="mig-runbook-validation"></a>

**Topics**
+ [Lista de comprobación de validación](#w2aac23b9c25c15)
+ [Validación de esquemas e índices](#w2aac23b9c25c17)
+ [Muestreo de datos y validación a nivel de campo](#w2aac23b9c25c19)
+ [Validación mediante herramienta DataDiffer](#w2aac23b9c25c21)

En esta sección se proporciona un proceso de validación detallado para garantizar la coherencia de datos, la integridad y la compatibilidad de las aplicaciones tras la migración:

De **MongoDB** a **Amazon DocumentDB**

o

De **Amazon DocumentDB** a **Amazon DocumentDB**

Los pasos de validación se aplican independientemente del método de migración (AWS DMS, mongodump/mongorestore u otras herramientas).

### Lista de comprobación de validación
<a name="w2aac23b9c25c15"></a>

Compruebe que el número de documentos de cada colección coincide con el de origen y el de destino:

**MongoDB como origen**

```
mongo --host <source_host> --port <port> --username <user> -- password <password> --eval
"db.<collection>.count()"
```

**Amazon DocumentDB como destino**

```
mongo --host <target_host> --port <port> --username <user> -- password <password> --eval
"db.<collection>.count()"
```

### Validación de esquemas e índices
<a name="w2aac23b9c25c17"></a>

Asegúrese de que:
+ Todas las colecciones existen en el destino.
+ Los índices se replican correctamente.
+ Las definiciones de esquema (si se imponen) son idénticas.

**Comprobación de colecciones (origen frente a destino)**

```
mongo --host <source_host> --eval "show collections"
mongo --host <target_host> --ssl --eval "show collections"
```

**Comprobación de índices (origen frente a destino)**

```
mongo --host <source_host> --eval" db.<collection>.getIndexes()"
mongo --host <target_host> --ssl –eval" db.<collection>.getIndexes()"
```

Compare la lista de colecciones para asegurarse de que no haya colecciones faltantes ni adicionales.

Verifique los índices. Para ello, compruebe los nombres de los índices, las definiciones clave, las restricciones únicas y los índices TTL (si los hubiera).

**Comprobación de reglas de validación de esquemas (si usa la validación de esquemas en MongoDB)**

```
mongo --host <source_host> --eval" db.getCollectionInfos({name: '<collection>'})
[0].options.validator"
   mongo --host <target_host> --ssl –eval" db.getCollectionInfos({name: '<collection>'})[0].options.validator"
```

### Muestreo de datos y validación a nivel de campo
<a name="w2aac23b9c25c19"></a>

Puede muestrear documentos de forma aleatoria y comparar campos entre el origen y el destino.

**Muestreo manual**

Obtenga cinco documentos aleatorios (origen):

```
mongo --host <source_host> --eval "db.<collection>.aggregate([{ \$sample: { size: 5 } }])"
```

Obtenga el mismo documento IDs (destino):

```
mongo --host <target_host> --ssl –eval "db.<collection>.find({ _id: { \$in: [<list_of_ids>] } })"
```

**Muestreo automático**

```
import pymongo
# Connect to source and target
source_client = pymongo.MongoClient("<source_uri>")
target_client = pymongo.MongoClient("<target_uri>", ssl=True)
source_db = source_client["<db_name>"]
target_db = target_client["<db_name>"]
# Compare 100 random documents
for doc in source_db.<collection>.aggregate([{ "$sample":
{ "size": 100 } }]):
target_doc = target_db.<collection>.find_one({ "_id":
doc["_id"] })
if target_doc != doc:
print(f"❌ Mismatch in _id: {doc['_id']}")
else:
print(f"✅ Match: {doc['_id']}")
```

### Validación mediante herramienta DataDiffer
<a name="w2aac23b9c25c21"></a>

La [DataDiffer herramienta](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/data-differ) proporciona una forma fiable de comparar los datos entre las bases de datos de origen y destino.

#### Requisitos previos
<a name="w2aac23b9c25c21b5"></a>

Se deben cumplir los siguientes requisitos previos antes de instalar la DataDiffer herramienta:
+ Python 3.7\$1
+ PyMongo biblioteca
+ Conectividad de red con los clústeres de MongoDB de origen y de Amazon DocumentDB de destino

#### Instalación y configuración
<a name="w2aac23b9c25c21b7"></a>

**Clona el repositorio y navega hasta el DataDiffer directorio**

```
git clone https://github.com/awslabs/amazon-documentdb-tools.git
cd amazon-documentdb-tools/migration/data-differ
```

**Instale las dependencias requeridas.**

```
pip install -r requirements.txt
```

#### Ejecución de validación de datos
<a name="w2aac23b9c25c21b9"></a>

**Cree un archivo de configuración (por ejemplo, config.json) con los detalles de la conexión.**

```
{
"source": {
"uri": "mongodb://username:password@source-mongodb-
host:27017/?replicaSet=rs0",
"db": "your_database",
"collection": "your_collection"
},
"target": {
"uri": "mongodb://username:password@target-docdb-
cluster.region.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-
bundle.pem&replicaSet=rs0",
"db": "your_database",
"collection": "your_collection"
},
"options": {
"batch_size": 1000,
"threads": 4,
"sample_size": 0,
"verbose": true
}
}
```

**Ejecute la DataDiffer herramienta**

```
python differ.py --config config.json
```

**En el caso de colecciones grandes, utilice el muestreo para validar un subconjunto de datos.**

```
python differ.py --config config.json --sample-size 10000
```

**Para validar varias colecciones, cree archivos de configuración independientes o utilice el modo por lotes**

```
python differ.py --batch-config batch_config.json
```

#### Interpretación de los resultados
<a name="w2aac23b9c25c21c11"></a>

El resultado que mostrará la herramienta incluirá lo siguiente:
+ Documentos totales de origen y destino
+ Número de documentos coincidentes
+ Número de documentos faltantes
+ Número de documentos con diferencias
+ Informe detallado de las diferencias (si las hubiera)

#### Prácticas recomendadas
<a name="w2aac23b9c25c21c13"></a>

Las siguientes son las prácticas recomendadas a la hora de utilizar la DataDiffer herramienta:
+ **Ejecute por fases**: primero valide los recuentos de documentos, luego tome muestras de los documentos clave y, finalmente, ejecute una comparación completa, si es necesario.
+ **Compruebe si hay diferencias en los esquemas**: Amazon DocumentDB tiene algunas limitaciones en comparación con MongoDB. La herramienta destacará los tipos o las estructuras de datos incompatibles.
+ **Valide durante los períodos de inactividad**: ejecute la validación cuando las operaciones de escritura sean mínimas para garantizar la coherencia.
+ **Supervise el uso de los recursos**: el proceso de comparación puede consumir muchos recursos. Ajuste el tamaño del lote y el número de subprocesos en consecuencia.
+ **Valide los índices**: tras la validación de los datos, asegúrese de que se hayan creado todos los índices necesarios en el clúster de Amazon DocumentDB de destino.
+ **Resultados de la validación de documentos**: mantenga un registro de los resultados de la validación de cada colección como parte de la documentación de migración.

# Migración desde Couchbase Server
<a name="migration-from-couchbase"></a>

**Topics**
+ [Introducción](#introduction)
+ [Comparación con Amazon DocumentDB](#comparison-to-amazon-documentdb)
+ [Discovery](#discovery)
+ [Planificación](#planning)
+ [Migración](#migration)
+ [Validación](#validation)

## Introducción
<a name="introduction"></a>

Esta guía presenta los puntos clave que se deben tener en cuenta al migrar de Couchbase Server a Amazon DocumentDB. Explica las consideraciones para las fases de descubrimiento, planificación, ejecución y validación de la migración. También explica cómo realizar migraciones en línea y fuera de línea.

## Comparación con Amazon DocumentDB
<a name="comparison-to-amazon-documentdb"></a>


|  | **Servidor Couchbase** | **Amazon DocumentDB** | 
| --- | --- | --- | 
| Organización de datos | En las versiones 7.0 y posteriores, los datos se organizan en grupos, ámbitos y colecciones. En versiones anteriores, los datos se organizaban en cubos. | Los datos se organizan en bases de datos y colecciones. | 
| Compatibilidad | Los hay distintos APIs para cada servicio (por ejemplo, datos, índices, búsquedas, etc.). Las búsquedas secundarias utilizan SQL\$1\$1 (antes conocido como N1QL), un lenguaje de consulta basado en el SQL estándar de ANSI, por lo que muchos desarrolladores lo conocen bien. | Amazon DocumentDB es [compatible con la API de MongoDB](compatibility.html). | 
| Arquitectura | El almacenamiento está adjunto a cada instancia del clúster. No se puede escalar la computación de forma independiente del almacenamiento. | Amazon DocumentDB está diseñado para la nube y para evitar las limitaciones de las arquitecturas de bases de datos tradicionales. [Las capas de procesamiento y almacenamiento están separadas](db-clusters-understanding.html) en Amazon DocumentDB y la capa de procesamiento se puede [escalar independientemente](how-it-works.html) del almacenamiento. | 
| Añada capacidad de lectura a pedido | Los clústeres se pueden escalar agregando instancias. Como el almacenamiento está conectado a la instancia en la que se ejecuta el servicio, el tiempo que tarda en ampliarse depende de la cantidad de datos que deban trasladarse a la nueva instancia o reequilibrarse. | Puede lograr el escalado de lectura para su clúster de Amazon DocumentDB [creando hasta 15 réplicas de Amazon DocumentDB](db-cluster-manage-performance.html#db-cluster-manage-scaling-reads) en el clúster. No hay ningún impacto en la capa de almacenamiento. | 
| Recupérese rápidamente de una falla en un nodo | Los clústeres tienen capacidades de conmutación por error automática, pero el tiempo necesario para que el clúster recupere toda su potencia depende de la cantidad de datos que se deban mover a la nueva instancia. | Amazon DocumentDB puede realizar [la conmutación por error del principal](failover.html) normalmente en 30 segundos y restaurar el clúster a su estado completo en 8 a 10 minutos, independientemente de la cantidad de datos del clúster. | 
| Amplíe el almacenamiento a medida que crecen los datos | Para el almacenamiento de clústeres autogestionados y IOs no lo escale automáticamente. | [Almacene y IOs escale](db-cluster-manage-performance.html#db-cluster-manage-scaling-storage) automáticamente en Amazon DocumentDB. | 
| Backup de datos sin afectar el rendimiento | Las copias de seguridad las realiza el servicio de copias de seguridad y no están habilitadas de forma predeterminada. Como el almacenamiento y la computación no están separados, esto puede repercutir en el rendimiento. | Las copias de seguridad de Amazon DocumentDB están habilitadas de forma predeterminada y no se pueden desactivar. Las copias de seguridad las gestiona la capa de almacenamiento, por lo que no tienen ningún impacto en la capa de procesamiento. Amazon DocumentDB admite la [restauración a partir de una instantánea de clúster](backup_restore-restore_from_snapshot.html) y [la restauración a un punto en el tiempo](backup_restore-point_in_time_recovery.html). | 
| Durabilidad de los datos | Puede haber un máximo de 3 réplicas de datos en un clúster para un total de 4 copias. Cada instancia en la que se ejecute el servicio de datos tendrá copias activas y 1, 2 o 3 réplicas de los datos. | Amazon DocumentDB conserva 6 copias de los datos independientemente del número de instancias de cómputo que haya con un quórum de escritura de 4 y sigue siendo verdadero. Los clientes reciben un acuse de recibo cuando la capa de almacenamiento haya conservado 4 copias de los datos. | 
| Coherencia | Se admite la coherencia inmediata de K/V las operaciones. El SDK de Couchbase dirige las K/V solicitudes a la instancia específica que contiene la copia activa de los datos, por lo que, una vez confirmada la actualización, el cliente tiene la garantía de leerla. Con el tiempo, la replicación de las actualizaciones en otros servicios (indexación, búsqueda, análisis, creación de eventos) es coherente. | Con el tiempo, las réplicas de Amazon DocumentDB son coherentes. Si se requieren lecturas de coherencia inmediatas, el cliente puede leer desde la instancia principal. | 
| Replicación | La replicación entre centros de datos (XDCR) proporciona una replicación de datos filtrada, activa-pasiva o activa-activa y activa, de datos en muchísimas topologías. | [Los clústeres globales de Amazon DocumentDB](global-clusters.html) proporcionan replicación activa-pasiva en topologías 1:muchos (hasta 10). | 

## Discovery
<a name="discovery"></a>

La migración a Amazon DocumentDB requiere un conocimiento exhaustivo de la carga de trabajo de la base de datos existente. El descubrimiento de la carga de trabajo es el proceso de analizar la configuración del clúster de Couchbase y las características operativas (conjunto de datos, índices y carga de trabajo) para garantizar una transición fluida con una interrupción mínima.

### Configuración del clúster
<a name="cluster-configuration"></a>

Couchbase utiliza una arquitectura centrada en los servicios, en la que cada capacidad corresponde a un servicio. [Ejecute el siguiente comando en su clúster de Couchbase para determinar qué servicios se están utilizando (consulte Obtener información sobre los nodos):](https://docs.couchbase.com/server/current/rest-api/rest-node-get-info.html)

```
curl -v -u <administrator>:<password> \
  http://<ip-address-or-hostname>:<port>/pools/nodes | \
  jq '[.nodes[].services[]] | unique'
```

Código de salida de ejemplo:

```
[
  "backup",
  "cbas",
  "eventing",
  "fts",
  "index",
  "kv",
  "n1ql"
]
```

Los servicios de Couchbase incluyen lo siguiente:

#### Servicio de datos (kv)
<a name="data-service-kv"></a>

El servicio de datos proporciona read/write acceso a los datos de la memoria y del disco.

[Amazon DocumentDB admite K/V operaciones con datos JSON mediante la API de MongoDB.](java-crud-operations.html)

#### Servicio de consultas (n1ql)
<a name="query-service-n1ql"></a>

El servicio de consultas admite la consulta de datos JSON a través de SQL\$1\$1.

Amazon DocumentDB admite la consulta de datos JSON mediante la API de MongoDB.

#### Servicio de indexación (índice)
<a name="index-service-index"></a>

El servicio de indexación crea y mantiene índices en los datos, lo que permite realizar consultas más rápidas.

Amazon DocumentDB admite un índice principal predeterminado y la creación de índices secundarios en datos JSON mediante la API de MongoDB.

#### Servicio de búsqueda (fts)
<a name="search-service-fts"></a>

El servicio de búsqueda admite la creación de índices para la búsqueda de texto completo.

La función de búsqueda de texto completo nativa de Amazon DocumentDB le permite [realizar búsquedas de texto en conjuntos de datos textuales de gran tamaño mediante índices de texto especiales mediante](text-search.html) la API de MongoDB. Para los casos de uso de búsquedas avanzadas, la [integración de Amazon DocumentDB Zero-ETL con Amazon OpenSearch Service](https://aws.amazon.com/blogs/big-data/amazon-documentdb-zero-etl-integration-with-amazon-opensearch-service-is-now-available/) proporciona capacidades de búsqueda avanzada, como la búsqueda difusa, la búsqueda cruzada entre colecciones y la búsqueda multilingüe, en los datos de Amazon DocumentDB.

#### Servicio de análisis (cbas)
<a name="analytics-service-cbas"></a>

El servicio de análisis permite analizar los datos de JSON prácticamente en tiempo real.

Amazon DocumentDB admite consultas ad hoc en datos JSON mediante la API de MongoDB. También puede [ejecutar consultas complejas en sus datos JSON en Amazon DocumentDB mediante Apache Spark que se ejecuta en Amazon EMR](https://aws.amazon.com/blogs/database/run-complex-queries-on-massive-amounts-of-data-stored-on-your-amazon-documentdb-clusters-using-apache-spark-running-on-amazon-emr/).

#### Servicio de eventos (eventing)
<a name="eventing-service-eventing"></a>

El servicio de eventos ejecuta una lógica empresarial definida por el usuario en respuesta a los cambios en los datos.

Amazon DocumentDB automatiza las cargas de trabajo basadas en eventos mediante la [invocación de AWS Lambda funciones cada vez que los datos cambian con](https://docs.aws.amazon.com/lambda/latest/dg/with-documentdb-tutorial.html) el clúster de Amazon DocumentDB.

#### Servicio de backup (backup)
<a name="backup-service-backup"></a>

El servicio de respaldo programa copias de seguridad de datos completas e incrementales y fusiones de copias de seguridad de datos anteriores.

Amazon DocumentDB realiza copias de seguridad continuas de sus datos en Amazon S3 con un período de retención de 1 a 35 días para que pueda restaurarlos rápidamente en cualquier punto dentro del período de retención de la copia de seguridad. Amazon DocumentDB también toma instantáneas automáticas de los datos como parte de este proceso de copia de seguridad continua. También puede [gestionar las copias de seguridad y la restauración de Amazon DocumentDB](https://aws.amazon.com/blogs/storage/manage-backup-and-restore-of-amazon-documentdb-with-aws-backup/) con. AWS Backup.

### Características operativas
<a name="operational-characteristics"></a>

Utilice la [herramienta de detección de Couchbase para](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/discovery-tool-for-couchbase) obtener la siguiente información sobre su conjunto de datos, índices y carga de trabajo. Esta información le ayudará a dimensionar su clúster de Amazon DocumentDB.

#### Conjunto de datos
<a name="data-set"></a>

La herramienta recupera la siguiente información sobre el depósito, el alcance y la recopilación:

1. nombre del bucket

1. tipo de bucket

1. nombre del ámbito

1. nombre de la colección

1. tamaño total (bytes)

1. total de artículos

1. tamaño del artículo (bytes)

#### Índices
<a name="indexes"></a>

La herramienta recupera las siguientes estadísticas de índice y todas las definiciones de índice de todos los cubos. Tenga en cuenta que los índices principales están excluidos, ya que Amazon DocumentDB crea automáticamente un índice principal para cada colección.

1. nombre del bucket

1. nombre del ámbito

1. nombre de la colección

1. nombre del índice

1. tamaño del índice (bytes)

#### Carga de trabajo
<a name="workload"></a>

La herramienta recupera las métricas de las K/V consultas de N1QL. K/V los valores de las métricas se recopilan a nivel de segmento y las métricas de SQL\$1\$1 se recopilan a nivel de clúster.

Las opciones de la línea de comandos de la herramienta son las siguientes:

```
python3 discovery.py \
  --username <source cluster username> \
  --password <source cluster password> \
  --data_node <data node IP address or DNS name> \
  --admin_port <administration http REST port> \
  --kv_zoom <get bucket statistics for specified interval> \
  --tools_path <full path to Couchbase tools> \
  --index_metrics <gather index definitions and SQL++ metrics> \
  --indexer_port <indexer service http REST port> \
  --n1ql_start <start time for sampling> \
  --n1ql_step <sample interval over the sample period>
```

A continuación se muestra un comando de ejemplo:

```
python3 discovery.py \
  --username username \
  --password ******** \
  --data_node "http://10.0.0.1" \
  --admin_port 8091 \
  --kv_zoom week \
  --tools_path "/opt/couchbase/bin" \
  --index_metrics true \
  --indexer_port 9102 \
  --n1ql_start -60000 \
  --n1ql_step 1000
```

Los valores de las métricas K/V se basarán en muestras cada 10 minutos durante la semana pasada (consulte el [método HTTP y el URI](https://docs.couchbase.com/server/current/rest-api/rest-bucket-stats.html#http-method-and-uri)). Los valores métricos de SQL\$1\$1 se basarán en muestras cada 1 segundo durante los últimos 60 segundos (consulte [las etiquetas generales](https://docs.couchbase.com/server/current/rest-api/rest-statistics-single.html#general-labels)). El resultado del comando estará en los siguientes archivos:

**collection-stats.csv**: información sobre el depósito, el alcance y la recopilación

```
bucket,bucket_type,scope_name,collection_name,total_size,total_items,document_size
beer-sample,membase,_default,_default,2796956,7303,383
gamesim-sample,membase,_default,_default,114275,586,196
pillowfight,membase,_default,_default,1901907769,1000006,1902
travel-sample,membase,inventory,airport,547914,1968,279
travel-sample,membase,inventory,airline,117261,187,628
travel-sample,membase,inventory,route,13402503,24024,558
travel-sample,membase,inventory,landmark,3072746,4495,684
travel-sample,membase,inventory,hotel,4086989,917,4457
...
```

**index-stats.csv**: indexa nombres y tamaños

```
bucket,scope,collection,index-name,index-size
beer-sample,_default,_default,beer_primary,468144
gamesim-sample,_default,_default,gamesim_primary,87081
travel-sample,inventory,airline,def_inventory_airline_primary,198290
travel-sample,inventory,airport,def_inventory_airport_airportname,513805
travel-sample,inventory,airport,def_inventory_airport_city,487289
travel-sample,inventory,airport,def_inventory_airport_faa,526343
travel-sample,inventory,airport,def_inventory_airport_primary,287475
travel-sample,inventory,hotel,def_inventory_hotel_city,497125
...
```

**kv-stats.csv**: obtiene, establece y elimina las métricas de todos los grupos

```
bucket,gets,sets,deletes
beer-sample,0,0,0
gamesim-sample,0,0,0
pillowfight,369,521,194
travel-sample,0,0,0
```

**n1ql-stats.csv**: SQL\$1\$1 selecciona, elimina e inserta métricas para el clúster

```
selects,deletes,inserts
0,132,87
```

**indexes- .txt**<bucket-name>: definiciones de índice de todos los índices del depósito. Tenga en cuenta que los índices principales están excluidos, ya que Amazon DocumentDB crea automáticamente un índice principal para cada colección.

```
CREATE INDEX `def_airportname` ON `travel-sample`(`airportname`)
CREATE INDEX `def_city` ON `travel-sample`(`city`)
CREATE INDEX `def_faa` ON `travel-sample`(`faa`)
CREATE INDEX `def_icao` ON `travel-sample`(`icao`)
CREATE INDEX `def_inventory_airport_city` ON `travel-sample`.`inventory`.`airport`(`city`)
CREATE INDEX `def_inventory_airport_faa` ON `travel-sample`.`inventory`.`airport`(`faa`)
CREATE INDEX `def_inventory_hotel_city` ON `travel-sample`.`inventory`.`hotel`(`city`)
CREATE INDEX `def_inventory_landmark_city` ON `travel-sample`.`inventory`.`landmark`(`city`)
CREATE INDEX `def_sourceairport` ON `travel-sample`(`sourceairport`)
...
```

## Planificación
<a name="planning"></a>

En la fase de planificación, determinará los requisitos del clúster de Amazon DocumentDB y el mapeo de los depósitos, ámbitos y colecciones de Couchbase a las bases de datos y colecciones de Amazon DocumentDB.

### Requisitos del clúster de Amazon DocumentDB
<a name="amazon-documentdb-cluster-requirements"></a>

Utilice los datos recopilados en la fase de descubrimiento para dimensionar el clúster de Amazon DocumentDB. Consulte [Dimensionamiento de instancias](best_practices.html#best_practices-instance_sizing) para obtener más información sobre el tamaño de su clúster de Amazon DocumentDB.

### Asignación de depósitos, ámbitos y colecciones a bases de datos y colecciones
<a name="mapping-buckets-scopes-and-collections-to-databases-and-collections"></a>

Determine las bases de datos y colecciones que existirán en sus clústeres de Amazon DocumentDB. Tenga en cuenta las siguientes opciones en función de cómo estén organizados los datos en su clúster de Couchbase. Estas no son las únicas opciones, pero proporcionan puntos de partida para que los tenga en cuenta.

#### Couchbase Server 6.x o anterior
<a name="couchbase-6x-or-earlier"></a>

##### Couchbase pasa a las colecciones de Amazon DocumentDB
<a name="couchbase-buckets-to-amazon-documentdb-collections"></a>

Migre cada depósito a una colección diferente de Amazon DocumentDB. En este escenario, el valor del documento de Couchbase se utilizará como `id` valor de Amazon `_id` DocumentDB.

![\[Buckets de Couchbase Server 6.x o anteriores para colecciones de Amazon DocumentDB\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/images/buckets-to-collections.png)


#### Couchbase Server 7.0 o posterior
<a name="couchbase-70-or-later"></a>

##### De las colecciones de Couchbase a las colecciones de Amazon DocumentDB
<a name="couchbase-collections-to-amazon-documentdb-collections"></a>

Migre cada colección a una colección diferente de Amazon DocumentDB. En este escenario, el valor del documento de Couchbase se utilizará como `id` valor de Amazon `_id` DocumentDB.

![\[Colecciones de Couchbase Server 7.0 o versiones posteriores a colecciones de Amazon DocumentDB\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/images/collections-to-collections.png)


## Migración
<a name="migration"></a>

### Migración de índices
<a name="index-migration"></a>

La migración a Amazon DocumentDB implica transferir no solo datos, sino también índices para mantener el rendimiento de las consultas y optimizar las operaciones de la base de datos. En esta sección se describe el step-by-step proceso detallado para migrar índices a Amazon DocumentDB y, al mismo tiempo, garantizar la compatibilidad y la eficacia.

Utilice [Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/chat-with-q.html) para convertir `CREATE INDEX` sentencias de SQL\$1\$1 en comandos de Amazon `createIndex()` DocumentDB.

1. Cargue los archivos **indexes-.txt** <bucket name>creados por la herramienta de descubrimiento para Couchbase.

1. Introduzca el siguiente mensaje:

   `Convert the Couchbase CREATE INDEX statements to Amazon DocumentDB createIndex commands`

Amazon Q generará comandos de Amazon DocumentDB `createIndex()` equivalentes. Tenga en cuenta que es posible que tenga que actualizar los nombres de las colecciones en función de la forma en que haya [asignado los buckets, los ámbitos y las colecciones de Couchbase a las colecciones de Amazon DocumentDB](#mapping-buckets-scopes-and-collections-to-databases-and-collections).

Por ejemplo:

**indexes-beer-sample.txt**

```
CREATE INDEX `beerType` ON `beer-sample`(`type`)
CREATE INDEX `code` ON `beer-sample`(`code`) WHERE (`type` = "brewery")
```

Ejemplo de salida de Amazon Q (extracto):

```
db.beerSample.createIndex(
  { "type": 1 },
  {
    "name": "beerType",
    "background": true
  }
)

db.beerSample.createIndex(
  { "code": 1 },
  {
    "name": "code",
    "background": true,
    "partialFilterExpression": { "type": "brewery" }
  }
)
```

Para conocer los índices que Amazon Q no pueda convertir, consulte [Administración de índices e índices de Amazon DocumentDB](managing-indexes.html) [y propiedades de índices](mongo-apis.html#mongo-apis-index) para obtener más información.

### Refactoriza el código para usar MongoDB APIs
<a name="refactor-code-to-use-the-mongodb-apis"></a>

Los clientes usan Couchbase para conectarse al servidor Couchbase SDKs . Los clientes de Amazon DocumentDB utilizan los controladores MongoDB para conectarse a Amazon DocumentDB. Todos los idiomas compatibles con Couchbase también SDKs son compatibles con los controladores de MongoDB. Consulte Controladores [MongoDB](https://www.mongodb.com/docs/drivers/) para obtener más información sobre el controlador para su idioma.

Como Couchbase Server y Amazon DocumentDB APIs son diferentes, tendrá que refactorizar el código para usar la MongoDB adecuada. APIs Puede usar [Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/chat-with-q.html) para convertir las llamadas a la K/V API y las consultas de SQL\$1\$1 en el MongoDB equivalente: APIs

1. Cargue los archivos de código fuente.

1. Introduzca el siguiente mensaje:

   `Convert the Couchbase API code to Amazon DocumentDB API code`

Con el ejemplo de código [Python de Hello Couchbase](https://docs.couchbase.com/python-sdk/current/hello-world/start-using-sdk.html#hello-couchbase), Amazon Q genera lo siguiente (extracto):

```
from datetime import timedelta
from pymongo import MongoClient

# Connection parameters
database_name = "travel-sample"

# Connect to Amazon DocumentDB cluster
client = MongoClient('<Amazon DocumentDB connection string>')

# Get reference to database and collection
db = client['travel-sample']
airline_collection = db['airline']

# upsert document function
def upsert_document(doc):
    print("\nUpsert Result: ")
    try:
        # key will equal: "airline_8091"
        key = doc["type"] + "_" + str(doc["id"])
        doc['_id'] = key # Amazon DocumentDB uses _id as primary key
        result = airline_collection.update_one(
            {'_id': key},
            {'$set': doc},
            upsert=True
        )
        print(f"Modified count: {result.modified_count}")
    except Exception as e:
        print(e)

# get document function
def get_airline_by_key(key):
    print("\nGet Result: ")
    try:
        result = airline_collection.find_one({'_id': key})
        print(result)
    except Exception as e:
        print(e)

# query for document by callsign
def lookup_by_callsign(cs):
    print("\nLookup Result: ")
    try:
        result = airline_collection.find(
            {'callsign': cs},
            {'name': 1, '_id': 0}
        )
        for doc in result:
            print(doc['name'])
    except Exception as e:
        print(e)

# Test document
airline = {
    "type": "airline",
    "id": 8091,
    "callsign": "CBS",
    "iata": None,
    "icao": None,
    "name": "Couchbase Airways",
}

upsert_document(airline)
get_airline_by_key("airline_8091")
lookup_by_callsign("CBS")
```

Consulte [Conexión mediante programación a Amazon DocumentDB para](connect_programmatically.html) ver ejemplos de conexión a Amazon DocumentDB en Python, Node.js, PHP, Go, Java, C\$1/.NET, R y Ruby.

### Seleccione el enfoque de migración
<a name="select-the-migration-approach"></a>

Al migrar datos a Amazon DocumentDB, hay dos opciones:

1. [migración sin conexión](#offline-migration)

1. [migración en línea](#online-migration)

#### Migración sin conexión
<a name="offline-migration"></a>

Considere la posibilidad de realizar una migración fuera de línea cuando:
+ El tiempo de **inactividad es aceptable:** la migración sin conexión implica detener las operaciones de escritura en la base de datos de origen, exportar los datos y, a continuación, importarlos a Amazon DocumentDB. Este proceso provoca un tiempo de inactividad para la aplicación. Si su aplicación o carga de trabajo pueden tolerar este período de falta de disponibilidad, la migración sin conexión es una opción viable.
+ **Migrar conjuntos de datos más pequeños o realizar pruebas de concepto: en el caso de** conjuntos de datos más pequeños, el tiempo necesario para el proceso de exportación e importación es relativamente corto, por lo que la migración sin conexión es un método rápido y sencillo. También es adecuado para el desarrollo, las pruebas y los proof-of-concept entornos en los que el tiempo de inactividad es menos crítico.
+ **La simplicidad es una prioridad:** el método offline, que utiliza cbexport y mongoimport, suele ser el enfoque más sencillo para migrar datos. Evita las complejidades de la captura de datos de cambios (CDC) que implican los métodos de migración en línea.
+ **No es necesario replicar los cambios continuos:** si la base de datos de origen no recibe cambios de forma activa durante la migración, o si esos cambios no son fundamentales para capturarlos y aplicarlos al destino durante el proceso de migración, es apropiado adoptar un enfoque fuera de línea.

**Topics**
+ [Couchbase Server 6.x o anterior](#couchbase-6x-or-earlier-offline)
+ [Couchbase Server 7.0 o posterior](#couchbase-70-or-later-offline)

##### Couchbase Server 6.x o anterior
<a name="couchbase-6x-or-earlier-offline"></a>

##### De Couchbase a la colección Amazon DocumentDB
<a name="couchbase-bucket-to-amazon-documentdb-collection-offline"></a>

Exporte los datos con [cbexport json](https://docs-archive.couchbase.com/server/6.6/tools/cbexport-json.html) para crear un volcado JSON de todos los datos del depósito. Para `--format` esta opción, puede usar `lines` o. `list`

```
cbexport json \
  --cluster <source cluster endpoint> \
  --bucket <bucket name> \
  --format <lines | list> \
  --username <username> \
  --password <password> \
  --output export.json \
  --include-key _id
```

Importe los datos a una colección de Amazon DocumentDB mediante [mongoimport](backup_restore-dump_restore_import_export_data.html#backup_restore-dump_restore_import_export_data-mongoimport) con la opción adecuada para importar las líneas o la lista:

líneas:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --file export.json
```

lista:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --jsonArray \
  --file export.json
```

##### Couchbase Server 7.0 o posterior
<a name="couchbase-70-or-later-offline"></a>

Para realizar una migración sin conexión, utilice las herramientas cbexport y mongoimport:

##### Depósito de Couchbase con alcance y colección predeterminados
<a name="couchbase-bucket-with-default-scope-and-default-collection-offline"></a>

Exporte los datos con [cbexport json](https://docs.couchbase.com/server/current/tools/cbexport-json.html) para crear un volcado JSON de todas las colecciones del depósito. Para `--format` esta opción, puede usar `lines` o. `list`

```
cbexport json \
  --cluster <source cluster endpoint> \
  --bucket <bucket name> \
  --format <lines | list> \
  --username <username> \
  --password <password> \
  --output export.json \
  --include-key _id
```

Importe los datos a una colección de Amazon DocumentDB mediante [mongoimport](backup_restore-dump_restore_import_export_data.html#backup_restore-dump_restore_import_export_data-mongoimport) con la opción adecuada para importar las líneas o la lista:

líneas:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --file export.json
```

lista:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --jsonArray \
  --file export.json
```

##### De las colecciones de Couchbase a las colecciones de Amazon DocumentDB
<a name="couchbase-collections-to-amazon-documentdb-collections-offline"></a>

Exporte los datos mediante [cbexport json](https://docs.couchbase.com/server/current/tools/cbexport-json.html) para crear un volcado de JSON de cada colección. Usa la `--include-data` opción para exportar cada colección. Para la `--format` opción puedes usar `lines` o`list`. Utilice las `--collection-field` opciones `--scope-field` y para almacenar el nombre del ámbito y la colección en los campos especificados de cada documento JSON.

```
cbexport json \
  --cluster <source cluster endpoint> \
  --bucket <bucket name> \
  --include-data <scope name>.<collection name> \
  --format <lines | list> \
  --username <username> \
  --password <password> \
  --output export.json \
  --include-key _id \
  --scope-field "_scope" \
  --collection-field "_collection"
```

Como cbexport agregó los `_collection` campos `_scope` y a todos los documentos exportados, puede eliminarlos de todos los documentos del archivo de exportación mediante la función de búsqueda y reemplazo`sed`, o mediante el método que prefiera.

Importe los datos de cada colección a una colección de Amazon DocumentDB mediante [mongoimport](backup_restore-dump_restore_import_export_data.html#backup_restore-dump_restore_import_export_data-mongoimport) con la opción adecuada para importar las líneas o la lista:

líneas:

```
mongoimport \
--db <database> \
--collection <collection> \
--uri "<Amazon DocumentDB cluster connection string>" \
--file export.json
```

lista:

```
mongoimport \
--db <database> \
--collection <collection> \
--uri "<Amazon DocumentDB cluster connection string>" \
--jsonArray \
--file export.json
```

#### Migración en línea
<a name="online-migration"></a>

Considere la posibilidad de realizar una migración en línea cuando necesite minimizar el tiempo de inactividad y los cambios continuos deban replicarse en Amazon DocumentDB prácticamente en tiempo real.

Consulte [Cómo realizar una migración en vivo de Couchbase a Amazon DocumentDB para](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/migration-utility-for-couchbase) obtener información sobre cómo realizar una migración en vivo a Amazon DocumentDB. La documentación explica cómo implementar la solución y realizar una migración en vivo de un bucket a un clúster de Amazon DocumentDB.

**Topics**
+ [Couchbase Server 6.x o anterior](#couchbase-6x-or-earlier-online)
+ [Couchbase Server 7.0 o posterior](#couchbase-70-or-later-online)

##### Couchbase Server 6.x o anterior
<a name="couchbase-6x-or-earlier-online"></a>

##### De Couchbase a la colección Amazon DocumentDB
<a name="couchbase-bucket-to-amazon-documentdb-collection-online"></a>

La [utilidad de migración de Couchbase está preconfigurada para](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/migration-utility-for-couchbase) realizar una migración en línea de un bucket de Couchbase a una colección de Amazon DocumentDB. Si observamos la configuración del [conector colector](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml), el `document.id.strategy` parámetro está configurado para usar el valor de la clave del mensaje como valor de `_id` campo (consulte las propiedades de la estrategia del identificador del conector [colector](https://www.mongodb.com/docs/kafka-connector/current/sink-connector/configuration-properties/id-strategy/#std-label-sink-configuration-id-strategy)):

```
ConnectorConfiguration:
  document.id.strategy: 'com.mongodb.kafka.connect.sink.processor.id.strategy.ProvidedInKeyStrategy'
```

##### Couchbase Server 7.0 o posterior
<a name="couchbase-70-or-later-online"></a>

##### Depósito de Couchbase con alcance y colección predeterminados
<a name="couchbase-bucket-with-default-scope-and-default-collection-online"></a>

La [utilidad de migración de Couchbase está preconfigurada para](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/migration-utility-for-couchbase) realizar una migración en línea de un bucket de Couchbase a una colección de Amazon DocumentDB. Si observamos la configuración del [conector colector](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml), el `document.id.strategy` parámetro está configurado para usar el valor de la clave del mensaje como valor de `_id` campo (consulte las propiedades de la estrategia del identificador del conector [colector](https://www.mongodb.com/docs/kafka-connector/current/sink-connector/configuration-properties/id-strategy/#std-label-sink-configuration-id-strategy)):

```
ConnectorConfiguration:
  document.id.strategy: 'com.mongodb.kafka.connect.sink.processor.id.strategy.ProvidedInKeyStrategy'
```

##### De las colecciones de Couchbase a las colecciones de Amazon DocumentDB
<a name="couchbase-collections-to-amazon-documentdb-collections-online"></a>

[Configure el [conector de origen](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml) para transmitir cada colección de Couchbase de cada ámbito a un tema independiente (consulte las opciones de configuración de fuentes).](https://docs.couchbase.com/kafka-connector/current/source-configuration-options.html#couchbase.collections) Por ejemplo:

```
ConnectorConfiguration:
  # add couchbase.collections configuration
  couchbase.collections: '<scope 1>.<collection 1>, <scope 1>.<collection 2>, ...'
```

Configure el [conector receptor](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml) para transmitir desde cada tema a una colección independiente de Amazon DocumentDB (consulte [Propiedades de configuración del conector receptor](https://github.com/mongodb-labs/mongo-kafka/blob/master/docs/sink.md#sink-connector-configuration-properties)). Por ejemplo:

```
ConnectorConfiguration:
  # remove collection configuration  
  #collection: 'test'
  
  # modify topics configuration
  topics: '<bucket>.<scope 1>.<collection 1>, <bucket>.<scope 1>.<collection 2>, ...'

  # add topic.override.%s.%s configurations for each topic 
  topic.override.<bucket>.<scope 1>.<collection 1>.collection: '<collection>'
  topic.override.<bucket>.<scope 1>.<collection 2>.collection: '<collection>'
```

## Validación
<a name="validation"></a>

En esta sección se proporciona un proceso de validación detallado para comprobar la coherencia e integridad de los datos tras la migración a Amazon DocumentDB. Los pasos de validación se aplican independientemente del método de migración.

**Topics**
+ [Compruebe que todas las colecciones existan en el destino](#validation-checklist-step-1)
+ [Verifique el recuento de documentos entre los clústeres de origen y destino](#validation-checklist-step-2)
+ [Compare documentos entre los clústeres de origen y destino](#validation-checklist-step-3)

### Compruebe que todas las colecciones existan en el destino
<a name="validation-checklist-step-1"></a>

#### Fuente de Couchbase
<a name="source-verify-collections"></a>

opción 1: consulta el banco de trabajo

```
SELECT RAW `path`
  FROM system:keyspaces
  WHERE `bucket` = '<bucket>'
```

opción 2: herramienta [cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT RAW `path`
       FROM system:keyspaces
       WHERE `bucket` = '<bucket>'"
```

#### Amazon DocumentDB como destino
<a name="target-verify-collections"></a>

mongosh (consulte [Conectarse a su clúster de Amazon DocumentDB):](connect-ec2-manual.html#manual-connect-ec2.connect-use)

```
db.getSiblingDB('<database>')
db.getCollectionNames()
```

### Verifique el recuento de documentos entre los clústeres de origen y destino
<a name="validation-checklist-step-2"></a>

#### Fuente de Couchbase
<a name="source-verify-document-count"></a>

##### Couchbase Server 6.x o anterior
<a name="source-verify-document-count-couchbase-6x-or-earlier"></a>

opción 1: consulta el banco de trabajo

```
SELECT COUNT(*)
FROM `<bucket>`
```

[opción 2: cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT COUNT(*)
       FROM `<bucket:>`"
```

##### Couchbase Server 7.0 o posterior
<a name="source-verify-document-count-couchbase-70-or-later"></a>

opción 1: consulta el banco de trabajo

```
SELECT COUNT(*)
FROM `<bucket>`.`<scope>`.`<collection>`
```

[opción 2: cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT COUNT(*)
       FROM `<bucket:>`.`<scope>`.`<collection>`"
```

#### Amazon DocumentDB como destino
<a name="target-verify-document-count"></a>

mongosh (consulte [Conectarse a su clúster de Amazon DocumentDB):](connect-ec2-manual.html#manual-connect-ec2.connect-use)

```
db = db.getSiblingDB('<database>')
db.getCollection('<collection>').countDocuments()
```

### Compare documentos entre los clústeres de origen y destino
<a name="validation-checklist-step-3"></a>

#### Fuente de Couchbase
<a name="source-compare-documents"></a>

##### Couchbase Server 6.x o anterior
<a name="source-compare-documents-couchbase-6x-or-earlier"></a>

opción 1: consulta el banco de trabajo

```
SELECT META().id as _id, *
FROM `<bucket>`
LIMIT 5
```

[opción 2: cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> 
  -u <username> \
  -p <password> \
  -q "SELECT META().id as _id, *
       FROM `<bucket>` \
       LIMIT 5"
```

##### Couchbase Server 7.0 o posterior
<a name="source-compare-documents-couchbase-70-or-later"></a>

opción 1: consulta el banco de trabajo

```
SELECT COUNT(*)
FROM `<bucket>`.`<scope>`.`<collection>`
```

[opción 2: cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT COUNT(*)
       FROM `<bucket:>`.`<scope>`.`<collection>`"
```

#### Amazon DocumentDB como destino
<a name="target-compare-documents"></a>

mongosh (consulte [Conectarse a su clúster de Amazon DocumentDB):](connect-ec2-manual.html#manual-connect-ec2.connect-use)

```
db = db.getSiblingDB('<database>')
db.getCollection('<collection>').find({
  _id: {
    $in: [
      <_id 1>, <_id 2>, <_id 3>, <_id 4>, <_id 5>
    ]
  }
})
```