2017-01-16 13 views
7

Tôi vừa mới bắt đầu AWS Linux AMI 2016.09.1 ​​(HVM) mới và tải xuống bản phát hành Mongodb mới nhất. Tôi đang sử dụng phiên bản MongoDB 3.0.14. Tôi cập nhật /etc/mongod.conf đến sau,Lỗi Khởi động lại Mongo - /var/run/mongodb/mongod.pid tồn tại

# mongod.conf 

# for documentation of all options, see: 
# http://docs.mongodb.org/manual/reference/configuration-options/ 

# where to write logging data. 
systemLog: 
destination: file 
logAppend: true 
path: /var/log/mongodb/mongod.log 

# Where and how to store data. 
storage: 
dbPath: /var/lib/mongo 
journal: 
enabled: true 
# engine: 
# mmapv1: 
# wiredTiger: 

# how the process runs 
processManagement: 
    fork: true # fork and run in background 
    pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile 

# network interfaces 
net: 
    port: 27017 
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on 
    all interfaces. 


#security: 

#operationProfiling: 

#replication: 

#sharding: 

## Enterprise-Only Options 

#auditLog: 

#snmp: 

tôi chạy MongoDB cho lần đầu tiên sử dụng dịch vụ,

sudo service mongod start 

Tất cả mọi thứ hoạt động tốt. Khi tôi dừng MongoDB và khởi động lại,

sudo service mongod stop 
sudo service mongod restart 

tôi nhận được lỗi sau,

Error starting mongod. /var/run/mongodb/mongod.pid exists. 

Dưới đây là những gì có trong logfile, /var/log/mongodb/mongod.log,

2017-01-16T14:11:16.869+0000 I CONTROL ***** SERVER RESTARTED ***** 
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] MongoDB starting : 
    pid=2820 port=27017 dbpath=/var/lib/mongo 64-bit hos 
    t=ip-10-0-0-91 
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] db version v3.0.14 
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] git version: 
    08352afcca24bfc145240a0fac9d28b978ab77f3 
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] build info: Linux 
    ip-10-63-190-181 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon 
    May 6 18:04:41 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49 
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] allocator: tcmalloc 
2017-01-16T14:11:16.872+0000 I CONTROL [initandlisten] options: { config: 
    "/etc/mongod.conf", net: { port: 27017 }, processMan 
    agement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, 
    storage: { dbPath: "/var/lib/mongo", journal: { enabled: t 
    rue } }, systemLog: { destination: "file", logAppend: true, path: 
    "/var/log/mongodb/mongod.log" } } 
2017-01-16T14:11:16.893+0000 E NETWORK [initandlisten] Failed to unlink 
    socket file /tmp/mongodb-27017.sock errno:1 Operation 
    not permitted 
2017-01-16T14:11:16.893+0000 I -  [initandlisten] Fatal Assertion 
    28578 
2017-01-16T14:11:16.893+0000 I -  [initandlisten] 

***aborting after fassert() failure 

Tôi đã xem một số blog được đăng về vấn đề này với các giải pháp nhưng không có cách nào trong số chúng có vẻ hoạt động. Đã dành cả ngày Chủ Nhật để tìm ra cái này. Không bao giờ gặp vấn đề này trước khi chạy một cá thể AWS và Mongo trước đó.

+0

Hãy thử 'sudo rm /var/run/mongodb/mongod.pid' rồi khởi động lại dịch vụ –

+0

Xin chào Dave, vâng đó là một trong những điều đầu tiên tôi làm. Nó không hoạt động. Tệp chỉ chứa một dòng, "2943". Tôi đoán đó là PID của một số quy trình MongoDB. – skmansfield

Trả lời

2

Ok, tìm thấy giải pháp tốt hơn cho những gì tôi có trong câu trả lời đầu tiên của mình. Câu trả lời trước của tôi chỉ đơn giản là loại bỏ các triệu chứng. Tôi thấy rằng một số người khác đã phải chown nhiều thư mục khác. Tôi tin rằng vấn đề là mongod không khởi động lại đúng cách và để lại một số thư mục không chính xác được thiết lập vì nó không thành công. Tôi nghi ngờ nhiều chủ đề đang chạy để thư mục được thiết lập không chính xác là hơi ngẫu nhiên. Tôi đang sử dụng AWS AMI Linux của Amazon và cài đặt MongoDB 3.4. Tôi tìm thấy tập lệnh MongoDB cài đặt rất tốt tại

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-amazon/ 

Vì vậy, đây là bản sửa lỗi. Tôi đã thử nghiệm nó nhiều lần và nó hoạt động mỗi lần. Cài đặt mongo như bình thường. Sử dụng tập lệnh ở trên nếu hữu ích.Trước khi bạn bắt đầu mongod thực hiện lệnh sau,

sudo chkconfig mongod on 

Bạn sẽ lưu ý rằng kịch bản trên cài đặt nhấn mạnh chkconfig nhưng ở dưới cùng của kịch bản, nơi nó có thể không được nhìn thấy. Điều này sẽ đảm bảo rằng bạn có thể khởi động lại thành công mongod mỗi lần. Điều này sẽ hoạt động trên các phiên bản Linux khác.

9

Ok, đã phát hiện sự cố. Tôi đã xóa tệp /var/run/mongodb/mongod.pid theo đề xuất của Dave Maples ở trên. Tuy nhiên, MongoDB vẫn chưa chạy. Tôi đã xem lại tệp nhật ký và bây giờ đã thấy nó barking về tệp này,

/tmp/mongodb-27017.sock 

Có vẻ như nó không có quyền chính xác. Tôi đã thử,

sudo chown mongod:mongod /tmp/mongodb-27017.sock 

Và nó hoạt động tốt. Bây giờ khi tôi khởi động/dừng/khởi động lại MongoDB nhiều lần, tôi không còn gặp vấn đề nữa. Tôi nghĩ rằng các tập tin cho phép MongoDB không làm sạch chính nó lên đúng và trái /var/run/mongodb/mongod.pid tập tin trong thư mục. Điều này gây ra lỗi "Lỗi bắt đầu mongod. /var/run/mongodb/mongod.pid tồn tại". Tuy nhiên, đây không phải là vấn đề thực sự. Vấn đề thực sự là/tmp/permission. Nhìn vào tệp nhật ký sau khi tôi xóa tệp mongod.pid và khởi động lại Mongod cho thấy vấn đề quyền. Vì vậy, đây là những gì cố định được vấn đề,

sudo rm /var/run/mongodb/mongod.pid 
sudo chown mongod:mongod /tmp/mongodb-27017.sock 

Tôi đặt cược nếu tôi chỉ cố gắng "sudo chown mongod: mongod /tmp/mongodb-27017.sock" ngay sau khi cài đặt MongoDB trên máy chủ mới trước khi chạy MongoDB có thể tránh được vấn đề. Đã lãng phí một ngày nắng đẹp hoàn toàn ở Florida vào ngày này.

+1

Cùng một thiết lập và vấn đề, nhưng vẫn sẽ không bắt đầu cho tôi. Tôi cũng phải 'rm/var/lib/mongo/mongod.lock' và sau đó nó vẫn nghĩ rằng địa chỉ mặc định đã được sử dụng. Phải chắc chắn rằng '/ var/run/mongodb/mongod.pid' đã biến mất một lần nữa và' mongod.lock' đã biến mất một lần nữa và sau đó là 'mkdir/data/db' và' chown -R mongod: mongod/data' trước nó cuối cùng đã bắt đầu, dừng lại và khởi động lại. Chúc may mắn. – Rachel

+1

Tôi quay lại và xem ghi chú cài đặt của mình. Tôi tiếp tục cài đặt ghi chú trên tất cả mọi thứ tôi cài đặt trên máy chủ của tôi những ngày này. Loại bỏ rất nhiều vấn đề phát hiện lại. Tôi đã xem xét cẩn thận về họ và nhận thấy rằng tôi đã thực hiện các lưu ý sau đây "Để đảm bảo Mongo sẽ khởi động lại sau khi khởi động lại nhập lệnh sau: sudo chkconfig mongod trên". Tôi tin rằng đây là vấn đề gốc. Sau khi bạn khởi động mongo đầu tiên, bạn cần thực hiện lệnh chkconfig. – skmansfield

+0

Cảm ơn. Nó giải quyết vấn đề của tôi. Ngăn xếp của tôi là Centos 6.5 –

1

bạn có thể thay đổi ip trong tập tin cấu hình:

vim /etc/mongod.conf

# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on 
    all interfaces. 
    bindIp: xxx.xxx.xxx.xxx 
-1

Sau khi dừng máy chủ, bạn đang cố gắng khởi động lại. Bạn chỉ có thể khởi động máy chủ. Đó là lý do tại sao bạn nhận được lỗi dừng. Và cũng không cần phải lo lắng về lỗi này.

Các vấn đề liên quan