MongoDB đột nhiên ngừng hoạt động ngày hôm nay (12.04)


8

Sau khi tôi cập nhật lên 12.04 một hoặc hai tháng trước, tôi đã cài đặt MongoDB qua APT. Kể từ đó nó đã hoạt động tốt. Tôi không thực hiện thay đổi nào đối với cấu hình hoặc bất cứ điều gì - nó chỉ hoạt động tốt.

Hôm nay nó không bắt đầu, khi tôi đăng nhập, tôi đột nhiên gặp lỗi "không thể kết nối với bất kỳ máy chủ nào trong danh sách" trong ứng dụng của mình và tôi đã kiểm tra và mongodkhông chạy.

ls -al /var/lib/mongodb

Hiển thị không có *.locktập tin.

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 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")

Sau đó tôi đã thử sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

Bất cứ ý tưởng gì là sai?

Cập nhật

Vì vậy, tôi đã thử sudo service mongodb startvà cuối cùng nó đã bắt đầu (tôi đã thử điều này vài lần trước đó)

mongodb start/running, process 4376

Câu trả lời:


13

Chẩn đoán

Điều đầu tiên cần làm là kiểm tra các tệp nhật ký MongoDB để xem tại sao dịch vụ không bắt đầu. Chạy:

tail -f /var/log/mongodb/mongodb.log

trong một cửa sổ đầu cuối và sau đó chạy:

sudo service mongodb restart

trong một cái khác Tệp nhật ký sẽ hiển thị MongoDB đang cố khởi động và báo cáo thông báo lỗi nếu thất bại.

Sửa

Nếu nhật ký cho biết bạn cần sửa chữa cơ sở dữ liệu của mình, có hai điểm cần lưu ý:

  1. Theo mặc định, mongodhy vọng các tệp cơ sở dữ liệu sẽ nằm trong /data/db/, nhưng các gói Ubuntu cấu hình nó để tìm /var/lib/mongodb/. Vì vậy, nếu bạn chạy mongodtrực tiếp thay vì sử dụng các tập lệnh khởi động, bạn cần cho nó biết các tệp cơ sở dữ liệu của bạn bằng cách thêm một --dbpathđối số.
  2. Khi chạy mongodbằng cách sử dụng upstart, nó sẽ chạy như mongodbngười dùng là người dùng sở hữu các tệp cơ sở dữ liệu. Nếu bạn chạy mongodbằng cách sử dụng sudomà không chỉ định người dùng thì bạn sẽ kết thúc với các tệp cơ sở dữ liệu được sở hữu bởi root. Vì vậy, bạn cần thêm một -uđối số sudo.

Nếu các tệp cơ sở dữ liệu của bạn hiện đang thuộc sở hữu của rootbạn, bạn sẽ cần thay đổi quyền sở hữu của họ trở lại mongodbtrước khi MongoDB có thể sử dụng lại chúng:

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

Để chạy sửa chữa trên MongoDB khi sử dụng phân phối đóng gói, bạn cần chạy:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/

4

Tôi cũng có vấn đề tương tự, và giải quyết nó. Khi tôi cố gắng bắt đầu mongodbvới sudonó cho thấy quá trình đã chạy ( ). Nhưng tôi không thể truy cập thể hiện đang chạy qua shell. Nó cho thấy kết nối thất bại .mongodb start/running, process xxxx

Giải pháp

Vì vậy, tôi đã xóa các tập tin khóa:

sudo rm /var/lib/mongodb/mongod.lock

Sau đó, tôi khởi động lại dịch vụ:

sudo service mongodb start

Sau đó Mongo làm việc trên máy của tôi một lần nữa!


0

Tôi cũng gặp vấn đề tương tự khi bắt đầu mongod.exe trong máy của mình (cài đặt Windows). Đây là một .locktập tin C:\data\dbgây ra vấn đề. Tôi đã xóa tập tin đó và vấn đề đã được giải quyết.


0

Có một vấn đề tương tự, nguyên nhân là hơi ngu ngốc; Tôi đã hết dung lượng đĩa.

Kiểm tra nhật ký tại /var/log/mongodb/mongod.log Tôi phát hiện ra dòng sau:

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

Hy vọng điều này sẽ cứu ai đó nửa giờ trong cuộc sống của họ.

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.