Como migrar MongoDB 2.6 para 3.0 com WiredTiger

Como migrar MongoDB 2.6 para 3.0 com WiredTiger

O MongoDB 3.0 introduz um novo mecanismo de armazenamento chamado wiredTigerque resulta em uma grande redução no uso de memória e espaço em disco.

Como meu banco de dados está atualmente com aproximadamente 20 milhões de objetos e usando aproximadamente 70 GB de RAM, esta atualização chega no momento certo para adiar uma atualização de hardware.

Como você migra uma instalação existente do MongoDB 2.6 para 3.0 e ao mesmo tempo obtém os benefícios do wiredTiger?

A documentação refere-se a opções que resultam em erros de inicialização que impedem a inicialização do MongoDB. Além disso, os locais dos arquivos não correspondem aos do Ubuntu (Servidor 14.04 LTS).

Responder1

Nas instalações padrão, o arquivo de configuração está em /etc/mongod.conf. O que os documentos do MongoDB não mencionam é que ao migrar para o WiredTiger também precisamos atualizar o arquivo de configuração para o novo formato YAML introduzido na versão 2.6.
Pelo que sei, a engineopção só está disponível no novo formato de configuração.
A migração do mecanismo de armazenamento antigo consiste em criar um dump do banco de dados, desligar o mongodb, alterar as configurações e depois importar o dump para o novo mecanismo de armazenamento.

  1. Crie um backup. Seriamente. Precisamos de um dump do banco de dados que importaremos para o novo mecanismo de banco de dados:

    mongodump -d db_name /backup/path/  
    
  2. Pare o serviço mongodb

    sudo service mongod stop  
    
  3. Mova os dados do local atual para outro lugar (o MongoDB não será inicializado se o diretório de dados contiver arquivos gerados pelo mecanismo de armazenamento antigo).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Atualize o MongoDB para a versão 3.0 (dehttp://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. Converta o arquivo de configuração antigo (anterior à 2.6) para o formato YAML atual. O mínimo é:

    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  
    

    Certifique-se de que não restem linhas no formato antigo ou o MongoDB não será iniciado.

    A documentação completa do arquivo de configuração está em:http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Opcionalmente, faça um backup do log:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Reinicie o mongodb

    sudo service mongod start
    
  8. Carregue o backup para converter dados em um novo mecanismo de armazenamento

    mongorestore /backup/location
    

Depois de verificar se todos os seus dados estão corretos, você pode excluir o diretório com o formato de dados antigo

sudo rm -r /var/lib/mongodb_26/

Observe que para conjuntos de réplicas e clusters fragmentados existem algumas etapas adicionais:http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage-engine-to-wiredtiger

Responder2

Usando oformato de arquivo de configuração antigo, tive sucesso com:

storageEngine=wiredTiger

informação relacionada