Migración de datos mediante mongodump y mongorestore
mongodump y mongorestore son herramientas de copia de respaldo y restauración proporcionadas por el cliente MongoDB. Puede instalar un cliente MongoDB en el dispositivo local o ECS y usar las herramientas mongodump y mongorestore para migrar sus bases de datos MongoDB u otras bases de datos MongoDB en la nube a instancias DDS.
Precauciones
- Las herramientas mongodump y mongorestore solo admiten la migración completa. Para garantizar la coherencia de los datos, detenga los servicios en la base de datos de origen y deje de escribir datos en la base de datos de origen antes de la migración.
- Se recomienda que realice la migración durante las horas fuera de pico para evitar afectar a los servicios.
- No se pueden migrar las bases de datos del sistema local y del administrador.
- Asegúrese de que no se ha creado ningún conjunto de servicios en el admin de bases de datos del sistema y local en la base de datos de origen. Si ya hay un conjunto de servicios, migrarlos fuera de las bases de datos del sistema admin y local antes de la migración.
- Antes de importar datos, asegúrese de que los índices necesarios estén presentes en la base de datos de origen. Elimine los índices innecesarios y cree los índices necesarios antes de la migración.
- Si elige migrar un clúster con fragmentos, debe crear un conjunto de fragmentos en la base de datos de destino y configurar el sharding. Además, los índices deben crearse antes de la migración.
- Si la copia de respaldo que utiliza la herramienta mongodump falla (por ejemplo, se informa de un error cuando el progreso de la copia de respaldo alcanza el 97%), se recomienda aumentar el espacio de almacenamiento de la VM y reservar algo de espacio redundante antes de realizar la copia de respaldo de nuevo.
- El usuario rwuser solo puede operar tablas de base de datos de servicio. Se recomienda especificar bases de datos y tablas para importar y exportar solo datos de servicio. De lo contrario, el problema de permisos insuficientes puede ocurrir durante la importación y exportación completas.
Prerrequisitos
- Prepare un ECS o un dispositivo que pueda acceder a DDS.
- Para conectarse a una instancia DDS a través de una red privada desde un ECS, cree e inicie sesión en el ECS. Para obtener más información, consulte Comprar un ECS e iniciar sesión en un ECS
- Para enlazar un EIP a una instancia de base de datos:
- Enlaza un EIP a un nodo en la instancia de base de datos. Para obtener más información sobre cómo vincular un EIP a un nodo, consulte "Unir un EIP" en el Tareas iniciales de Document Database Service .
- Asegúrese de que su dispositivo local pueda acceder al EIP que se ha vinculado a la instancia de base de datos.
- Se ha instalado una herramienta de migración en el ECS preparado.
Para obtener más información sobre cómo instalar la herramienta de migración, consulte ¿Cómo puedo instalar un cliente MongoDB?
- Las herramientas mongodump y mongorestore son parte del paquete de instalación del cliente MongoDB.
- La versión de cliente de MongoDB debe coincidir con la versión de instancia. De lo contrario, pueden producirse problemas de compatibilidad.
Exportación de datos
- Inicie sesión en el ECS o en el dispositivo que puede acceder a DDS.
- Haga una copia de respaldo de los datos de la base de datos de origen con la herramienta mongodump.
En este ejemplo se utiliza una conexión SSL. Si selecciona una conexión sin cifrar, elimine --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates del siguiente comando.
./mongodump --host <DB_HOST> --port <DB_PORT> --authenticationDatabase <AUTH_DB> -u <DB_USER> --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates --db <DB_NAME> --collection <DB_COLLECTION> --gzip --archive=<Name of the backup file that contains the file path>
Tabla 1 Descripción del parámetro Parámetro
Descripción
<DB_HOST>
Dirección de la base de datos
<DB_PORT>
Puerto de base de datos
<DB_USER>
Nombre de usuario de base de datos
<AUTH_DB>
Base de datos que almacena información de <DB_USER>. Generalmente, el valor es admin.
<FILE_PATH>
Ruta de acceso para almacenar el certificado raíz
<DB_NAME>
Nombre de la base de datos que se va a migrar.
<DB_COLLECTION>
Recopilación en la base de datos que se va a migrar
Introduzca la contraseña del administrador de la base de datos cuando se le solicite:
Enter password:
Después de ejecutar el comando, el archivo especificado por archiving es el archivo de copia de respaldo final. El siguiente comando usa backup.tar.gz como ejemplo.
./mongodump --host 192.168.xx.xx --port 8635 --authenticationDatabase admin -u rwuser --ssl --sslCAFile/tmp/ca.crt --sslAllowInvalidCertificates --db test --collection usertable --gzip --archive=backup.tar.gz
2019-03-04T18:42:10.687+0800 writing admin.system.users to 2019-03-04T18:42:10.688+0800 done dumping admin.system.users (1 document) 2019-03-04T18:42:10.688+0800 writing admin.system.roles to 2019-03-04T18:42:10.690+0800 done dumping admin.system.roles (0 documents) 2019-03-04T18:42:10.690+0800 writing admin.system.version to 2019-03-04T18:42:10.691+0800 done dumping admin.system.version (2 documents) 2019-03-04T18:42:10.691+0800 writing test.test_collection to 2019-03-04T18:42:10.691+0800 writing admin.system.profile to 2019-03-04T18:42:10.692+0800 done dumping admin.system.profile (4 documents) 2019-03-04T18:42:10.695+0800 done dumping test.test_collection (198 documents)
Importar datos
- Inicie sesión en el ECS o en el dispositivo que utilizará para acceder a DDS.
- Cargue los datos que se van a importar al ECS o al dispositivo.
Seleccione un método de carga basado en el sistema operativo que está utilizando.
- En Linux, por ejemplo, puede usar el protocolo de copia segura (SCP):
scp -r <IDENTITY_DIR> <REMOTE_USER>@<REMOTE_ADDRESS>:<REMOTE_DIR>
- En Windows, cargue el directorio de copia de respaldo en el ECS mediante una herramienta de transferencia de archivos.
- En Linux, por ejemplo, puede usar el protocolo de copia segura (SCP):
- Importe los datos de copia de respaldo a DDS.
En este ejemplo se utiliza una conexión SSL. Si utiliza una conexión sin cifrar, elimine--ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates del siguiente comando.
./mongorestore --host <DB_HOST> --port <DB_PORT> --authenticationDatabase <AUTH_DB> -u<DB_USER> --ssl --sslCAFile <FILE_PATH> --sslAllowInvalidCertificates --db <DB_NAME> --collection <DB_COLLECTION> --gzip --archive=<Name of the backup file that contains the file path>
Tabla 3 Descripción del parámetro Parámetro
Descripción
<DB_HOST>
Dirección de base de datos DDS
<DB_PORT>
Puerto de base de datos
<AUTH_DB>
La base de datos que autentica DB_USER. Generalmente, el valor es admin.
<DB_USER>
Nombre de cuenta del administrador de la base de datos. El valor predeterminado es rwuser.
<FILE_PATH>
Ruta de acceso para almacenar el certificado raíz
<DB_NAME>
Nombre de la base de datos que se va a migrar.
<DB_COLLECTION>
Recopilación en la base de datos que se va a migrar
Introduzca la contraseña del administrador de la base de datos cuando se le solicite:
Enter password:
A continuación se presenta un ejemplo:
./mongorestore --host 192.168.xx.xx --port 8635 --authenticationDatabase admin -u rwuser --ssl --sslCAFile/tmp/ca.crt --sslAllowInvalidCertificates --db test --collection usertable --gzip --archive=backup.tar.gz
2019-03-05T14:19:43.240+0800 preparing collections to restore from 2019-03-05T14:19:43.243+0800 reading metadata for test.test_collection from dump/test/test_collection.metadata.json 2019-03-05T14:19:43.263+0800 restoring test.test_collection from dump/test/test_collection.bson 2019-03-05T14:19:43.271+0800 restoring indexes for collection test.test_collection from metadata 2019-03-05T14:19:43.273+0800 finished restoring test.test_collection (198 documents) 2019-03-05T14:19:43.273+0800 restoring users from dump/admin/system.users.bson 2019-03-05T14:19:43.305+0800 roles file 'dump/admin/system.roles.bson' is empty; skipping roles restoration 2019-03-05T14:19:43.305+0800 restoring roles from dump/admin/system.roles.bson 2019-03-05T14:19:43.333+0800 done
Problemas relacionados
Cuando realiza una copia de respaldo de toda la instancia mediante mongodump y mongorestore, la verificación de permisos falla.