Actualización
MongoDB 1.8 es una versión de producción incremental estándar y funciona como un reemplazo directo para MongoDB 1.6, excepto:
Los miembros delconjunto de réplicas deben actualizarse en un orden particular, como se describe en Actualización de un conjunto de réplicas.
El
mapReducecommand has changed in 1.8, causing incompatibility with previous releases.mapReduceno longer generates temporary collections (thus,keepTemphas been removed). Now, you must always supply a value forout. See theoutfield options in themapReducedocument. If you use MapReduce, this also likely means you need a recent version of your client driver.
Preparación
Lea todas las notas de la versión antes de actualizar y asegúrese de que ningún cambio afecte su implementación.
Upgrading a Standalone mongod
Download the v1.8.x binaries from the MongoDB Download Page.
Apague su
mongodinstancia.Reemplace el binario existente con el 1.8
mongodbinario.x.Reinicia MongoDB.
Actualización de un set de réplicas
1.8 Los secundarios.x pueden replicarse desde los 1.6 primarios.x.
1.6.x los nodos secundarios no pueden replicar de 1.8.x nodos primarios.
Por lo tanto, para actualizar un conjunto de réplicas primero debes reemplazar todos los secundarios y luego el principal.
Por ejemplo, supongamos que tiene un conjunto de réplicas con un servidor principal, un árbitro y varios servidores secundarios. Para actualizar el conjunto, haga lo siguiente:
Para el árbitro:
Apaga el árbitro.
Reinícielo con el 1.8 binario.x desde la página de descarga de MongoDB.
Cambie su configuración (opcional) para evitar la elección de una nueva primaria.
Es posible que, al empezar a desactivar miembros del conjunto, se elija un nuevo primario. Para evitarlo, puede asignar a todos los secundarios una prioridad de
0antes de actualizar y luego volver a cambiarlos. Para ello:Registra tu configuración actual. Ejecuta y pega los resultados en un archivo de
rs.config()texto.Actualice su configuración para que todos los secundarios tengan prioridad
0. Por ejemplo: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)
Para cada secundaria:
Apague el secundario.
Reinícielo con el 1.8 binario.x desde la página de descarga de MongoDB.
Si cambió la configuración, vuelva a su 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) Apague el servidor principal (el 1.6 servidor final) y luego reinícielo con el 1.8 binario.x desde la página de descarga de MongoDB.
Actualización de un clúster fragmentado
Apague el balanceador:
mongo <a_mongos_hostname> use config db.settings.update({_id:"balancer"},{$set : {stopped:true}}, true) Para cada fragmento:
Si el fragmento es un conjunto de réplicas, siga las instrucciones anteriores para Actualizar un conjunto de réplicas.
Si el fragmento es un solo proceso, apáguelo y luego reinícielo con
mongodel 1.8 binario.x desde la página de descarga de MongoDB.
Para
mongoscada:Cierre el
mongosproceso.Reinícielo con el 1.8 binario.x desde la página de descarga de MongoDB.
Para cada servidor de configuración:
Apague el proceso del servidor de configuración.
Reinícielo con el 1.8 binario.x desde la página de descarga de MongoDB.
Encienda el balanceador:
use config db.settings.update({_id:"balancer"},{$set : {stopped:false}})
Regresando a 1.6
Si por alguna razón necesita volver a 1.6, siga los pasos anteriores a la inversa. Asegúrese de no haber insertado ningún documento de más de 4MB mientras se ejecuta en 1.8 (donde el tamaño máximo ha aumentado a 16MB). De ser así, recibirá errores cuando el servidor intente leer esos documentos.
Registro en la bitácora
Volver a 1.6 después de usar 1.8 el registro en diario funciona correctamente, ya que no modifica el formato del archivo de datos. Supongamos que está 1.8 ejecutando.x con el registro en diario habilitado y decide volver 1.6 a. Existen dos escenarios:
Si apaga limpiamente con 1.8.x, simplemente reinicie con el binario mongod 1.6.
Si 1.8.x se cerró incorrectamente, reinicie 1.8.x y deje que los archivos de registro se ejecuten para corregir cualquier daño (escrituras incompletas) que pudiera haber existido al momento del fallo. Luego, cierre 1.8.x correctamente y reinicie con el binario de mongod 1.6.
Cambios
Registro en la bitácora
MongoDB ahora admite el registro anticipado de escritura para facilitar la recuperación rápida ante fallos y la durabilidad del motor de almacenamiento. Con el registro habilitado, se mongod puede reiniciar rápidamente un tras un fallo sin necesidad de reparar las colecciones. Una canalización de agregación permite realizar la agregación.
Índices dispersos y cubiertos
Los índices dispersos son índices que solo incluyen documentos que contienen los campos especificados. Los documentos que no tengan el campo no aparecerán en el índice. Esto puede reducir significativamente el tamaño del índice en el caso de índices con campos que contienen solo un subconjunto de documentos dentro de una colección.
Los índices cubiertos permiten a MongoDB responder consultas completamente desde el índice cuando la consulta solo selecciona campos que contiene el índice.
Compatibilidad con MapReduce incremental
El comando admite nuevas opciones mapReduce que permiten actualizar incrementalmente las colecciones existentes. Anteriormente, un trabajo de MapReduce podía generar datos en una colección temporal o en una colección permanente con nombre, que se sobrescribía con nuevos datos.
Ahora tiene varias opciones para la salida de sus trabajos de MapReduce:
Puede fusionar la salida de MapReduce con una colección existente. La salida de la fase Reducir reemplazará las claves existentes en la colección de salida, si ya existe. Las demás claves permanecerán en la colección.
Ahora puede volver a reducir su salida con el contenido de una colección existente. Cada salida clave de la fase de reducción se reducirá con el documento existente en la colección de salida.
Puede reemplazar la colección de salida existente con los nuevos resultados del trabajo de MapReduce (equivalente a configurar una colección de salida permanente en versiones anteriores)
Puede calcular MapReduce en línea y devolver los resultados al llamador sin conservar los resultados del trabajo. Esto es similar a las colecciones temporales generadas en versiones anteriores, excepto que los resultados están limitados a 8MB.
Para obtener más información,out consulte mapReduce las opciones del campo en el documento.
Cambios y mejoras adicionales
1.8.1
Corrección de migración de fragmentación al mover fragmentos más grandes.
Corrección de durabilidad con indexación en segundo plano.
Se solucionó el problema de concurrencia de Mongos con muchas conexiones entrantes.
1.8.0
Todos los cambios de la serie 1.7.x.
1.7.6
Corrección de errores.
1.7.5
Mejoras en la asignación de extensión.
Conectividad del conjunto de réplicas mejorada
mongospara.getLastErrorimprovements for sharding.
1.7.4
mongosenrutaslaveOkconsultas a las secundarias en conjuntos de réplicas.Nuevas opciones de
mapReducesalida.
1.7.3
Soporte inicial del índice cubierto.
Distinct puede utilizar datos de índices cuando sea posible.
mapReducecan merge or reduce results into an existing collection.mongodrastrea y muestra el uso de lamongostatred.Consulte mongostat.Mejoras en la estabilidad de la fragmentación.
1.7.2
$renameoperator allows renaming of fields in a document.db.eval()not to block.Consultas geográficas con fragmentación.
mongostat --discoveropciónMejoras en la división de fragmentos.
Los conjuntos de réplicas mejoran la red para los servidores detrás de un NAT.
1.7.1
Muchas mejoras en el rendimiento del particionado.
Mejor soporte para en primitivas en matrices
$elemMatchintegradas.Mejoras del optimizador de consultas en consultas de rango.
Mejoras en el servicio de ventanas.
Mejoras en la configuración del conjunto de réplicas.
$pullworks on primitives in arrays.
1.7.0
Mejoras en el rendimiento de fragmentación para cargas de inserción pesadas.
Soporte de retardo de esclavo para conjuntos de réplicas.
local.system.replset.settings.getLastErrorDefaultsfor replica sets.Completado automático en el shell.
Distancia esférica para búsqueda geográfica.
Todas las correcciones de 1.6.1 y 1.6.2.