Linux下MongoDB的安裝與環(huán)境變量設置

MongoDB是一個C++編寫的基于分布式文件存儲的數(shù)據(jù)庫胡野,是一個介于關系和非關系之間的數(shù)據(jù)庫,當然也屬于NoSQL的行列,存儲方式和Redis類似,是json格式的kav-value存儲方式只嚣,只是Redis是內(nèi)存存儲,而MongoDB是和普通的數(shù)據(jù)庫目錄一樣存儲在硬盤上

  下面就在Linux上部署單節(jié)點的MongoDB艺沼,過程如下:

  一册舞、首先去MongoDB官網(wǎng)下載軟件包,首頁是:https://www.mongodb.com/, 然后障般,點擊右上角Download按鈕進入下載界面调鲸,下載地址是:https://www.mongodb.com/download-center 進入后往下拉會看到下載選項,可以看到這里有很多版本挽荡,默認選擇第一個社區(qū)版本藐石,然后下面操作系統(tǒng)默認是Windows,這里要選擇Linux? 然后根據(jù)操作系統(tǒng)是32位還是64位下載相應版本的軟件包即可定拟,這里下載的是mongodb-linux-x86_64-3.2.10.tgz于微,下載完成之后上傳至Linux系統(tǒng),開始執(zhí)行安裝

  二青自、這里預定安裝目錄為/usr/local/mongodb角雷,實際中可以自己確定,現(xiàn)在執(zhí)行下面命令將MongoDB安裝到指定位置:

tar -xvzf mongodb-linux-x86_64-4.0.3tgz

mv mongodb-linux-x86_64-4.0.3? /usr/local/mongodb

cd /usr/local/mongodb/

  三性穿、現(xiàn)在就已經(jīng)安裝并進入了mongodb的目錄,這時候為了方便執(zhí)行雷滚,可以把bin目錄絕對路徑添加到環(huán)境變量即可需曾,具體過程不再敘述了

新建data和logs文件夾,并在logs文件夾內(nèi)創(chuàng)建mongo.log文件

cd mongodb

mkdir datamkdir logs

cd logs/touchmongo.log

接下來我們繼續(xù)創(chuàng)建配置文件mongo.conf

vim mongo.conf

  在文件里面寫入如下配置:

dbpath=/mongodb/data

logpath=/mongodb/logs/mongo.log

logappend=true

journal=true

quiet=true

port=27017

fork=true? #后臺運行

bind_ip=0.0.0.0??? #允許任何IP進行連接

auth=false #是否授權連接

  這里配置了數(shù)據(jù)庫路徑和日志路徑以及端口祈远,寫完后:wq保存退出呆万。

  接下來配置環(huán)境變量/etc.profle文件。往里面新增一行:

export PATH=$PATH:/usr/local/mongodb/bin

  其中$PATH后面跟的是實際安裝的mongodb的bin所在目錄车份。

  接著重新加載配置:

source /etc/profile

  四谋减、mongodb數(shù)據(jù)庫默認數(shù)據(jù)目錄會存放在/data/db 所以可以執(zhí)行命令 mkdir -p /data/db 建立目錄,也可以手動設置其他目錄扫沼,但是無論默認還是自定義出爹,數(shù)據(jù)目錄必須手動創(chuàng)建庄吼,否則mongodb會報錯,現(xiàn)在可以啟動mongodb服務了严就,命令為: ./bin/mongod 服務默認會在前臺執(zhí)行总寻,如果數(shù)據(jù)目錄不是/data/db 那么可以手動指定目錄,啟動命令為: ./bin/mongod --dbpath=/usr/mongo_data MongoDB數(shù)據(jù)庫服務的默認端口是27017

[root@Anwar01 mongodb]# ./bin/mongod

2018-10-27T13:46:05.017+0800 I CONTROL? [initandlisten] MongoDB starting : pid=2118 port=27017 dbpath=/data/db 64-bit host=Anwar01

2018-10-27T13:46:05.017+0800 I CONTROL? [initandlisten] db version v4.0.3

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten] allocator: tcmalloc

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten] modules: none

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten] build environment:

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten]? ? distarch: x86_64

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten]? ? target_arch: x86_64

2018-10-27T13:46:05.018+0800 I CONTROL? [initandlisten] options: {}

2018-10-27T13:46:05.042+0800 I STORAGE? [initandlisten] wiredtiger_open config: create,cache_size=390M,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),

2018-10-27T13:46:06.055+0800 I STORAGE? [initandlisten] WiredTiger message [1540619166:55594][2118:0x7f218994b9c0], txn-recover: Set global recovery timestamp: 0

2018-10-27T13:46:06.226+0800 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten] ** WARNING: Access control is not enabled for the database.

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten] **? ? ? ? ? Read and write access to data and configuration is unrestricted.

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten] ** WARNING: This server is bound to localhost.

2018-10-27T13:46:06.571+0800 I CONTROL? [initandlisten] **? ? ? ? ? Remote systems will be unable to connect to this server.

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] **? ? ? ? ? Start the server with --bind_ip <address> to specify which IP

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] **? ? ? ? ? addresses it should serve responses from, or with --bind_ip_all to

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] **? ? ? ? ? bind to all interfaces. If this behavior is desired, start the

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] **? ? ? ? ? server with --bind_ip 127.0.0.1 to disable this warning.

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] **? ? ? ? We suggest setting it to 'never'

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] **? ? ? ? We suggest setting it to 'never'

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.

2018-10-27T13:46:06.572+0800 I CONTROL? [initandlisten]

2018-10-27T13:46:06.572+0800 I STORAGE? [initandlisten] createCollection: admin.system.version with provided UUID: 959e947f-ef9d-4be9-b37c-76d22776c5e1

2018-10-27T13:46:06.784+0800 I COMMAND? [initandlisten] setting featureCompatibilityVersion to 4.0

2018-10-27T13:46:06.792+0800 I STORAGE? [initandlisten] createCollection: local.startup_log with generated UUID: 841debcb-81aa-4b95-92a3-4b188780a205

2018-10-27T13:46:07.008+0800 I FTDC? ? [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'

2018-10-27T13:46:07.009+0800 I NETWORK? [initandlisten] waiting for connections on port 27017

2018-10-27T13:46:07.009+0800 I STORAGE? [LogicalSessionCacheRefresh] createCollection: config.system.sessions with generated UUID: 79f75ca8-d3e1-4ce7-b360-c43c5933a3fb

2018-10-27T13:46:07.357+0800 I INDEX? ? [LogicalSessionCacheRefresh] build index on: config.system.sessions properties: { v: 2, key: { lastUse: 1 }, name: "lsidTTLIndex", ns: "config.system.sessions", expireAfterSeconds: 1800 }

2018-10-27T13:46:07.357+0800 I INDEX? ? [LogicalSessionCacheRefresh] building index using bulk method; build may temporarily use up to 500 megabytes of RAM

2018-10-27T13:46:07.388+0800 I INDEX? ? [LogicalSessionCacheRefresh] build index done.? scanned 0 total records. 0 secs

2018-10-27T13:46:07.389+0800 I COMMAND? [LogicalSessionCacheRefresh] command config.$cmd command: createIndexes { createIndexes: "system.sessions", indexes: [ { key: { lastUse: 1 }, name: "lsidTTLIndex", expireAfterSeconds: 1800 } ], $db: "config" } numYields:0 reslen:114 locks:{ Global: { acquireCount: { r: 2, w: 2 } }, Database: { acquireCount: { w: 2, W: 1 } }, Collection: { acquireCount: { w: 2 } } } protocol:op_msg 379ms

五梢为、另外MongoDB提供了簡單的web用戶界面渐行,可以查看服務的狀態(tài)等,默認不開啟可以在啟動服務時添加參數(shù)铸董,命令是: ./bin/mongod --rest

  啟動后祟印,默認的web管理端口是28017,這時候訪問http://ip:28017即可看到管理界面

  如果想讓服務一直跑在后臺粟害,那么可以使用nohup或者screen都可以

六蕴忆、從命令行啟動

? ? 執(zhí)行mongod,啟動MongoDB服務器我磁,mongod有很多可配置的啟動選項孽文,可以使用mongod --help查看所有選項

--dbpath:

指定數(shù)據(jù)目錄,默認是/data/db下夺艰,每個mongod進程都需要獨立的數(shù)據(jù)目錄芋哭,加入有3個mongod實例,就必須要有3個獨立的數(shù)據(jù)目錄郁副。當mongod啟動時减牺,會在數(shù)據(jù)目錄中創(chuàng)建mongod.lock文件。這個文件用于防止其他mongod進程使用該數(shù)據(jù)目錄存谎。若當有一個mongd啟動后拔疚,再啟動另一個mongod時,若再使用剛剛已經(jīng)啟動mongod的目錄既荚,那么會報錯:

2017-07-06T16:03:09.703+0800 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to lock file: mongodb/0706/mongod.lock Resource temporarily unavailable. Is a mongod instance already running?, terminating

--port:

指定服務器監(jiān)聽的端口號稚失。默認端口號為27017,要是運行多個mongod恰聘,必須指定不同的端口號

若有一個27017的端口已經(jīng)使用了句各,那么如果啟動第二個mongod的時候,若還指定27017的話晴叨,會報錯:

2017-07-06T16:13:07.215+0800 E NETWORK [initandlisten] listen(): bind() failed Address already in use for socket: 0.0.0.0:27017

--fork:

以守護進程的方式運行MongoDB睹欲,創(chuàng)建服務進程捞挥,相當于nohup ... &

nohup mongodb/bin/mongod --dbpath mongodb/0706 &

? 與

mongodb/bin/mongod --dbpath mongodb/0706 --fork

一樣的效果

--logpath:?

指定輸出日志的路徑耻矮,而不是輸出到命令行贸毕。如果對文件夾有寫權限的話,系統(tǒng)會在文件不存在時創(chuàng)建它孙技。它將會已有文件覆蓋掉产禾,清除原來所有的日志記錄排作。如果想保留原來的日志,還需要使用--logappend

--config:

指定配置文件下愈,加載命令行未指定的各種選項

--directoryperdb:

使用該參數(shù)可以將每個數(shù)據(jù)庫存放在單獨的目錄中

比如我新建兩個數(shù)據(jù)庫纽绍,那么在數(shù)據(jù)目錄下會自動建立數(shù)據(jù)庫名一樣的文件夾

啟動數(shù)據(jù)庫時,MongoDB會將一個文件寫入local數(shù)據(jù)庫的startup_log集合中势似,該集合包含了MongoDB的版本拌夏,所基于的系統(tǒng)等

? ? ? ? 七、停止Mongodb

方法一:查看進程履因,使用kill命令障簿;不能使用kill -9

方法二:在客戶端進去,使用shutdown命令

> use admin;

switched to db admin> db.shutdownServer();

server should be down...

在主節(jié)點(primary)上運行shutdown命令時栅迄,服務器在關閉之前站故,會先等待備份節(jié)點追趕主節(jié)點以保持同步。這將回滾的可能性降至最低毅舆,但shutdown操作有失敗的可能性西篓。如幾秒鐘內(nèi)沒有備份節(jié)點成功同步,則shutdown操作失敗憋活,主節(jié)點不會停止運行岂津。

? ? ? ? 方法三: 使用 Crtl+C 關閉? ? 備注:如果以前臺方式啟動 MongoDB 服務,使用“Crtl+C” 服務會關閉悦即,這種關閉方式會等待當前進行中的的操作完成吮成,所以依然是干凈的關閉方式。

? ? ? ? ? 方法四:? 使用 mongod 命令關閉

? ? ? ? ? ? ? $ mongod? --shutdown? --dbpath /data/db? ? 備注:mongod 命令的 shutdown 選項能干凈的關閉 MongoDB 服務辜梳。

  九粱甫、在mongodb服務啟動的情況下,可以執(zhí)行命令 ./bin/mongo 進入mongodb的后臺管理shell

  第一次進入MongoDB shell時默認會選擇test庫作瞄,但是這是一個空庫茶宵,后來進入時就會進入用戶所操作的數(shù)據(jù)庫,這時執(zhí)行 show dbs 可以查看非空的數(shù)據(jù)庫列表宗挥,可以看到默認只有l(wèi)ocal一個节预,其余的沒有數(shù)據(jù)不顯示,執(zhí)行 db 可以查看當前選擇的數(shù)據(jù)庫属韧;如果要切換選擇數(shù)據(jù)庫可以執(zhí)行 use name1 ,這里可以切換到name1數(shù)據(jù)庫蛤吓,如果數(shù)據(jù)庫存在則切換宵喂,如果不存在則直接創(chuàng)建,所以在mongodb中有一個顯著的特點会傲,所有的數(shù)據(jù)庫和數(shù)據(jù)集合(數(shù)據(jù)表)都是在使用中創(chuàng)建锅棕,用戶無需提前指定創(chuàng)建拙泽,退出mongodb shell可以執(zhí)行命令 exit 或者 quit() 都可以

  到這里,在Linux下MongoDB的部署和最簡單的shell入門操作就完成了

????????? 十裸燎、日志

在啟動mongod的時候顾瞻,可以指定日志的級別,即(-v德绿、-vv荷荤、-vvv、-vvvv移稳、-vvvvv)或者在shell命令行執(zhí)行命令修改

mongodb/bin/mongod --dbpath mongodb/0707 --directoryperdb --fork -vvv

日志級別越大蕴纳,輸出的日志越詳細,調(diào)至5時个粱,這時mongod會在日志中記錄幾乎所有的操作古毛,包括每一個請求所處理的內(nèi)容。

MongoDB默認記錄耗時超過100毫秒的查詢信息都许。如果100毫秒不適合需求稻薇,可以通過setProfilingLevel命令來改變,下面這條命令表示記錄查詢時間超過500毫秒的消息

? ? > db.setProfilingLevel(1,500)

? ? { "was" : 0, "slowms" : 100, "ok" : 1 }

如果想要日志分割胶征,如按天存放塞椎,有兩種方法

方法一:每天定時的執(zhí)行kill -USR1 進程號,這樣就可以看到弧烤,每執(zhí)行一次kill -USR1 進程號忱屑,那么就會重新生成一個日志文件

方法二:在MongoDB的shell行執(zhí)行,每執(zhí)行一次都會產(chǎn)生一個新的日志文件

? ? > db.adminCommand({"logRotate":1})

? ? { "ok" : 1 }

要使分割日志生效暇昂,必須啟動的時候使用--logpath莺戒,然后可以根據(jù)自己的需求,寫shell或python腳本急波,然后crontab做成定時任務

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末从铲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澄暮,更是在濱河造成了極大的恐慌名段,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泣懊,死亡現(xiàn)場離奇詭異伸辟,居然都是意外死亡,警方通過查閱死者的電腦和手機馍刮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門信夫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事静稻【唬” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵振湾,是天一觀的道長杀迹。 經(jīng)常有香客問我,道長押搪,這世上最難降的妖魔是什么树酪? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮嵌言,結(jié)果婚禮上嗅回,老公的妹妹穿的比我還像新娘。我一直安慰自己摧茴,他們只是感情好绵载,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著苛白,像睡著了一般娃豹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上购裙,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天懂版,我揣著相機與錄音,去河邊找鬼躏率。 笑死躯畴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的薇芝。 我是一名探鬼主播蓬抄,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夯到!你這毒婦竟也來了嚷缭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耍贾,失蹤者是張志新(化名)和其女友劉穎阅爽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荐开,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡付翁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晃听。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胆敞。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡着帽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出移层,到底是詐尸還是另有隱情,我是刑警寧澤赫粥,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布观话,位于F島的核電站,受9級特大地震影響越平,放射性物質(zhì)發(fā)生泄漏频蛔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一秦叛、第九天 我趴在偏房一處隱蔽的房頂上張望晦溪。 院中可真熱鬧,春花似錦挣跋、人聲如沸三圆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舟肉。三九已至,卻和暖如春查库,著一層夾襖步出監(jiān)牢的瞬間路媚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工樊销, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留整慎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓围苫,卻偏偏與公主長得像裤园,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子够吩,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Mac MongoDB安裝 一比然、安裝 MongoDB的安裝方法有很多,本文以官方文檔中的兩種方法為準周循。 1. 手動...
    Keriy閱讀 16,725評論 2 7
  • 關于Mongodb的全面總結(jié) MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評論 2 89
  • 一强法、系統(tǒng)及安裝說明 系統(tǒng):CentOS6.x_x64,mongodb-3.4.10湾笛。mongodb官方下載地址 :...
    Dream_f5de閱讀 636評論 0 0
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復 [日期:2016-11-29] 來源:Linux社區(qū) 作...
    陽屯okyepd閱讀 3,436評論 0 7
  • 俺們家饮怯,洗衣做飯搞衛(wèi)生的家務都是我干,一直覺得挺好的嚎研。 近來感覺有點不對勁蓖墅,思來想去库倘,原來問題出在這里:我屬牛,妻...
    Outman_2d44閱讀 286評論 0 0