MongoDB是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下,添加更多的節點,可以保證服務器性能。本文是講述把MongoDB社區版安裝到新睿云CentOS7服務器上,按照AGPL的要求,社區版自用免費,如果要分發是必須使用企業版的。 一、添加MongoDB資料庫mongodb-org默認情況下該軟件包不存在CentOS7的源倉庫中。所以我們需要把其先放到倉庫中。 使用vi編輯器為創建.repo文件yum,為CentOS的軟件包管理實用程序: sudo vi/etc/yum.repos.d/mongodb-org.repo 然后,訪問MongoDB文檔的“在Red Hat上安裝”部分,并添加資料庫該文件的最新穩定版本的信息: /etc/yum.repos.d/mongodb-org.repo [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo./yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www./static/pgp/server-3.4.asc 保存并關閉文件。 在繼續之前,我們應該驗證MongoDB資料庫yum實用程序中存在。該repolist命令顯示已啟用的列表倉庫: yum repolist Output ... repo id repo name base/7/x86_64 CentOS-7-Base extras/7/x86_64 CentOS-7-Extras mongodb-org-3.2/7/x86_64 MongoDB Repository updates/7/x86_64 CentOS-7-Updates ... 隨著MongoDB Repository到位,讓我們繼續安裝。 二、安裝MongoDB數據庫我們可以mongodb-org從第三方安裝軟件包資料庫使用該yum實用程序。 sudo yum install mongodb-org 有兩個Is this ok[y/N]:提示。第一個允許安裝MongoDB軟件包,第二個允許導入GPG密鑰。MongoDB的發布者對其軟件進行簽名,并yum使用密鑰來確認所下載軟件包的完整性。在每個提示下,鍵入Y,然后ENTER按鍵。 接下來,使用該systemctl實用程序啟動MongoDB服務: sudo systemctl start mongod 盡管我們不會在本教程中使用它們,但是您也可以使用reload和stop命令更改MongoDB服務的狀態。 該reload命令要求mongod進程讀取配置文件/etc/mongod.conf,并應用任何更改而無需重新啟動。 sudo systemctl reload mongod 該stop命令將暫停所有正在運行的mongod進程。 sudo systemctl stop mongod 該systemctl實用程序在執行start命令后沒有提供結果,但是我們可以通過mongod.log使用以下tail命令查看文件末尾來檢查服務是否已啟動: sudo tail/var/log/mongodb/mongod.log Output ... [initandlisten]waiting for connections on port 27017 等待連接的輸出確認MongoDB已成功啟動,我們可以使用MongoDB Shell訪問數據庫服務器: mongo 注意:啟動MongoDB Shell時,您可能會看到如下警告: **WARNING:soft rlimits too low.rlimits set to 4096 processes,64000 files.Number of processes should be at least 32000:0.5 times number of files. MongoDB是一個線程化的應用程序。它可以啟動其他流程來處理其工作量。該警告指出,要使MongoDB最有效,它的進程數是授權的加速應該是它在任何給定時間可以打開的文件數量的一半。要解決警告,請通過編輯文件processes來更改soft rlimit值:mongod20-nproc.conf sudo vi/etc/security/limits.d/20-nproc.conf 將以下行添加到文件末尾: /etc/security/limits.d/20-nproc.conf ... mongod soft nproc 32000 為了使新限制適用于MongoDB,請使用systemctl實用程序將其重新啟動: sudo systemctl restart mongod 之后,當您連接到MongoDB Shell時,該警告應該不再存在。 如果要與MongoDB進行交互,您截圖使用db.help()方法的輸出,該方法提供了db對象的方法列表。 db.help() Output DB methods: db.adminCommand(nameOrDocument)-switches to'admin'db,and runs command[just calls db.runCommand(...)] db.auth(username,password) db.cloneDatabase(fromhost) db.commandHelp(name)returns the help for the command db.copyDatabase(fromdb,todb,fromhost) db.createCollection(name,{size:...,capped:...,max:...}) db.createUser(userDocument) db.currentOp()displays currently executing operations in the db db.dropDatabase()
... 讓mongod進程在后臺運行,但是使用以下exit命令退出shell: exit Output Bye 三、驗證MongoDB啟動如果數據庫安裝失敗,應用程序無法運行,所以我們將確保MongoDB守護程序已經啟動。 使用該systemctl實用工具檢查其啟動狀態: systemctl is-enabled mongod;echo$? 輸出為零表示已啟用守護程序,這樣符合我們的預期。但是,如果數據安裝不完全或者失敗則啟動程序可以不會出現或者殘缺不全。 Output ... enabled 0 如果啟動程序啟動但運行的不完成,請使用該systemctl實用工具啟用它: sudo systemctl enable mongod 現在,我們有了一個正在運行的MongoDB實例,它將在系統重啟后自動啟動。 四、導入示例數據集(可選)與其他數據庫服務器不同,MongoDB的數據庫中沒有數據test測試數據集。因此我們將從“MongoDB入門”文檔的“導入示例數據集”部分下載示例數據集。JSON文檔集合,我們將使用它們來練習與MongoDB的交互并避免對敏感數據造成傷害。 進入可寫的目錄: cd/tmp 使用curl命令和MongoDB中的鏈接下載JSON文件: curl-LO https://raw./mongodb/docs-assets/primer-dataset/primer-dataset.json 該mongoimport命令會將數據插入測試數據庫。該--db標志定義了要使用的數據庫,而--collection標志則指定了將信息存儲在數據庫中的位置,并且--file標志告訴命令在哪個文件上執行導入操作: mongoimport--db test--collection restaurants--file/tmp/primer-dataset.json 輸出確認從primer-dataset.json文件中導入數據: Output connected to:localhost imported 25359 documents 放置好樣本數據集之后,我們將對其進行查詢。 重新啟動MongoDB Shell: mongo Shell test默認選擇數據庫,這是我們導入數據的地方。 使用方法查詢餐廳集合,find()以顯示數據集中所有餐廳的列表。由于該集合包含超過25,000個條目,因此請使用可選limit()方法將查詢的輸出減少到指定的數量。此外,該pretty()方法使信息更人性化-可讀的與換行符和縮進。 db.restaurants.find().limit(1).pretty() Output { "_id":ObjectId("57e0443b46af7966d1c8fa68"), "address":{ "building":"1007", "coord":[ -73.856077, 40.848447 ], "street":"Morris Park Ave", "zipcode":"10462" }, "borough":"Bronx", "cuisine":"Bakery", "grades":[ { "date":ISODate("2014-03-03T00:00:00Z"), "grade":"A", "score":2 }, { "date":ISODate("2013-09-11T00:00:00Z"), "grade":"A", "score":6 }, { "date":ISODate("2013-01-24T00:00:00Z"), "grade":"A", "score":10 }, { "date":ISODate("2011-11-23T00:00:00Z"), "grade":"A", "score":9 }, { "date":ISODate("2011-03-10T00:00:00Z"), "grade":"B", "score":14 } ], "name":"Morris Park Bake Shop", "restaurant_id":"30075445" } 您可以繼續使用樣本數據集來熟悉自己使用MongoDB或使用以下db.restaurants.drop()方法將其刪除: db.restaurants.drop() 最后,使用以下exit命令退出shell: exit Output Bye 按照本文示例您可以配置并且應用MongoDB,如果您想進一步的深入了解更多數據庫的使用辦法可以閱讀《postgresql和mysql:性能、語法、功能有哪些差異?》 |
|