MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備及使用介紹
一、MongoDB 簡(jiǎn)介
MongoDB 是由 C++ 語(yǔ)言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的非關(guān)系型開源數(shù)據(jù)庫(kù)系統(tǒng)。其優(yōu)勢(shì)在于可以存放海量數(shù)據(jù),具備強(qiáng)大的查詢功能,是一個(gè)獨(dú)立的面向集合文檔形式的。
應(yīng)用平臺(tái):MongoDB 支持 Unix
Linux
Windows
等系統(tǒng)平臺(tái)。
MySQL 與 MongoDB 區(qū)別:
MySQL | 數(shù)據(jù)庫(kù) | 數(shù)據(jù)表 | 數(shù)據(jù) |
---|---|---|---|
MongDB | 數(shù)據(jù)庫(kù) | 集合 | 文檔 |
1.MongoDB 特點(diǎn)
存儲(chǔ)性:
面向集合:數(shù)據(jù)被分組存儲(chǔ)在數(shù)據(jù)集中,被稱為一個(gè)集合。
面向文檔:存儲(chǔ)在集合中的文檔,被存儲(chǔ)為鍵值對(duì)的形式。
高效二進(jìn)制數(shù)據(jù)存儲(chǔ):使用二進(jìn)制格式存儲(chǔ),可以保存任何類型的數(shù)據(jù)對(duì)象。
操作性:
完全索引:可以在任意屬性上建立索引,包含內(nèi)部對(duì)象。以提高查詢的速度。
強(qiáng)大的聚合工具:MongoDB 除了提供豐富的查詢功能外,還提供了強(qiáng)大的聚合工具,如 count
group
等。
支持 Perl
PHP
Java
C#
JavaScript
Ruby
Python
C
和 C++
語(yǔ)言的驅(qū)動(dòng)程序。
可用性:
支持復(fù)制和數(shù)據(jù)恢復(fù):MongoDB 支持主從復(fù)制機(jī)制,可以實(shí)現(xiàn)數(shù)據(jù)的備份、故障恢復(fù)、讀擴(kuò)展等功能。而基于副本集的復(fù)制機(jī)制提供了自動(dòng)故障恢復(fù)的功能,確保了集群數(shù)據(jù)不會(huì)丟失。
自動(dòng)處理分片:MongoDB 支持集群自動(dòng)切分?jǐn)?shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行切分可以使用集群存儲(chǔ)更多的數(shù)據(jù),實(shí)現(xiàn)更大的負(fù)載,也能保證存儲(chǔ)的負(fù)載均衡。
2.MongoDB 適用場(chǎng)景
網(wǎng)站實(shí)時(shí)數(shù)據(jù)處理:它非常適合實(shí)時(shí)的插入、更新與查詢,并具備網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲(chǔ)所需的復(fù)制及高伸縮性。
緩存:它適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由它搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過(guò)載。
高伸縮性的場(chǎng)景:非常適合由數(shù)十臺(tái)或數(shù)百臺(tái)服務(wù)器組成的數(shù)據(jù)庫(kù)。
不適用于的場(chǎng)景如下:
要求高度事務(wù)性的系統(tǒng)(例如:銀行和會(huì)計(jì)系統(tǒng))傳統(tǒng)的商業(yè)只能應(yīng)用。復(fù)雜的跨文檔(表)級(jí)聯(lián)查詢。
3.MongoDB 存儲(chǔ)結(jié)構(gòu)
邏輯結(jié)構(gòu):
文檔 document
:存放的數(shù)據(jù)。
集合 collection
:由多個(gè)文檔組成,相當(dāng)于表,但不同的是集合是無(wú)固定架構(gòu)。
數(shù)據(jù)庫(kù) database
:多個(gè)集合組成的數(shù)據(jù)庫(kù)。
物理結(jié)構(gòu):
.wt
文件:每個(gè)表或索引對(duì)應(yīng)一個(gè)命名空間,數(shù)據(jù)量增加,文件數(shù)量增多,存儲(chǔ)了分配和正在使用的磁盤空間。
數(shù)據(jù)文件:存放數(shù)據(jù)的實(shí)體,并且使用預(yù)分配空間機(jī)制。
日志文件:系統(tǒng)日志文件、journal
日志文件(用于 MongoDB 崩潰恢復(fù)的保障)、oplog
復(fù)制操作日志文件(相當(dāng)于 MySQL 的 BinLog 文件)、慢查詢?nèi)罩荆ú樵儾僮鞒鲋付〞r(shí)間的語(yǔ)句)
物理結(jié)構(gòu)就是真正存放數(shù)據(jù)的位置。
4.MongoDB 數(shù)據(jù)類型
二、部署 MongoDB 數(shù)據(jù)庫(kù)應(yīng)用
主機(jī)名 | 操作系統(tǒng) | IP 地址 | 版本 |
---|---|---|---|
MongoDB | CentOS 7.4 | 192.168.1.1 | mongodb-linux-x86_64-rhel70-4.4.5.tgz |
1.準(zhǔn)備系統(tǒng)環(huán)境
[root@MongoDB ~]# ulimit -n 25000 # 同一時(shí)間最多開啟的文件數(shù) [root@MongoDB ~]# ulimit -u 25000 # 用戶最多開啟的程序數(shù)目 [root@MongoDB ~]# echo 0 > /proc/sys/vm/zone_reclaim_mode # 設(shè)置內(nèi)核參數(shù). 當(dāng)某個(gè)節(jié)點(diǎn)內(nèi)存不足時(shí)可以借用其它節(jié)點(diǎn)的內(nèi)存 [root@MongoDB ~]# sysctl -w vm.zone_reclaim_mode=0 vm.zone_reclaim_mode = 0 [root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
因?yàn)橄旅姘惭b的版本為 4.4.5
,而 MongoDB 4
版本以上的 /bin
目錄中的工具進(jìn)行了分離,所以需要安裝:傳送門
[root@MongoDB ~]# tar xf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz
2.安裝 MongoDB
[root@MongoDB ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.5.tgz [root@MongoDB ~]# tar xf mongodb-linux-x86_64-rhel70-4.4.5.tgz [root@MongoDB ~]# mv mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb [root@MongoDB ~]# mv mongodb-database-tools-rhel70-x86_64-100.3.1/bin/* /usr/local/mongodb/bin/ [root@MongoDB ~]# echo "export PATH=/usr/local/mongodb/bin:\$PATH" >> /etc/profile [root@MongoDB ~]# source /etc/profile
3.創(chuàng)建 MongoDB 存儲(chǔ)目錄以及配置文件
[root@MongoDB ~]# mkdir /usr/local/mongodb/{data,logs,conf} [root@MongoDB ~]# touch /usr/local/mongodb/logs/mongodb.log [root@MongoDB ~]# chmod 777 /usr/local/mongodb/logs/mongodb.log [root@MongoDB ~]# cat <<END > /usr/local/mongodb/conf/mongodb.conf bind_ip=192.168.1.1 port=27017 dbpath=/usr/local/mongodb/data/ logpath=/usr/local/mongodb/logs/mongodb.log logappend=true # 日志以文件追加的方式寫入 fork=true # 通過(guò)后臺(tái)運(yùn)行 MongoDB 服務(wù) maxConns=5000 # MongoDB 最大連接數(shù) END
4.編寫服務(wù)啟動(dòng)腳本
[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf # 啟動(dòng) MongoDB 服務(wù) [root@MongoDB ~]# mongo 192.168.1.1:27017 # 登錄驗(yàn)證 [root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown # 關(guān)閉 MongoDB 服務(wù) [root@MongoDB ~]# vim /etc/init.d/mongodb #!/bin/bash case "$1" in start) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;; stop) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown;; restart) /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;; esac [root@MongoDB ~]# chmod +x /etc/init.d/mongodb # 添加執(zhí)行權(quán)限 [root@MongoDB ~]# /etc/init.d/mongodb start # 啟動(dòng)
登錄驗(yàn)證
[root@MongoDB ~]# mongo 192.168.1.1:27017 # 登錄 MongoDB 數(shù)據(jù)庫(kù) (默認(rèn)在 test 庫(kù)中) > show databases # 查看數(shù)據(jù)庫(kù)中所有庫(kù) admin 0.000GB config 0.000GB local 0.000GB > db.getName() # 查看當(dāng)前登錄庫(kù) test
MongoDB 安裝完后的默認(rèn) 4 個(gè)庫(kù):
admin
:存放了有關(guān)數(shù)據(jù)庫(kù)賬號(hào)的相關(guān)信息。
config
:用于分片集群環(huán)境,存放分片相關(guān)的元數(shù)據(jù)信息。
local
:用于存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合(因?yàn)樵搸?kù)并不會(huì)被復(fù)制到從節(jié)點(diǎn),簡(jiǎn)單來(lái)說(shuō)就是沒(méi)有冗余性)
test
:MongoDB 默認(rèn)創(chuàng)建的一個(gè)測(cè)試庫(kù),連接 MongoDB 服務(wù)時(shí),如果不指定連接的具體數(shù)據(jù)庫(kù),默認(rèn)就會(huì)連接到 test
庫(kù)。
以上就是MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備及使用介紹的詳細(xì)內(nèi)容,更多關(guān)于MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備的資料請(qǐng)關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。