上一篇文章,把這個架構的原由,和操做系統的選擇進行了詳細說明。html
原文地址:15分鐘從零開始搭建支持10w+用戶的生產環境(一)linux
對於一個10W+用戶的系統,數據庫選擇很重要。web
通常來講,這個用戶量,根據不一樣的應用,會造成單表年度400W~4000W條的數據量。在這個數據量下,咱們須要相對大型的數據庫。mongodb
可供選擇的主流數據庫:shell
類別 | 數據庫 |
---|---|
關係型數據庫 | MySQL, SQL Server for Linux, Oracle, DB2, PostgreDB |
NoSQL數據庫 | Radis, HBase, MongoDB |
具體數據庫的區別分析,網上有不少文章,這兒就再也不多討論。數據庫
在如今討論的這個架構下,有幾個要求:安全
在這個要求下,咱們選擇MongoDB做爲主數據庫。bash
MongoDB的官網: https://www.mongodb.com服務器
MongoDB最新版下載: https://www.mongodb.com/download-center/community微信
community版和professional版本最大的區別是pro版有InMemoryDB模式,能夠依託大內存創建存放在內存中的數據庫文件。通常應用,社區版足夠。
先看看MongoDB的安裝有多簡單:
第一步:下載數據庫,以4.2.6 for Debian版本爲例:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-debian92-4.2.6.tgz
下載完成後,打開壓縮包,
tar xvf mongodb-linux-x86_64-debian92-4.2.6.tgz -C /your_folder
咱們會獲得如下文件,
-rw-r--r-- 1 test test 30608 Apr 17 11:10 LICENSE-Community.txt
-rw-r--r-- 1 test test 16726 Apr 17 11:10 MPL-2
-rw-r--r-- 1 test test 2617 Apr 17 11:10 README
-rw-r--r-- 1 test test 75405 Apr 17 11:10 THIRD-PARTY-NOTICES
-rw-r--r-- 1 test test 183512 Apr 17 11:13 THIRD-PARTY-NOTICES.gotools
drwxr-xr-x 2 test test 4096 Apr 20 19:29 bin
bin目錄中,有如下文件,
-rwxr-xr-x 1 test test 12715648 Apr 17 11:12 bsondump
-rwxr-xr-x 1 test test 7694 Apr 17 11:36 install_compass
-rwxr-xr-x 1 test test 47998920 Apr 17 11:36 mongo
-rwxr-xr-x 1 test test 73240640 Apr 17 11:36 mongod
-rwxr-xr-x 1 test test 17526720 Apr 17 11:12 mongodump
-rwxr-xr-x 1 test test 17277000 Apr 17 11:12 mongoexport
-rwxr-xr-x 1 test test 17242056 Apr 17 11:12 mongofiles
-rwxr-xr-x 1 test test 17452192 Apr 17 11:12 mongoimport
-rwxr-xr-x 1 test test 17879808 Apr 17 11:13 mongoreplay
-rwxr-xr-x 1 test test 17851848 Apr 17 11:12 mongorestore
-rwxr-xr-x 1 test test 40628464 Apr 17 11:36 mongos
-rwxr-xr-x 1 test test 17029440 Apr 17 11:12 mongostat
-rwxr-xr-x 1 test test 16707368 Apr 17 11:12 mongotop
其中:
mongo是個shell,用來操做數據庫。
mongod是單個數據庫的服務程序,每一個數據庫都須要一個mongod進程。
mongos是集羣的路由和入口,作集羣時必需要用到。
別的都是一些管理工具,能夠慢慢了解。
第二步:安裝&啓動
MongoDB自己是一個綠色軟件,上一節的下載和解壓,就是安裝的過程了。
下面是啓動數據庫。
./mongod --dbpath your_database_folder_path
MongoDB運行,只須要一個數據庫文件的存放目錄。
當你看到命令執行後,出現一大篇內容,其中有兩行:
I NETWORK [listener] Listening on 127.0.0.1
I NETWORK [listener] waiting for connections on port 27017
的時候,恭喜你,數據庫已經上線了。
簡單不?
可是必定要記着,運行簡單並不等於這是個Access同樣的小東西。
這是個大型的基於文檔的NoSQL數據庫!
若是想查詢各個命令都有什麼參數,能夠在命令後邊加 --help 來查詢。
例如:
./mongod --help
裏面有詳細的說明。
下面列幾個經常使用的參數:
參數 | 說明 |
---|---|
config | 配置文件。MongoDB除了直接用命令行參數外,也能夠把參數寫在一個配置文件中,而後在config參數引用這個配置文件 |
port | MongoDB默認端口是27017,能夠改爲任何端口 |
logpath | 默認數據庫日誌是輸出到終端的,能夠改成保存到文件(也能夠不用這個參數,而在命令行重定向) |
bind_ip | MongoDB默認綁定IP是127.0.0.1,能夠改爲任意IP地址。 |
db_path | 數據庫文件的保存目錄 |
下面,咱們檢查一下數據庫的安裝是否正確。
咱們用mongo連到數據庫進行操做:
$ ./mongo localhost:27017
MongoDB shell version v4.2.5
> use TestDB
switched to db TestDB
> db.collection.insert({"user":"test1"})
WriteResult({ "nInserted" : 1 })
> db.collection.insert({"user":"test2"})
WriteResult({ "nInserted" : 1 })
> db.collection.find()
{ "_id" : ObjectId("5ea0279699857fc83ddf6ef5"), "user" : "test1" }
> db.collection.find({"user":"test2"})
{ "_id" : ObjectId("5ea029a599857fc83ddf6ef6"), "user" : "test2" }
> exit
在這一節的最後,補充兩個問題:
上面介紹的是單MongoDB數據庫的安裝。這是最簡單的一種形式,也是應用最多的一種形式。
若是數據很重要,爲了防止任何狀況的數據丟失,能夠採用 Master + N Slave 的方式,作主從結構,把一樣的多個庫放到多個服務器上,互爲備份。同時,這種方式還能夠實現讀寫分離。
若是數據量再大,則能夠把數據庫擴展成集羣,用以增長數據庫的容量,並提高訪問性能。
上面介紹安裝的時候,採用的默認端口。在實際使用時,能夠改換一個端口,減小被掃描攻擊的機率。
另外,數據庫默認安裝時,是不檢查用戶的。換言之,就是任何人均可以連到數據庫。若是用在生產服務器上,必定要在數據庫中建議用戶和權限,以保證阻擋非法的訪問。
MongoDB的安全問題,我會單獨寫一篇文章來講,敬請關注。
(未完待續)
微信公衆號:老王Plus 掃描二維碼,關注我的公衆號,能夠第一時間獲得最新的我的文章和內容推送 本文版權歸做者全部,轉載請保留此聲明和原文連接 |