Como migrar o MongoDB 2.6 para 3.0 com o WiredTiger

8

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

Como meu banco de dados está atualmente em ~ 20 milhões de objetos e usando até ~ 70 GB de RAM, essa 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 o início do MongoDB. Além disso, os locais dos arquivos não correspondem aos do Ubuntu (Server 14.04 LTS).

    
por Emanuel Ey 01.07.2015 / 19:43

2 respostas

14

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 no 2.6. Tanto quanto eu posso dizer a opção engine só está disponível no novo formato de configuração.
A migração do mecanismo de armazenamento antigo consiste em criar um dump de 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. A sério. Precisamos de um dump de banco de dados que será importado 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 algum 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 (de link ):

    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 do antigo (pré 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 nenhuma linha no formato antigo permaneça, ou o MongoDB não será iniciado.

    A documentação completa do arquivo de configuração está em: link

  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
    

Após 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, há algumas etapas adicionais: link

    
por Emanuel Ey 01.07.2015 / 19:43
1

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

storageEngine=wiredTiger
    
por unkx80 22.11.2015 / 09:31

Tags