không thể khởi động máy chủ cục bộ mongodb


167

Tôi mới sử dụng mongodb .. khi tôi thử chạy máy chủ cục bộ mongodb với mongodlệnh nó không chạy được và đã ném lỗi này ..

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

Tôi đã cố xóa mongod.locktập tin ... Tôi đã chạy mongod --repair.. Tôi cũng đã thay đổi quyền thành mongod.locktập tin.

nhưng dường như không có gì hoạt động .. nó cứ hiển thị cùng một lỗi .. tôi nên làm gì đây?

Tôi cũng đã cài đặt phiên bản git 1.7.4.1 nhưng nó hiển thị lỗi không chính xác ..


Tôi đã có cùng một vấn đề và giải pháp này hiệu quả với tôi stackoverflow.com/questions/5798549/ Khăn
Eddie

Câu trả lời:


176

Thử:

sudo service mongod stop
sudo mongod

Để dừng dịch vụ mongodb hiện hoạt, cho phép bạn bắt đầu một dịch vụ mới


1
tôi cũng nhận được tin nhắn dịch vụ nhưng quyết định bỏ qua và thử khởi động lại với "sudo mongod" và sau khi nó hoạt động cuối cùng
kpierce8

2
Đây không phải là mongod (không phải mongodb)? Dựa trên docs.mongodb.org/manual/tutorial/install-mongodb-on-ub Ubuntu /
xavier

5
sudo service mongodb stoplàm việc cho tôi trên Ubuntu 14.10.
Joe Corneli

1
Không có lệnh dịch vụ trên OS X. Nếu bạn đã cài đặt mongo thông qua homebrew, bạn có thể sử dụng brew services. (thông qua unix.stackexchange.com/questions/155715/ trộm )
Charlie Stanard

1
@HarshaMV `dịch vụ sản xuất bia dừng <công thức>`
Jacob

149

Đừng giết quá trình bằng tín hiệu -9 vì nó sẽ gây ra thiệt hại: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Sử dụng sudo killall -15 mongodthay thế


2
Điều này không trả lời câu hỏi ban đầu.
Beau Grantham

8
killall mongodcũng làm điều tương tự. các -15bảo killallđể gửi một tín hiệu SIGTERM, mà nó theo mặc định.
T Trống

4
Trên thực tế, một killall thực sự có hiệu quả với tôi thay vì cố gắng dừng dịch vụ. Vì vậy, mặc dù nó không trả lời các câu hỏi. Điều đó rất hữu ích
André Pena

59

Andreas Jung:

"Sat ngày 25 tháng 6 09:38:51 [initandlisten] lắng nghe (): bind () fail errno: 98 Địa chỉ đã được sử dụng cho socket: 0.0.0.0:27017

là tự nói.

Một phiên bản khác của mongod đã chạy và phân bổ cổng mặc định MongoDB là 27017.

Hoặc là giết quá trình khác hoặc sử dụng một cổng khác. "

Trong trường hợp này, gõ lệnh sau

ps wuax | grep mongo

Bạn sẽ thấy một cái gì đó trông như thế này

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

Bây giờ hãy nhập lệnh kill cho thể hiện mongod (trong trường hợp này là 31936):

kill 31936

29

Thứ bảy ngày 25 tháng 6 09:38:51 [initandlisten] lắng nghe (): bind () fail errno: 98 Địa chỉ đã được sử dụng cho socket: 0.0.0.0:27017

là tự nói.

Một phiên bản khác của mongod đã chạy và phân bổ cổng mặc định MongoDB là 27017.

Hoặc giết quá trình khác hoặc sử dụng một cổng khác.


47
Tìm thấy điều này khi bắt đầu trang ... ** Khi mongodb ** được cài đặt thông qua aptitude, nó đã chạy (vì vậy trong ví dụ bạn không cần phải khởi động nó). Sau đó, chỉ cần gõ: $ mongo .. vì cá nhân tôi đã bắt đầu mongod và tôi đã làm theo hướng dẫn khởi động nhanh .. tôi không biết nó đã chạy ...
sakthig

@Sakti: Yea, nó đã chạy cho tôi! Tôi đoán tôi đã làm thông qua năng khiếu. Cám ơn!
sk8terboi87

29

Tìm hiểu từ netstat quá trình nào đang chạy cổng mongodb (27017)

chỉ huy:

sudo netstat -tulpn | grep :27017

Đầu ra sẽ là:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

Trong trường hợp của tôi "6432" là pid, nó có thể khác trong trường hợp của bạn. Sau đó, giết quá trình đó bằng lệnh sau:

sudo kill <pid>

Đó là nó!


25

Sử dụng:

sudo killall mongod

Nó sẽ dừng máy chủ.

Sau đó khởi động lại mongodbằng cách:

sudo service mongod restart

nó nên hoạt động


23

Bạn đã có một quá trình đang chạy. Bạn có thể giết nó bằng lệnh:

killall mongod

15

Bạn muốn làm killall -15 mongodvì nó vẫn đang chạy : Address already in use for socket: 0.0.0.0:27017.

Sau đó, bạn có thể chạy mongodlại.


Tại sao không đơn giản killall mongod?
Dmitri Zaitsev

1
No matching processes belonging to you were found
retrovertigo

Sau đó mongod không phải là một quá trình chạy. Có thể địa chỉ đang được sử dụng bởi một quy trình khác
John Ottenlips

7

Hãy thử một cổng khác nếu bạn không thể tìm thấy bất kỳ quy trình đang chạy nào hoặc giết chúng không hoạt động. Ví dụ: thử 27018 vì mặc định là 27017.

mongod  --port 27018

Tôi tìm thấy điều này với lệnh, mongod --help


7

Tôi đề nghị sử dụng thay thế:

$sudo service mongodb stop

Điều đó có thể làm việc.


6

Hãy thử killall -15 mongod / killall mongod Ngay cả sau này nếu điều này không hoạt động thì hãy xóa thư mục lưu trữ db bằng cách gõ các lệnh sau sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Activity Monitor , tìm kiếm mongod , vượt qua nó. rồi chạy lại mongod. Giải quyết vấn đề.


OP không chỉ định HĐH nhưng các tệp nhật ký biểu thị rõ ràng Linux.
Nic Nilov

4

Mở terminal và gõ:

mkdir -p /data/db

Sau đó nhập:

mongod

3

Tôi gặp vấn đề tương tự là tôi đã cố mở một phiên bản mới của mongod và nó nói rằng nó đã chạy.

Tôi đã kiểm tra các tài liệu và nó nói để gõ

mongo
use admin
db.shutdownServer()

3

MongoDB không thể khởi động chủ yếu là do tắt máy ô uế. Để khắc phục, xóa tệp mongod.lock. Tập tin này nằm trong thư mục dữ liệu.

Tìm xem thư mục dữ liệu của bạn ở đâu bằng cách tìm trong tệp mongodb.conf hoặc mongod.conf. (Tệp Conf dưới / etc trên các hệ thống Linux.)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

Ví dụ: sử dụng cấu hình trên, tệp có tại /var/lib/mongodb/mongod.lock. Đơn giản chỉ cần loại bỏ nó và khởi động lại mongodb.


1
Điều này đã xảy ra với tôi hơn một lần, đặc biệt là trên các máy chủ đám mây đã bị "thiết lập lại cứng" khi không phản hồi. Đây là một sửa chữa dễ dàng và nên là một câu trả lời hàng đầu.
SevakPrime

2

Tôi đã đối mặt với cùng một vấn đề. Mặc dù mongodbdịch vụ không chạy, nhật ký hiển thị address already in usethông báo.

 $netstat -tulpn | grep :27017 

trả lại không có gì

Trên phân tích sâu hơn thấy rằng vấn đề là do tập tin khóa. Dịch vụ đang chạy tốt, sau khi xóa tệp khóa và khởi động lại.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

Kiểm tra nhật ký tại /var/log/mongodb/mongod.log và cố gắng suy ra lỗi. Trong trường hợp của tôi, nó là

Không thể hủy liên kết tệp ổ cắm /tmp/mongodb-27017.sock errno: 1 Thao tác không được phép

Đã xóa /tmp/mongodb-27017.sock và nó đã hoạt động.


1

thử

/usr/lib/mongodb/mongod.exe --dbpath c: data \ db

--dbpath (nên được theo sau bởi đường dẫn db của bạn)


1

Có thể máy chủ đã chạy. Vui lòng kiểm tra nó bằng lệnh mongo có hoạt động hay không.


1

Để giải quyết vấn đề trong Windows , các bước dưới đây hoạt động với tôi:

Ví dụ, mongoDB phiên bản 3.6 đã được cài đặt và đường dẫn cài đặt của MongoDB là "D: \ Program Files \ MongoDB".

Tạo thư mục D: \ mongodb \ log, sau đó tạo tệp mongodb.log bên trong thư mục này.

Chạy cmd.exe với tư cách quản trị viên ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

Xóa hai tệp này mongod.lockstorage.bsontrong thư mục "D: \ mongodb \ data".

Sau đó nhập net start MongoDBcmd bằng đặc quyền quản trị viên, vấn đề sẽ được giải quyết.


0

Nó hiển thị lỗi lắng nghe (): bind () fail errno: 98 Địa chỉ đã được sử dụng cho socket: 0.0.0.0:27017 tức là địa chỉ 27017 đã được sử dụng bởi một số dịch vụ khác. vui lòng kiểm tra điều này bằng lệnh "netstat -apt | grep" 27017 ""


0

(Nếu bạn đang sử dụng linux,) nếu

mongod --shutdown --config=path/to/your/configFile.conf 

hoặc là

mongod --repair --config=path/to/your/configFile.conf 

không khắc phục sự cố, đăng xuất và đăng nhập lại . Điều đó đã giải quyết vấn đề của tôi.

Hoặc bạn có thể giết quá trình thủ công từ thiết bị đầu cuối, tôi đoán vậy.


0

Có vẻ như lỗi tương tự được hiển thị trong nhật ký khi bạn thiếu cài đặt môi trường LC_ALL. Thật khó hiểu, nhưng bạn có thể thực thi mongoứng dụng khách để thấy rằng đó là một vấn đề.


0

nếu bạn đang chạy mongo lần đầu tiên, bạn có thể muốn đặt đường dẫn trước

mongod --dbpath <path to the directory>

0

Quá trình giết chết không giải quyết được vấn đề của tôi. Máy mac của tôi đã bị sập và khi khởi động lại một số tệp khóa (mongod.lock, WiredTiger.lock) đã có mặt trong mongo dbPath. Tôi đã chuyển các tệp này sang thư mục khác (tôi không xóa để tránh nhiều vấn đề hơn) và sau đó nó hoạt động. Trên ngôi sao thành công, tôi đã xóa các tập tin khóa di chuyển.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.