centos上安装mongodb

本文详细记录了MongoDB在Linux环境下从下载安装到配置运行的全过程,并针对遇到的各种错误提供了具体的解决方案,包括版本不匹配、日志配置及后台运行等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下载
1.选择安装包下载
https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz/download
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.9.tgz
2.解压
tar zxvf mongodb-linux-x86_64-3.2.9.tgz                                   # 解压
3.将解压包拷贝到指定目录
mv  mongodb-linux-x86_64-3.2.9/ /usr/local/mongodb-linux-x86_64-3.2.9                         # 将解压包拷贝到指定目录
二、创建数据库目录
mkdir -p /mongodbData/db
三、命令行中运行 MongoDB 服务
/usr/local/mongodb-linux-x86_64-3/bin/mongod --dbpath=/mongodbData/db
报错信息:
[root@MyServer bin]# ./mongod
-bash: ./mongod: cannot execute binary file
搜索发现,是mongodb的版本和系统不一致
重新下载32位版本的mongodb
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-3.2.9.tgz

[root@MyServer bin]# ./mongod --dbpath=/mongodbData/db/
2016-08-28T02:00:55.425+0800 I CONTROL  [main]
2016-08-28T02:00:55.425+0800 W CONTROL  [main] 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2016-08-28T02:00:55.425+0800 I CONTROL  [main]
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] MongoDB starting : pid=13598 port=27017 dbpath=/mongodbData/db/ 32-bit host=MyServer
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] db version v3.2.9
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] git version: 22ec9e93b40c85fc7cae7d56e7d6a02fd811088c
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] modules: none
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] build environment:
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten]     distarch: i686
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten]     target_arch: i386
2016-08-28T02:00:55.439+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/mongodbData/db/" } }
2016-08-28T02:00:55.479+0800 I STORAGE  [initandlisten] exception in initAndListen: 28663 Cannot start server. The default storage engine 'wiredTiger' is not available with this build of mongod. Please specify a different storage engine explicitly, e.g. --storageEngine=mmapv1., terminating
2016-08-28T02:00:55.479+0800 I CONTROL  [initandlisten] dbexit:  rc: 100

修正命令
./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1

出现错误信息:
[root@MyServer bin]# ./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1
2016-08-28T11:23:34.764+0800 I CONTROL  [initandlisten] MongoDB starting : pid=17000 port=27017 dbpath=/mongodbData/db/ 32-bit host=MyServer
2016-08-28T11:23:34.764+0800 I CONTROL  [initandlisten] db version v3.2.9
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten] git version: 22ec9e93b40c85fc7cae7d56e7d6a02fd811088c
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten] modules: none
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten] build environment:
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten]     distarch: i686
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten]     target_arch: i386
2016-08-28T11:23:34.765+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/mongodbData/db/", engine: "mmapv1", journal: { enabled: true } } }
2016-08-28T11:23:34.869+0800 I JOURNAL  [initandlisten] journal dir=/mongodbData/db/journal
2016-08-28T11:23:34.870+0800 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2016-08-28T11:23:34.956+0800 I JOURNAL  [durability] Durability thread started
2016-08-28T11:23:34.957+0800 I JOURNAL  [journal writer] Journal writer thread started
2016-08-28T11:23:34.986+0800 I CONTROL  [initandlisten]
2016-08-28T11:23:34.986+0800 I CONTROL  [initandlisten] ** WARNING: This 32-bit MongoDB binary is deprecated
2016-08-28T11:23:34.986+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2016-08-28T11:23:34.986+0800 I CONTROL  [initandlisten]
2016-08-28T11:23:34.986+0800 I CONTROL  [initandlisten]
2016-08-28T11:23:34.987+0800 I CONTROL  [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2016-08-28T11:23:34.987+0800 I CONTROL  [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
2016-08-28T11:23:34.987+0800 I CONTROL  [initandlisten] **       See http://dochub.mongodb.org/core/32bit
2016-08-28T11:23:34.987+0800 I CONTROL  [initandlisten]
2016-08-28T11:23:34.987+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. The locked memory size is 32768 bytes, it should be at least 65536 bytes
2016-08-28T11:23:34.987+0800 I CONTROL  [initandlisten]
2016-08-28T11:23:35.127+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/mongodbData/db/diagnostic.data'
2016-08-28T11:23:35.128+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2016-08-28T11:23:35.128+0800 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-08-28T11:23:35.181+0800 W NETWORK  [HostnameCanonicalizationWorker] Failed to obtain address information for hostname MyServer: Name or service not known

最后一句报错的解决方法:
1、打开etc/sysconfig/network发现主机名是MyServer



2、然后打开/etc/hosts
 # Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               MyVPS localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6

改为
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               MyVPS MyServer localhost
::1             localhost6.localdomain6 localhost6

仍然报错:
2016-08-28T11:23:35.181+0800 W NETWORK  [HostnameCanonicalizationWorker] Failed to obtain address information for hostname MyServer: Name or service not known
 [HostnameCanonicalizationWorker] Failed to obtain address information for hostname MyServer: Name or service not known2016-08-28T11:33:03.866+0800 I CONTROL  [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
2016-08-28T11:33:03.866+0800 I FTDC     [signalProcessingThread] Shutting down full-time diagnostic data capture
2016-08-28T11:33:03.869+0800 I CONTROL  [signalProcessingThread] now exiting
2016-08-28T11:33:03.869+0800 I NETWORK  [signalProcessingThread] shutdown: going to close listening sockets...
2016-08-28T11:33:03.869+0800 I NETWORK  [signalProcessingThread] closing listening socket: 5
2016-08-28T11:33:03.869+0800 I NETWORK  [signalProcessingThread] closing listening socket: 6
2016-08-28T11:33:03.869+0800 I NETWORK  [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2016-08-28T11:33:03.869+0800 I NETWORK  [signalProcessingThread] shutdown: going to flush diaglog...
2016-08-28T11:33:03.869+0800 I NETWORK  [signalProcessingThread] shutdown: going to close sockets...
2016-08-28T11:33:03.869+0800 I STORAGE  [signalProcessingThread] shutdown: waiting for fs preallocator...
2016-08-28T11:33:03.869+0800 I STORAGE  [signalProcessingThread] shutdown: final commit...
2016-08-28T11:33:03.869+0800 I JOURNAL  [signalProcessingThread] journalCleanup...
2016-08-28T11:33:03.869+0800 I JOURNAL  [signalProcessingThread] removeJournalFiles
2016-08-28T11:33:03.872+0800 I JOURNAL  [signalProcessingThread] Terminating durability thread ...
2016-08-28T11:33:03.987+0800 I JOURNAL  [journal writer] Journal writer thread stopped
2016-08-28T11:33:03.987+0800 I JOURNAL  [durability] Durability thread stopped
2016-08-28T11:33:03.988+0800 I STORAGE  [signalProcessingThread] shutdown: closing all files...
2016-08-28T11:33:04.009+0800 I STORAGE  [signalProcessingThread] closeAllFiles() finished
2016-08-28T11:33:04.009+0800 I STORAGE  [signalProcessingThread] shutdown: removing fs lock...
2016-08-28T11:33:04.010+0800 I CONTROL  [signalProcessingThread] dbexit:  rc: 0
[root@MyServer bin]#  [HostnameCanonicalizationWorker] Failed to obtain address information for hostname MyServer: Name or service not known[root@MyServer bin]# ./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1



2016-08-28T16:35:04.923+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. The locked memory size is 32768 bytes, it should be at least 65536 bytes


解决方案:
vi /etc/security/limits.conf
添加下面的信息
mongod soft nofile 65536  
mongod hard nofile 65536  
mongod soft nproc 32768  
mongod hard nproc 32768

vi /etc/security/limits.d/90-nproc.conf

cat /etc/security/limits.d

又一次无故宕机,mongostat监控信息
insert query update delete getmore command % dirty % used flushes vsize    res qr|qw ar|aw netIn netOut conn                      time
no reachable servers
no reachable servers

启用mongodb的日志
./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1 --logpath=/mongodbData/log/mongodb.log --logappend

启用日志后,执行上述命令,数据库信息不再屏幕显示,我差点误以为mongodb启动异常。监控mongodb日志发现,之前打印在屏幕的信息,保存到日志中了。


仍然出现之前那样的意外停止mongodb服务的情况,解决方案,加上--fork      http://blog.youkuaiyun.com/shawyeok/article/details/46486683
./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1 --logpath=/mongodbData/log/mongodb.log --logappend --fork
或者
./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1 --logpath=/mongodbData/log/mongodb.log --logappend &
node.js的启动也加上&
 i using linux command to run mongod as background: 使用 &
 
 关闭ssh终端后,node.js服务终止了。网上的解决方案有:
 &
 nohup
 都不起作用。还有在代码级别的解决方案,看不懂。
 最后使用screen解决了问题
 screen
 http://www.cnblogs.com/liuzhenwei/p/5177257.html
 首先创建screen
 screen -S "DEBUG=node-blog:* npm start"
 然后执行启动node应用的命令
 DEBUG=node-blog:* npm start
 最后保存该screen
 先按ctrl+a,再按d
 查看上一次保留了的screen
 screen -ls
 
 [root@MyServer node-blog]# screen -ls
There is a screen on:
        5673.DEBUG=node-blog npm start  (Detached)
1 Socket in /var/run/screen/S-root.

恢复上一次保留的某个screen
screen -r DEBUG=node-blog npm start

screen - r 5673

提示信息:
[root@MyServer bin]# ./mongod --dbpath=/mongodbData/db/ --journal --storageEngine=mmapv1 --logpath=/mongodbData/log/mongodb.log --logappend --fork
about to fork child process, waiting until server is ready for connections.
forked process: 21918
child process started successfully, parent exiting
[root@MyServer bin]# ps -ef | grep mongodb


相关知识
linux的ulimit各种限制之深入分析(完全不懂)
http://blog.sina.com.cn/s/blog_59b6af6901011ekd.html
 关于更改linux下系统资源限制:ulimit
 http://blog.youkuaiyun.com/zhxue123/article/details/7217536
 在32位系统下使用MongoDB的一点心得 (网站密码数据库用来测试mongodb,新方法)
 http://blog.youkuaiyun.com/chaijunkun/article/details/7236911
 signal信号详解
 http://blog.chinaunix.net/uid-20441206-id-3138952
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值