ventajas que español desventajas caracteristicas shell mongodb

shell - que - mongodb español



MongoDB ejecutándose pero no puede conectarse usando shell (16)

Aún no veo que esto tenga una respuesta aceptada, así que solo agregaré mis 2 centavos.

Tuve el mismo problema exactamente ahora. Después de un tiempo me di cuenta de que había bloqueado el host local en mis reglas de iptables. Por lo tanto, verifica tu firewall.

CentOS 5.x Linux con MongoDB 2.0.1 (probado main y legacy-static)

MongoDB se está ejecutando:

root 31664 1.5 1.4 81848 11148 ? Sl 18:40 0:00 ./mongod -f mongo.conf -vvvvv --fork

El uso de un shell simple connect para llegar al servidor falla:

[root@xxxx bin]# ./mongo MongoDB shell version: 2.0.1 connecting to: test Mon Oct 31 18:41:32 Error: couldn''t connect to server 127.0.0.1 shell/mongo.js:84 exception: connect failed

La interfaz web en el puerto 28017 se carga bien, al igual que el uso del shell MongoDB desde un host Linux remoto. También puede telnet para localhost: 27017, lo que significa que no hay puertos bloqueados. No hay ningún SELinux corriendo en esta máquina también. También he intentado especificar explícitamente localhost:2017/db inútilmente.

$ ./mongo remote-ip:27017 MongoDB shell version: 2.0.1 connecting to: remote-ip:27017/test > show dbs local 0.03125GB >

Los registros están completamente relacionados con el tema:

..... Mon Oct 31 18:40:34 [initandlisten] fd limit hard:1024 soft:1024 max conn: 819 Mon Oct 31 18:40:34 [initandlisten] waiting for connections on port 27017 Mon Oct 31 18:40:34 BackgroundJob starting: snapshot Mon Oct 31 18:40:34 BackgroundJob starting: ClientCursorMonitor Mon Oct 31 18:40:34 BackgroundJob starting: PeriodicTask::Runner Mon Oct 31 18:40:34 [websvr] fd limit hard:1024 soft:1024 max conn: 819 Mon Oct 31 18:40:34 [websvr] admin web console waiting for connections on port 28017

Alinear el cliente mongo shell muestra solo una llamada problemática:

[pid 31708] connect(4, {sa_family=AF_INET, sin_port=htons(27017), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EBADF (Bad file descriptor)

El sistema de archivos está limpio, no hay restricciones de ulimit (se ejecuta como raíz para las pruebas). Puedo ver desde el nivel que el cliente de mongo intenta conectarse a través de TCP ( AF_INET ), pero dado que es local y MongoDB crea un socket de archivo, ¿hay alguna manera de decirle al cliente que se conecte a través de eso? O mejor aún, ¿por qué el cliente lanzará un EBADF?

EDITAR: Mi base Mongo conf:

dbpath=/root/mongodb-linux-i686-2.0.1/data logpath=/root/mongodb-linux-i686-2.0.1/logs/mongo.log slowms=15 rest=1


Abra el archivo /etc/mongod.conf y agregue el ip de la máquina desde donde se está conectando, a bind_ip

bind_ip = 127.0.0.1, su dirección IP de máquina remota aquí

Ex:-

bind_ip = 127.0.0.1,192.168.1.5

Reinicie el servicio mongodb:

sudo service mongod restart

Asegúrese de que el puerto mongodb esté abierto en el firewall.

También puede comentar la línea, si no está preocupado por la seguridad.


Creo que hay alguna configuración predeterminada que falta en esta versión del cliente mongoDb. Intenta ejecutar:

mongo 127.0.0.1:27017

Es extraño, pero luego experimenté que el problema desapareció :) (por lo que el comando simple ''mongo'' sin ningún parámetro volvió a funcionar para mí)

[Ubuntu Linux 11.10 x64 / MongoDB 2.0.1]


De forma predeterminada, mongodb está configurado para escuchar solo localhost. Extracto del archivo de configuración predeterminado de mongodb:

# Listen to local interface only. Comment out to listen on all interfaces. bind_ip=127.0.0.1

Uno necesita comentar el bind_ip para escuchar de entidades externas.

No podrá agregar fragmentos a menos que empiece a escuchar en interfaces no locales.

HTH,

Abhay Dandekar


Después de comenzar el mongod

$mongod --dbpath <db name>

para obtener el caparazón

$mongo --shell


Elimine /var/lib/mongodb/mongod.lock , luego emita el sudo service mongodb start , luego mongo .


En Ubuntu:

Wed Jan 27 10:21:32 Error: no se pudo conectar al servidor 127.0.0.1 shell / mongo.js: 84 excepción: error de conexión

Solución

Busque si mongodb se está ejecutando siguiendo el siguiente comando:

ps -ef | grep mongo

Si mongo no se está ejecutando, obtienes:

vimal 1806 1698 0 10:11 pts/0 00:00:00 grep --color=auto mongo

Estás viendo que el daemon mongo no está allí.

Luego, comience a través del archivo de configuración (con root priev):

root@vimal:/data# mongod --config /etc/mongodb.conf & [1] 2131 root@vimal:/data# all output going to: /var/log/mongodb/mongodb.log

puedes ver los otros detalles:

root@vimal:~# more /etc/mongodb.conf

Abra una nueva terminal para ver el resultado de mongod --config /etc/mongodb.conf y luego escriba mongo. Debería estar ejecutándose o grep

root@vimal:/data# ps -ef | grep mongo root 3153 1 2 11:39 ? 00:00:23 mongod --config /etc/mongodb.conf root 3772 3489 0 11:55 pts/1 00:00:00 grep --color=auto mongo

AHORA

root@vimal:/data# mongo MongoDB shell version: 2.0.4 connecting to: test

obtienes el shell mongoDB

Este no es el final de la historia. Publicaré el método de reparación para que se inicie automáticamente cada vez, la mayoría de las paradas de la máquina de desarrollo se realizan todos los días y la VM debe tener mongo iniciado automáticamente en el siguiente inicio.


Encontré esto muy útil.

Si recibes el siguiente mensaje

start: Rejected send message, 1 matched rules; type="method_call", sender=":1.84" (uid=1000 pid=3215 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init") shriprasad@shriprasad-HP-430-Notebook-PC:/var/lib/mongodb$ mongo

Debe intentar iniciar el servicio de mongodb como usuario que no sea root. Debes ser usuario root. Por lo tanto, inicie sesión como root y luego ejecute el siguiente comando de la siguiente manera:

sudo bash

seguido por

service mongodb start


Enfrentando el mismo problema con el error descrito por Garrett arriba. 1. El servidor MongoDB con diario habilitado se está ejecutando como se ve mediante el comando ps 2. El cliente Mongo o el controlador Mongoose no pueden conectarse a la base de datos.

Solución: 1. Eliminar el archivo Mongo.lock parece devolver la vida a la normalidad en el servidor de CentOS. 2. Somos bastante nuevos en la ejecución de MongoDB en producción y hemos estado viendo el mismo problema surgiendo un par de veces a la semana. 3. Hemos configurado un cronograma cron para limpiar regularmente el archivo de bloqueo e informarle al administrador que ha ocurrido un incidente.

Buscando una solución a este problema o cualquier otra forma más permanente para resolverlo.


Es posible que desee comprobar su configuración para ver si bind_ip está configurado

bind_ip: 127.0.0.1

Si es así, esto solo permite inicios de sesión locales. Comenta esto y reinicia mongo, esto puede ser útil.


Esto no es un error ... Lo que ocurre aquí es que Mongo depende de un daemon para ejecutar el servidor de base de datos local, por lo que para "encender" el servidor mongo en su shell, debe iniciar el servicio de mongo primero.

Para Fedora Linux (que es el Distro que uso), debe ejecutar estos comandos:

1 sudo service mongod start 2 mongo

¡Y ahí lo tienes! el servidor se ejecutará Ahora, si desea que el servicio de Mongo comience cuando el sistema arranque, debe ejecutar:

sudo chkconfig --levels 235 mongod on

¡Y eso es todo! Si haces eso, ahora en el intérprete de comandos solo tienes que escribir mongo para iniciar el servidor, pero eso es más o menos, el problema es que primero tienes que iniciar el SERVICIO y luego el SERVIDOR :)

PD: Los comandos que publiqué también podrían funcionar en otras distribuciones de Linux, no solo en Fedora ... En caso de que no sea así, quizás deba modificar algunas palabras según la distribución que esté utilizando;)


No tanto una respuesta sino más bien un FYI: acabo de acertar y encontré esta pregunta como resultado de la búsqueda. Aquí están los detalles de mi experiencia:

Error de shell

markdsievers@ip-xx-xx-xx-xx:~$ mongo MongoDB shell version: 2.0.1 connecting to: test Wed Dec 21 03:36:13 Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017 Wed Dec 21 03:36:13 SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [1] server [127.0.0.1:27017] Wed Dec 21 03:36:13 DBClientCursor::init call() failed Wed Dec 21 03:36:13 Error: Error during mongo startup. :: caused by :: DBClientBase::findN: transport error: 127.0.0.1 query: { whatsmyuri: 1 } shell/mongo.js:84 exception: connect failed

Los registros de Mongo revelan

Wed Dec 21 03:35:04 [initandlisten] connection accepted from 127.0.0.1:50273 #6612 Wed Dec 21 03:35:04 [initandlisten] connection refused because too many open connections: 819

Esto tal vez indique que la otra respuesta (JaKi) estaba experimentando lo mismo, donde algunas conexiones se depuraron y el acceso volvió a ser posible para el shell (otros clientes)


Si su bind_ip está configurado a algo que no sea 127.0.0.1, entonces deberá agregar el ip explícitamente incluso desde la máquina local. Simplemente use el mismo método que está usando en el cuadro remoto en el cuadro local. Al menos eso es lo que hizo por mí.


Tuve el mismo problema En mi caso, el servidor MongoDB no se estaba ejecutando.

Intenta abrir esto en tu navegador web:

http://localhost:28017

Si no puede, esto significa que debe iniciar el servidor MongoDB.

Ejecute mongod en otra pestaña de terminal. Luego, en su pestaña principal, ejecute mongo que es el shell que se conecta a su servidor MongoDB.


Tuve un problema similar, bueno, en realidad es el mismo (el proceso de mongo se está ejecutando pero no se puede conectar a él). Lo que hice fue a la ruta de mi base de datos y eliminé mongod.lock, y luego le di otra oportunidad (mongo reiniciado). Después de eso funcionó.

Espero que funcione para usted también. reparación mongodb en ubuntu


Yo tuve este problema también. ¿Es su diario MongoDB? Noté las siguientes entradas de "preasignación" en el archivo de registro. Una vez que vi la última línea "esperando conexiones en el puerto", pude conectarme. Tenga en cuenta que este modo "más rápido" tardó 12 minutos en iniciarse.

Guillermo

Tue Apr 17 16:48:01 [initandlisten] MongoDB starting : pid=2248 port=27017 dbpath=E:/MongoData 64-bit host=ME Tue Apr 17 16:48:01 [initandlisten] db version v2.0.0-rc0, pdfile version 4.5 Tue Apr 17 16:48:01 [initandlisten] git version: 8d4bf50111352cee5a4f1abf25b63442d6c45dc4 Tue Apr 17 16:48:01 [initandlisten] build info: windows (6, 1, 7601, 2, ''Service Pack 1'') BOOST_LIB_VERSION=1_42 Tue Apr 17 16:48:01 [initandlisten] options: { bind_ip: "ip", dbpath: "E:/MongoData", directoryperdb: true, journal: true, logpath: "E:/MongoData/mongo.log", quiet: true, rest: true, service: true } Tue Apr 17 16:48:01 [initandlisten] journal dir=E:/MongoData/journal Tue Apr 17 16:48:01 [initandlisten] recover : no journal files present, no recovery needed Tue Apr 17 16:48:02 [initandlisten] preallocateIsFaster=true 9.68 Tue Apr 17 16:48:04 [initandlisten] preallocateIsFaster=true 8.44 Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster=true 9.68 Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster check took 4.921 secs Tue Apr 17 16:48:06 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.0 Tue Apr 17 16:52:37 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.1 Tue Apr 17 16:56:54 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.2 Tue Apr 17 17:01:42 [initandlisten] waiting for connections on port 27017 Tue Apr 17 17:01:42 [websvr] admin web console waiting for connections on port 28017