MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/
Manual do banco de dados

Notas de versão para MongoDB 1.8

O MongoDB 1.8 é uma versão de produção incremental padrão e funciona como uma substituição opcional do MongoDB 1.6, exceto:

Leia todas as notas de versão antes de atualizar e garanta que nenhuma alteração afete seu sistema.

  1. Baixe o v1.8.x binários da página de download do MongoDB.

  2. Desligue sua instância do mongod.

  3. Substitua o binário existente pelo 1.8.x mongod binário.

  4. Reinicie o MongoDB.

1.8.x os secundários podem replicar a partir de 1.6.x primários.

1.6.x os secundários não podem replicar a partir de 1.8.x primários.

Portanto, para atualizar um conjunto de réplicas, você deve primeiro substituir todos os secundários e, em seguida, o primário.

Por exemplo, suponha que você tenha um conjunto de réplicas com um primário, um árbitro e vários secundários. Para atualizar o conjunto, faça o seguinte:

  1. Para o árbitro:

    1. Desligue o arbiter.

    2. Reinicie-o com 1.8.x binário na página de download do MongoDB.

  2. Altere sua configuração (opcional) para evitar a eleição de uma nova primária.

    É possível que, quando você começar a desligar os membros do conjunto, uma nova primária seja eleita. Para evitar isso, você pode dar a todos os secundários uma prioridade de 0 antes de atualizar e, em seguida, alterá-los novamente. Para fazer isso:

    1. Registre sua configuração atual. Execute rs.config() e cole os resultados em um arquivo de texto.

    2. Atualize sua configuração para que todos os secundários tenham prioridade 0. Por exemplo:

      config = rs.conf()
      {
      "_id" : "foo",
      "version" : 3,
      "members" : [
      {
      "_id" : 0,
      "host" : "ubuntu:27017"
      },
      {
      "_id" : 1,
      "host" : "ubuntu:27018"
      },
      {
      "_id" : 2,
      "host" : "ubuntu:27019",
      "arbiterOnly" : true
      }
      {
      "_id" : 3,
      "host" : "ubuntu:27020"
      },
      {
      "_id" : 4,
      "host" : "ubuntu:27021"
      },
      ]
      }
      config.version++
      3
      rs.isMaster()
      {
      "setName" : "foo",
      "ismaster" : false,
      "secondary" : true,
      "hosts" : [
      "ubuntu:27017",
      "ubuntu:27018"
      ],
      "arbiters" : [
      "ubuntu:27019"
      ],
      "primary" : "ubuntu:27018",
      "ok" : 1
      }
      // for each secondary
      config.members[0].priority = 0
      config.members[3].priority = 0
      config.members[4].priority = 0
      rs.reconfig(config)
  3. Para cada secundário:

    1. Desative o secundário.

    2. Reinicie-o com 1.8.x binário na página de download do MongoDB.

  4. Se você alterou a configuração, altere-a de volta ao estado original:

    config = rs.conf()
    config.version++
    config.members[0].priority = 1
    config.members[3].priority = 1
    config.members[4].priority = 1
    rs.reconfig(config)
  5. Desligue o primary (o servidor 1.6 final) e reinicie-o com o 1.8.x binário na página de download do MongoDB.

  1. Desligue o balanceador:

    mongo <a_mongos_hostname>
    use config
    db.settings.update({_id:"balancer"},{$set : {stopped:true}}, true)
  2. Para cada fragmento:

  3. Para cada mongos:

    1. Encerre o processo mongos.

    2. Reinicie-o com 1.8.x binário na página de download do MongoDB.

  4. Para cada servidor de configuração:

    1. Desligue o processo do servidor de configuração .

    2. Reinicie-o com 1.8.x binário na página de download do MongoDB.

  5. Ligue o balanceador:

    use config
    db.settings.update({_id:"balancer"},{$set : {stopped:false}})

Se, por algum motivo, você precisar voltar para 1.6, siga as etapas acima na ordem inversa. Tenha cuidado para não inserir nenhum documento maior que 4MB enquanto executava em 1.8 (onde o tamanho máximo aumentou para 16MB). Se tiver, você receberá erros quando o servidor tentar ler esses documentos.

Retornando ao 1.6 após usar o 1.8 O registro no diário funciona bem, pois o registro no diário não muda nada no formato do arquivo de dados. Suponha que você esteja executando 1.8.x com o registro no diário ativado e decida voltar para 1.6. Existem dois cenários:

  • Se você desligar de forma limpa com 1.8.x, apenas reinicie com o binário mongod 1.6 .

  • Se 1.8.x desligue-o de forma impura, inicie 1.8.x novamente e deixe os arquivos do diário serem executados para corrigir qualquer problema (gravações incompletas) que possam ter existido no momento da falha. Em seguida, desligue 1.8.x de forma limpa e reinicie com o binário mongod 1.6 .

O MongoDB agora oferece suporte ao registro no diário com gravação para facilitar a rápida recuperação de falhas e a durabilidade no storage engine. Com o registro no diário ativado, um mongod pode ser reiniciado rapidamente após uma falha sem a necessidade de reparar as coleções. Um pipeline de agregação torna possível fazer agregação.

Índices esparsos são índices que incluem apenas documentos que contêm os campos especificados no índice. Os documentos que não possuem o campo não aparecerão no índice. Isso pode reduzir significativamente o tamanho do índice para índices de campos que contêm apenas um subconjunto de documentos em uma collection.

Os índices cobertos permitem que o MongoDB responda às queries inteiramente a partir do índice quando a query seleciona apenas os campos que o índice contém.

O comando mapReduce suporta novas opções que permitem atualizar incrementalmente coleções existentes. Anteriormente, um tarefa de MapReduce poderia gerar saída para uma collection temporária ou para uma collection permanente nomeada, que seria substituída por novos dados.

Agora você tem várias opções para a saída de seus trabalhos do MapReduce:

  • Você pode mesclar a saída do MapReduce em uma coleção existente. O resultado da fase Reduzir substituirá as chaves existentes na collection de saída, se ela já existir. Outras chaves permanecerão na coleção.

  • Agora você pode reduzir novamente sua saída com o conteúdo de uma coleção existente. Cada saída chave pela fase de redução será reduzida com o documento existente na coleta de saída.

  • Você pode substituir a coleta de saída existente pelos novos resultados do tarefa do MapReduce (equivalente à configuração de uma coleta de saída permanente em versões anteriores)

  • Você pode calcular o MapReduce in-line e retornar resultados ao chamador sem persistir os resultados do tarefa. Isso é semelhante às collections temporárias geradas em versões anteriores, exceto que os resultados são limitados a 8MB.

Para obter mais informações, consulte as opções de campo out no documento mapReduce .

  • Correção de migração de fragmentação ao mover blocos maiores.

  • Correção de durabilidade com indexação em segundo plano.

  • Corrigiu o problema de simultaneidade do mongos com muitas conexões de entrada.

  • Todas as alterações de 1.7.x série.

  • Correções de erros.

  • Suporte inicial do índice coberto .

  • Distinct pode usar dados de índices quando possível.

  • mapReduce pode mesclar ou reduzir resultados em uma coleção existente.

  • mongod rastreia e o mongostat exibe o uso da rede. Consulte mongostat.

  • Melhorias na estabilidade da fragmentação.

  • $rename operador permite renomear campos em um documento.

  • db.eval() para não bloquear.

  • Queries geográficas com fragmentação.

  • mongostat --discover opção

  • Aprimoramentos da divisão de chunks.

  • A réplica define aprimoramentos de rede para servidores por trás de um nat.

  • Muitas melhorias de desempenho de fragmentação.

  • Melhor suporte para $elemMatch em primitivos em arrays incorporados.

  • Aprimoramentos do otimizador de query em queries de intervalo.

  • Melhorias no serviço do Windows.

  • Melhorias na configuração do conjunto de réplicas.

  • $pull funciona com primitivos em arrays.

  • Melhorias no desempenho de fragmentação para cargas de inserção pesadas.

  • Suporte de atraso secundário para conjuntos de réplicas.

  • local.system.replset.settings.getLastErrorDefaults para conjuntos de réplicas.

  • Conclusão automática no shell.

  • Distância esférica para pesquisa geográfica.

  • Todas as correções de 1.6.1 e 1.6.2.

Próximo

O que é o MongoDB?

Nesta página