Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复
關(guān)于MongoDB的windows的 安裝,可以參考:
http://www.runoob.com/mongodb/mongodb-window-install.html
關(guān)于Linux的安裝可以參考:
http://www.runoob.com/mongodb/mongodb-linux-install.html
使用MongoDB的場景:
A:需要寫入大量的數(shù)據(jù),但是這些數(shù)據(jù)的價值并不是太高,比如:日志
B:數(shù)據(jù)增長量較大,而且數(shù)據(jù)結(jié)構(gòu)有時候還不一致
C:未來數(shù)據(jù)會很大。
注意:Mongodb有32位和64位之分,32位為數(shù)據(jù)庫最大容量不能超過2GB
1、下載Linux下MongoDB的安裝文件
下載地址:https://www.mongodb.com/download-center#community
選擇Linux ,previous Release,然后選擇指定版本進行安裝,截圖如下:
2、將下載好的mongodb-linux-x86_64-ubuntu1404-3.2.11.tgz ?解壓
3、將mongodb-linux-x86_64-ubuntu1404-3.2.11 中的內(nèi)容移動到/usr/local/mongodb
mkdir -p?/usr/local/mongodb
mv?mongodb-linux-x86_64-ubuntu1404-3.2.11/*?/usr/local/mongodb
創(chuàng)建數(shù)據(jù)庫目錄
cd?/usr/local/mongodb
mkdir -p data/db
創(chuàng)建日志文件的目錄
mkdir log
4、配置環(huán)境變量/etc/profile
vim /etc/profile
保存文件,讓配置文件立即生效
source?/etc/profile
5、通過命令的方式啟動mongodb的方式如下:
cd /usr/local/mongodb
./bin/mongod -port 27017 -dbpath data/db --logpath log/mongodb.log --rest
注意上面啟動的是mongodb的服務(wù)端
啟動客戶端的方式是:
cd /usr/local/mongodb?
./bin/mongo mongodb機器ip:27017
查看mongodb的進程的方式:
ps -ef | grep mongodb
殺死m(xù)ongodb進程的方式:pkill?mongod
通過瀏覽器訪問mongodb的控制臺,之所以可以訪問時因為在啟動mongodb的時候后面加了一個 --rest
同理:window上的啟動服務(wù)器端的示例:
mongod.exe --auth -port 27017 --dbpath "D:\installed\mongoDB\data\db" --logpath "D:\installed\mongoDB\docCheck\logs\MongoDB.log"
啟動客戶端的方式:
mongo.exe 127.0.0.1:27017
6、關(guān)于啟動參數(shù)的說明(下面以window下的配置說明為示例):
--auth ? ?//安全驗證方式啟動(即需要用戶名和密碼)
--dbpath "D:\installed\mongoDB\data\db" ? ? ? ? ? //設(shè)定數(shù)據(jù)文件存放地址
--logpath "D:\installed\mongoDB\docCheck\logs\MongoDB.log" ? ?//設(shè)定日志文件存放地址
7、通過配置文件來配置Mongodb
首先在/usr/local/mongodb目錄下 新建一個文件,文件名任意,在這里取名為:mongodb.conf
# vim mongodb.conf
內(nèi)容如下:
port=27017
replSet=docdetection ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#這個是創(chuàng)建副本集的方式
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
fork=true
noauth=true
smallfiles=true
noprealloc=true
rest=true
啟動它:
root@localhost:/usr/local/mongodb# ./bin/mongod -f mongodb.conf
啟動客戶端測試:
root@localhost:/usr/local/mongodb# ./bin/mongo localhost:27017
MongoDB shell version: 3.2.11
connecting to: localhost:27017/test
Server has startup warnings:?
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten]?
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten]?
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten] ** ? ? ? ?We suggest setting it to 'never'
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten]?
2017-02-19T18:39:14.605+0800 I CONTROL ?[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-02-19T18:39:14.606+0800 I CONTROL ?[initandlisten] ** ? ? ? ?We suggest setting it to 'never'
2017-02-19T18:39:14.606+0800 I CONTROL ?[initandlisten]
8、自啟動腳本:
vi /etc/mongodb.conf
輸入以下內(nèi)容:
port=27017
replSet=docdetection?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#這個是創(chuàng)建副本集的方式
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
fork=true
noauth=true
smallfiles=true
noprealloc=true
rest=true
下面加入自啟動
cd /etc/init.d/
vi mongodb
添加一下內(nèi)容:
#!/bin/bash
start() {
? ? /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf
}
stop() {
? ? /usr/local/mongodb/bin/mongod -f /etc/mongodb.conf --shutdown
}
case "$1" in
? ? start)
? ? start
;;
? ? stop)
? ? stop
;;
? ? restart)
? ? stop
? ? start
;;
? ? *)
? ? echo $"Usage:$0 {start|stop|restart}"
? ? exit 1
esac
加入自啟動:
chkconfig --add mongodb
chmod +x? mongodb
chkconfig mongodb on
如果是ubuntu
update-rc.d mongodb defaults
============================start==================================
上面是配置一個集群的情況,下面是配置多個集群的情況:
運行1個主節(jié)點,2個從節(jié)點中其中是一個仲裁節(jié)點(Arb)
/usr/local/mongodb/bin/mongod --replSet docdetection -port 27017 --dbpath /usr/local/mongodb/data/db1 --logpath /usr/local/mongodb/log/mongodb.log --oplogSize 1024 1>/dev/null 2>&1 &
/usr/local/mongodb/bin/mongod --replSet docdetection -port 27018 --dbpath /usr/local/mongodb/data/db2 --logpath /usr/local/mongodb/log/mongodb2.log --oplogSize 1024 1>/dev/null 2>&1 &
/usr/local/mongodb/bin/mongod --replSet docdetection -port 27019 --dbpath /usr/local/mongodb/data/db3 --logpath /usr/local/mongodb/log/mongodb3.log --oplogSize 1024 1>/dev/null 2>&1 &
其中:docdetection是副本集的名字,節(jié)點必須相同,--dbpath指定數(shù)據(jù)庫存儲路徑,-port指定偵聽端口,--oplogSize指定數(shù)據(jù)同步之間的緩存的空間大小,暫時指定1G。選擇27107為主節(jié)點,進入27017
初始化副本集需要配置表,申明配置表如下:
mongo localhost:27017
注意_id和副本集啟動的共享名稱一致。下面來逐步添加節(jié)點的數(shù)據(jù)信息:
config = {_id: "docdetection", members: []}
config.members.push({_id: 0, host: "localhost:27017"})
config.members.push({_id: 1, host: "localhost:27018"})
config.members.push({_id: 2, host: "localhost:27019", arbiterOnly: true})
也可以使用rs.add和rs.addArb函數(shù)來實現(xiàn)同樣的操作。然后需要用這個表作為參數(shù)初始化副本集,在27017端口的shell執(zhí)行下面的內(nèi)容:
rs.initiate(config)
返回ok為1表示初始化成功,三個節(jié)點互相檢測通信,可以查看三個終端窗口的信息確認,完成通信后,在27017端口的shell回車執(zhí)行命令確認配置。
rs.isMaster()
注意到27017端口的實例ismaster為ture,secondary為false,hosts有2個實例,arbiter有1個元素,primary關(guān)鍵key表示了主節(jié)點,通信完成幾次回車后可以看到27017的端口shell的提示符已經(jīng)改變,更改為application:PRIMARY,查看更詳細的信息:
rs.status()
顯示了每個節(jié)點的健康狀況,名稱,啟動的時間,節(jié)點的類型等。
rs.conf()
插入測試數(shù)據(jù):
db.users.insert({username: "visionwang", age: 26})
下面是替代上面啟動mongod的方式。(因為使用上面的mongod的方式啟動時不時自動停掉mongodb的服務(wù)器,所以下面需要讓服務(wù)不停掉,需要按照下面的方式進行配置)
vim /etc/mongodb1.conf
內(nèi)容是:
port=27017
replSet=docdetection ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#這個是創(chuàng)建副本集的方式
dbpath=/usr/local/mongodb/data/db1
logpath=/usr/local/mongodb/log/mongodb1.log
logappend=true
fork=true
noauth=true
smallfiles=true
noprealloc=true
rest=true
vim /etc/mongodb2.conf
port=27018
replSet=docdetection ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#這個是創(chuàng)建副本集的方式
dbpath=/usr/local/mongodb/data/db2
logpath=/usr/local/mongodb/log/mongodb2.log
logappend=true
fork=true
noauth=true
smallfiles=true
noprealloc=true
rest=true
port=27019
replSet=docdetection ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#這個是創(chuàng)建副本集的方式
dbpath=/usr/local/mongodb/data/db3
logpath=/usr/local/mongodb/log/mongodb3.log
logappend=true
fork=true
noauth=true
smallfiles=true
noprealloc=true
rest=true
cd /etc/init.d/
vi mongodb
添加一下內(nèi)容:
#!/bin/bash
start() {
? ? /usr/local/mongodb/bin/mongod -f /etc/mongodb1.conf
/usr/local/mongodb/bin/mongod -f /etc/mongodb2.conf
/usr/local/mongodb/bin/mongod -f /etc/mongodb3.conf
}
stop() {
? ? /usr/local/mongodb/bin/mongod -f /etc/mongodb1.conf --shutdown
/usr/local/mongodb/bin/mongod -f /etc/mongodb2.conf --shutdown
/usr/local/mongodb/bin/mongod -f /etc/mongodb3.conf --shutdown
}
case "$1" in
? ? start)
? ? start
;;
? ? stop)
? ? stop
;;
? ? restart)
? ? stop
? ? start
;;
? ? *)
? ? echo $"Usage:$0 {start|stop|restart}"
? ? exit 1
esac
如果是ubuntu
update-rc.d mongodb defaults
============================end==================================
若方便重啟,可以使用reboot重啟測試(也可以不重啟進行測試)
測試如下:
root@localhost:/etc/init.d# ./mongodb start
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 13622
child process started successfully, parent exiting
root@localhost:/etc/init.d# ./mongodb stop
note: noprealloc may hurt performance in many applications
killing process with pid: 13738
root@localhost:/etc/init.d# ./mongodb restart
note: noprealloc may hurt performance in many applications
There doesn't seem to be a server running with dbpath: /usr/local/mongodb/data/db
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 13764
child process started successfully, parent exiting
root@localhost:/etc/init.d# /usr/local/mongodb/bin/mongo
mongo ? ? ? ? mongodump ? ? mongofiles ? ?mongooplog ? ?mongorestore ?mongosniff ? ?mongotop ? ? ?
mongod ? ? ? ?mongoexport ? mongoimport ? mongoperf ? ? mongos ? ? ? ?mongostat ? ??
root@localhost:/etc/init.d# /usr/local/mongodb/bin/mongo admin
MongoDB shell version: 3.2.11
connecting to: admin
Server has startup warnings:?
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten]?
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten]?
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten] ** ? ? ? ?We suggest setting it to 'never'
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten]?
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten] ** ? ? ? ?We suggest setting it to 'never'
2017-02-19T20:48:05.038+0800 I CONTROL ?[initandlisten]?
> show dbs
local ?0.000GB
>
以管理員身份進入管理后臺
/usr/local/mongodb/bin/mongo admin
發(fā)現(xiàn)結(jié)果是:
root@localhost:/usr/local/mongodb# ./bin/mongo admin
MongoDB shell version: 3.2.11
connecting to: admin
Server has startup warnings:?
2017-02-19T20:33:58.602+0800 I CONTROL ?[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-02-19T20:33:58.602+0800 I CONTROL ?[initandlisten]?
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten]?
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten] ** ? ? ? ?We suggest setting it to 'never'
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten]?
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten] ** ? ? ? ?We suggest setting it to 'never'
2017-02-19T20:33:58.603+0800 I CONTROL ?[initandlisten]?
> show dbs;
local ?0.000GB
經(jīng)過以上步步驟使得mongodb通過腳本自動啟動
9、Windows下創(chuàng)建MongoDB的啟動服務(wù)
A:在MongoDB目錄下新建一個logs文件夾用于存放日志文件,然后組合鍵win + x + a,打開管理員命令提示符。 ?在左側(cè)選擇管理員:命令提示符
C:\WINDOWS\system32>echo logpath=D:\installed\mongoDB\docCheck\logs\MongoDB.log > "D:\installed\mongoDB\docCheck\mongod.cfg"C:\WINDOWS\system32>echo dbpath=D:\installed\mongoDB\data\db >> "D:\installed\mongoDB\docCheck\mongod.cfg"
B:準(zhǔn)備工作已經(jīng)做完,下面開始最重要的一步,使用SC命令創(chuàng)建MongoDB服務(wù):
C:\WINDOWS\system32>sc.exe create MongoDB binpath="D:\installed\mongoDB\docCheck\bin\mongod.exe --service --config=D:\installed\mongoDB\docCheck\mongod.cfg"
[SC] CreateService 成功
C:\WINDOWS\system32>
C:開啟服務(wù),使用如下命令:
C:\WINDOWS\system32>net start MongoDB
MongoDB 服務(wù)已經(jīng)啟動成功。
截圖如下:
然后win + r,輸入services.msc打開windows服務(wù)列表,你會看到一個名稱為MongoDB,狀態(tài)為"正在運行"的服務(wù)。
到此為止你就可以從服務(wù)中啟動MongoDB,然后使用它的服務(wù)而不用一直保留著另一個服務(wù)端的DOS窗口了。
10、另外,還可以通過Robomongo驗證mongodb是否可以遠程連接
=======================================================================
對于mongodb的數(shù)據(jù)遷移,遷移的方式如下:
將docdetection數(shù)據(jù)庫拷貝到/usr/local/mongodb
mongodump -h localhost -d docdetection -o /usr/local/mongodb
將/usr/local/mongodb/docdetection/下的數(shù)據(jù)庫文件docdetection導(dǎo)入到mongodb中
mongorestore -h localhost -d docdetection --dir ?/usr/local/mongodb/docdetection/
總結(jié)
以上是生活随笔為你收集整理的Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java并发包消息队列
- 下一篇: 我想知道去年和前年各大军校的录取分数线,