CentOS 7.2 安装 MongoDB

摘要:centos 7.2 安装 mongodb,以及 mongodb 的配置后台启动,和两种启动方式等。

安装步骤

1、下载 mongodb

https://www.mongodb.com/download-center#community

[root@localhost download]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.10.tgz


2、解压 && 迁移位置

[root@localhost download]#tar zxf mongodb-linux-x86_64-4.0.10.tgz 
[root@localhost download]#mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb


3、查看 mongodb 文件

[root@localhost local]# tree -Ca mongodb/     
mongodb/
├── bin
│   ├── bsondump
│   ├── install_compass
│   ├── mongo
│   ├── mongod
│   ├── mongodump
│   ├── mongoexport
│   ├── mongofiles
│   ├── mongoimport
│   ├── mongoreplay
│   ├── mongorestore
│   ├── mongos
│   ├── mongostat
│   └── mongotop
├── LICENSE-Community.txt
├── MPL-2
├── README
├── THIRD-PARTY-NOTICES
└── THIRD-PARTY-NOTICES.gotools

1 directory, 18 files

mongodb 的可执行文件都在 bin 目录下,启动 mongodb 服务端的命令是 mongod。

在启动之前我们需要在在服务器创建这个  /data/db 路径的数据目录,这个目录在安装过程中不会自动创建,所以需要手动创建,这个 /data/db 路径是 mongodb 默认的启动数据库路径(--dbpath)。

但是也可以随意的创建一个数据库目录,在启动的时候通过 mongod --dbpath 路径来指定启动路径,如果不创建默认的 /data/db 后者启动的时候没有自定义数据库目录是无法启动成功的。


4、启动 mongodb 服务

# 我的数据库路径 /usr/local/mongodb/data/db
[root@localhost mongodb]# /usr/local/mongodb/bin/mongod --dbpath=./data/db/
[root@localhost mongodb]# /usr/local/mongodb/bin/mongod --dbpath=./data/db/
2019-07-23T18:24:41.496+0800 I CONTROL  [initandlisten] MongoDB starting : pid=65401 port=27017 dbpath=./data/db/ 64-bit host=localhost
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten] db version v4.0.10
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten] modules: none
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten] build environment:
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-07-23T18:24:41.497+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "./data/db/" } }
2019-07-23T18:24:41.511+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=256M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2019-07-23T18:24:42.169+0800 I STORAGE  [initandlisten] WiredTiger message [1563877482:169714][65401:0x7f6f65968a40], txn-recover: Set global recovery timestamp: 0
2019-07-23T18:24:42.176+0800 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server. 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.185+0800 I STORAGE  [initandlisten] createCollection: admin.system.version with provided UUID: c0aa34c5-3cf2-4c69-b7b7-f32794b22f51
2019-07-23T18:24:42.192+0800 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 4.0
2019-07-23T18:24:42.195+0800 I STORAGE  [initandlisten] createCollection: local.startup_log with generated UUID: c38e93c7-be77-42be-95b3-ca823be8183c
2019-07-23T18:24:42.210+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory './data/db/diagnostic.data'
2019-07-23T18:24:42.211+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2019-07-23T18:24:42.211+0800 I STORAGE  [LogicalSessionCacheRefresh] createCollection: config.system.sessions with generated UUID: 86600d5d-6030-4ff4-a97f-45d99f9ebc56
2019-07-23T18:24:42.221+0800 I INDEX    [LogicalSessionCacheRefresh] build index on: config.system.sessions properties: { v: 2, key: { lastUse: 1 }, name: "lsidTTLIndex", ns: "config.system.sessions", expireAfterSeconds: 1800 }
2019-07-23T18:24:42.221+0800 I INDEX    [LogicalSessionCacheRefresh]     building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2019-07-23T18:24:42.222+0800 I INDEX    [LogicalSessionCacheRefresh] build index done.  scanned 0 total records. 0 secs

通过返回信息看到 mongodb 服务已经启动成功,mongodb 默认使用的端口是 27017,当然我们也可以在启动时通过 --port 端口号参数来自定义端口(自定义端口最大不要超过65535),因为是第一次启动,所以构建了索引。

[root@localhost ~]# ps aux | grep mongod
root       949  0.0  0.0 112732   984 pts/1    S+   18:36   0:00 grep --color=auto mongod
root     65401  0.8  5.6 992656 56668 pts/0    Sl+  18:24   0:05 /usr/local/mongodb/bin/mongod --dbpath=./data/db/
[root@localhost ~]# netstat -tunlp | grep 27017
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      65401/mongod

我们也可以使用 /usr/local/mongodb/bin/mongod -help 查看启动参数。

这次启动是前台进程模式,所以不要关闭,直接打开一个新的终端来测试 mongodb。


5、启动 mongodb 客户端服务

[root@localhost mongodb]# /usr/local/mongodb/bin/mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("145459c4-f710-4f23-a469-a690c4eac725") }
MongoDB server version: 4.0.10
Server has startup warnings: 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server. 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-07-23T18:24:42.184+0800 I CONTROL  [initandlisten] 
>

mongodb 客户端就链接成功了,我们来测试下。


6、测试 mongodb 服务

# 由于它是一个JavaScript shell,您可以运行一些简单的算术运算:
> 1+1
2
> 2+2
4
> 

# 现在让我们插入一些简单的数据,并对插入的数据进行检索
# 将字符串 mongodb 插入到 collections 集合的 name 字段中。
> db.collections.insert({name:'mongodb'})
WriteResult({ "nInserted" : 1 })
> db.collections.find()
{ "_id" : ObjectId("5d36e5efb49cb707fa4d7abe"), "name" : "mongodb" }
>


配置后台启动

因为默认 mongodb 是在前台开启了一个进程,如果我们关闭这个终端 mongodb 服务就终止了,所以我们需要开启一个后台的 mongodb 服务。

其实这个时候我们打开第一个终端发现,我们启动客户端和关闭客户端产生的日志都会输出出来。后来启动的过程就是将在前台输出的日志文件都让他们输入到一个日志文件里面就可以了。

启动方式有两种,参数文件启动和配置文件启动,启动效果大同小异。


创建日志目录

# 和数据库的 db 目录同级创建就可以了
[root@localhost data]# pwd
/usr/local/mongodb/data
[root@localhost data]# mkdir log
[root@localhost data]# ll
总用量 4
drwxr-xr-x 4 root root 4096 7月  23 19:09 db
drwxr-xr-x 2 root root    6 7月  23 19:10 log


方式一:参数文件启动

# 其实就是指定一个 log 文件,然后之前在前台启动输出在屏幕的信息都会输出在这个 log 文件中
[root@localhost mongodb]# /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db/ -logpath /usr/local/mongodb/data/log/mongo.log -logappend -fork -port 27017
about to fork child process, waiting until server is ready for connections.
forked process: 5009
child process started successfully, parent exiting

# --dbpath 指定数据库目录
# --logpath 指定日志文件,之前我们再前台启动的输出在屏幕的信息都会存在这个日志文件中
# --logappend 日志以追加写的形式写入
# --fork fork一个服务器进程,以守护进程的方式运行 mongodb
# --port 指定端口号

[root@localhost log]# ps aux | grep mongod
root      3309  0.9  4.9 996936 50236 ?        Sl   19:16   0:03 /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db/ -logpath /usr/local/mongodb/data/log/mongo.log -logappend -fork -port 27017
root      3703  0.0  0.0 112732   984 pts/0    S+   19:22   0:00 grep --color=auto mongod
[root@localhost log]# netstat -tunlp | grep 27017
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      3309/mongod


方式二:配置文件启动

[root@localhost log]# vim /usr/local/mongodb/mongodb.cnf
dbpath=/usr/local/mongodb/data/db/ # 数据库目录
logpath=/usr/local/mongodb/data/log/mongo.log # 指定 mongodb 日志文件,注意是指定文件不是目录
logappend=true # 使用追加的方式写日志
fork=true # 以守护进程的方式运行 mongodb,创建服务器进程
port=27017 # 指定服务端口号

# 启动 mongodb 服务
# 使用启动参数 -f 这个参数来指定配置文件启动
[root@localhost mongodb]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.cnf
about to fork child process, waiting until server is ready for connections.
forked process: 4941
child process started successfully, parent exiting

以上两种方式都是将 mongodb 服务再后台启动,如果想关闭 mongodb 服务,直接 kill 掉进程就可以了。

结束语:感谢您对本网站文章的浏览,欢迎您的分享和转载,但转载请说明文章出处。
Top