Cómo migrar MongoDB 2.6 a 3.0 con WiredTiger

Cómo migrar MongoDB 2.6 a 3.0 con WiredTiger

MongoDB 3.0 introduce un nuevo motor de almacenamiento llamado wiredTigerque reduce considerablemente el uso de memoria y espacio en disco.

Dado que mi base de datos tiene actualmente ~20 millones de objetos y utiliza ~70 GB de RAM, esta actualización llega en el momento justo para posponer una actualización de hardware.

¿Cómo se migra una instalación existente de MongoDB 2.6 a 3.0 y al mismo tiempo se obtienen los beneficios de wiredTiger?

La documentación hace referencia a opciones que provocan errores de inicio que impiden que MongoDB se inicie. Además, las ubicaciones de los archivos no coinciden con las de Ubuntu (Servidor 14.04 LTS).

Respuesta1

En instalaciones predeterminadas, el archivo de configuración está en /etc/mongod.conf. Lo que los documentos de MongoDB no mencionan es que al migrar a WiredTiger también necesitamos actualizar el archivo de configuración al nuevo formato YAML introducido en 2.6.
Hasta donde puedo decir, la engineopción solo está disponible en el nuevo formato de configuración.
Migrar desde el antiguo motor de almacenamiento consiste en crear un volcado de base de datos, cerrar mongodb, cambiar la configuración y luego importar el volcado al nuevo motor de almacenamiento.

  1. Crea una copia de seguridad. En serio. Necesitamos un volcado de base de datos que luego importaremos al nuevo motor de base de datos:

    mongodump -d db_name /backup/path/  
    
  2. Detener el servicio mongodb

    sudo service mongod stop  
    
  3. Mueva datos desde la ubicación actual a otro lugar (MongoDB no se iniciará si el directorio de datos contiene archivos generados por el motor de almacenamiento anterior).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Actualice MongoDB a la versión 3.0 (desdehttp://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-ubuntu/):

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10  
    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list  
    sudo apt-get update  
    sudo apt-get install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools  
    
  5. Convierta el archivo de configuración del formato antiguo (anterior a 2.6) al formato YAML actual. El mínimo indispensable es:

    storage:  
        dbPath: "/var/lib/mongodb"  
        engine: wiredTiger  
    
    systemLog:  
       destination: file  
       path: "/var/log/mongodb/mongod.log"  
       logAppend: true  
    
    net:  
        bindIp: 127.0.0.1  
        port: 27017  
        # Enable the HTTP interface (Defaults to port 28017).  
        http:  
            enabled: false  
    

    Asegúrese de que no queden líneas en el formato anterior o MongoDB no se iniciará.

    La documentación completa para el archivo de configuración se encuentra en:http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Opcionalmente haga una copia de seguridad del registro:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Reiniciar mongodb

    sudo service mongod start
    
  8. Cargue la copia de seguridad para convertir los datos a un nuevo motor de almacenamiento

    mongorestore /backup/location
    

Después de comprobar que todos sus datos están bien, puede eliminar el directorio con el formato de datos anterior.

sudo rm -r /var/lib/mongodb_26/

Tenga en cuenta que para conjuntos de réplicas y clústeres fragmentados existen algunos pasos adicionales:http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage-engine-to-wiredtiger

Respuesta2

Utilizando elformato de archivo de configuración antiguo, tuve éxito con:

motordealmacenamiento=Tigre cableado

información relacionada