1、NoSQL 簡介mysql
Nosql的全稱是Not Only Sql,這個概念早起就有人提出,在09年的時候比較火。Nosql指的是非關係型數據庫,而咱們經常使用的都是關係型數據庫。就像咱們經常使用的mysql,sqlserver,oracle同樣,這些數據庫通常用來存儲重要信息,應對普通的業務是沒有問題的。可是,隨着互聯網的高速發展,傳統的關係型數據庫在應付超大規模,超大流量以及高併發的時候力不從心。而就在這個時候,Nosql獲得的告訴的發展。sql
2、MongoDB備忘錄mongodb
一、首先說一下本身在使用MongoDB過程當中踩過的坑,安裝的時候很簡單,解壓安裝完成。我安裝的版本是v3.6.5,使用中也很是簡單shell
最簡單的啓動指令:mongod 帶認證的啓動指令:mongod -dbpath /data/db -auth 指定配置文件啓動的指令:mongod -config /etc/mongod.conf
二、啓動後使用mongo進入shell界面,就能夠操做數據庫了,下面列一些我還記住的指令,不知道的指令區runoob上查一下數據庫
查看數據庫:show dbs 使用數據庫:use <db_name> 查看集合(表):show collections 查看一條內容:db.school.findOne()
三、上面說到了使用認證方式啓動mongodb,那麼認證的前提固然是須要有用戶名和密碼了,下面記錄一下如何增長認證用戶。json
> use admin switched to db admin > db.createUser( ... { ... user: "dba", ... pwd: "dba", ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ... } ... ) Successfully added user: { "user" : "dba", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
role裏的角色能夠選:數組
Built-In Roles(內置角色): 1. 數據庫用戶角色:read、readWrite; 2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin; 3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 備份恢復角色:backup、restore; 5. 全部數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超級用戶角色:root // 這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 內部角色:__system 具體角色: read:容許用戶讀取指定數據庫 readWrite:容許用戶讀寫指定數據庫 dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile userAdmin:容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶 clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。 readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限 readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限 userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限 dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。 root:只在admin數據庫中可用。超級帳號,超級權限
新建mongodb.conf文件,並加入「auth=true」安全
./bin/mongod -f mongodb.conf服務器
用戶驗證架構
[caideyang@localhost mongodb3.2.10]$ ./bin/mongo MongoDB shell version: 3.6.1 connecting to: test > use admin switched to db caideyang > db.auth('admin','admin') 1 >
mongodb.conf配置文件
#數據庫數據存放目錄 dbpath=/usr/local/mongodb304/data #數據庫日誌存放目錄 logpath=/usr/local/mongodb304/logs/mongodb.log #以追加的方式記錄日誌 logappend = true #端口號 默認爲27017 port=27017 #之後臺方式運行進程 fork=true #開啓用戶認證 auth=true #關閉http接口,默認關閉http端口訪問 nohttpinterface=true #mongodb所綁定的ip地址 bind_ip = 127.0.0.1,192.168.1.140 #啓用日誌文件,默認啓用 journal=true #這個選項能夠過濾掉一些無用的日誌信息,若須要調試使用請設置爲false quiet=true
其餘配置參數含義
--quiet # 安靜輸出 --port arg # 指定服務端口號,默認端口27017 --bind_ip arg # 綁定服務IP,若綁定127.0.0.1,則只能本機訪問,不指定默認本地全部IP --logpath arg # 指定MongoDB日誌文件,注意是指定文件不是目錄 --logappend # 使用追加的方式寫日誌 --pidfilepath arg # PID File 的完整路徑,若是沒有設置,則沒有PID文件 --keyFile arg # 集羣的私鑰的完整路徑,只對於Replica Set 架構有效 --unixSocketPrefix arg # UNIX域套接字替代目錄,(默認爲 /tmp) --fork # 以守護進程的方式運行MongoDB,建立服務器進程 --auth # 啓用驗證 --cpu # 按期顯示CPU的CPU利用率和iowait --dbpath arg # 指定數據庫路徑 --diaglog arg # diaglog選項 0=off 1=W 2=R 3=both 7=W+some reads --directoryperdb # 設置每一個數據庫將被保存在一個單獨的目錄 --journal # 啓用日誌選項,MongoDB的數據操做將會寫入到journal文件夾的文件裏 --journalOptions arg # 啓用日誌診斷選項 --ipv6 # 啓用IPv6選項 --jsonp # 容許JSONP形式經過HTTP訪問(有安全影響) --maxConns arg # 最大同時鏈接數 默認2000 --noauth # 不啓用驗證 --nohttpinterface # 關閉http接口,默認關閉27018端口訪問 --noprealloc # 禁用數據文件預分配(每每影響性能) --noscripting # 禁用腳本引擎 --notablescan # 不容許表掃描 --nounixsocket # 禁用Unix套接字監聽 --nssize arg (=16) # 設置信數據庫.ns文件大小(MB) --objcheck # 在收到客戶數據,檢查的有效性, --profile arg # 檔案參數 0=off 1=slow, 2=all --quota # 限制每一個數據庫的文件數,設置默認爲8 --quotaFiles arg # number of files allower per db, requires --quota --rest # 開啓簡單的rest API --repair # 修復全部數據庫run repair on all dbs --repairpath arg # 修復庫生成的文件的目錄,默認爲目錄名稱dbpath --slowms arg (=100) # value of slow for profile and console log --smallfiles # 使用較小的默認文件 --syncdelay arg (=60) # 數據寫入磁盤的時間秒數(0=never,不推薦) --sysinfo # 打印一些診斷系統信息 --upgrade # 若是須要升級數據庫 * Replicaton 參數 -------------------------------------------------------------------------------- --fastsync # 從一個dbpath裏啓用從庫複製服務,該dbpath的數據庫是主庫的快照,可用於快速啓用同步 --autoresync # 若是從庫與主庫同步數據差得多,自動從新同步, --oplogSize arg # 設置oplog的大小(MB) * 主/從參數 -------------------------------------------------------------------------------- --master # 主庫模式 --slave # 從庫模式 --source arg # 從庫 端口號 --only arg # 指定單一的數據庫複製 --slavedelay arg # 設置從庫同步主庫的延遲時間 * Replica set(副本集)選項: -------------------------------------------------------------------------------- --replSet arg # 設置副本集名稱 * Sharding(分片)選項 -------------------------------------------------------------------------------- --configsvr # 聲明這是一個集羣的config服務,默認端口27019,默認目錄/data/configdb --shardsvr # 聲明這是一個集羣的分片,默認端口27018 --noMoveParanoia # 關閉偏執爲moveChunk數據保存
[caideyang@localhost mongodb3.2.10]$ ./bin/mongodump --port=27017 -ucdy -ppasswd --db=caideyang -o /home/caideyang/backup/ 2016-10-30T15:58:58.082+0800 writing caideyang.score to 2016-10-30T15:58:58.083+0800 writing caideyang.user to 2016-10-30T15:58:58.084+0800 done dumping caideyang.score (4 documents) 2016-10-30T15:58:58.085+0800 done dumping caideyang.user (2 documents) [caideyang@localhost ~]$ tree backup/ backup/ └── caideyang ├── score.bson ├── score.metadata.json ├── user.bson └── user.metadata.json 1 directory, 4 files
還原
[caideyang@localhost mongodb3.2.10]$ ./bin/mongorestore --port=27017 -ucdy -ppasswd --db=caideyang ../backup/caideyang/ 2016-10-30T16:04:43.914+0800 building a list of collections to restore from ../backup/caideyang dir 2016-10-30T16:04:43.918+0800 reading metadata for caideyang.score from ../backup/caideyang/score.metadata.json 2016-10-30T16:04:43.918+0800 reading metadata for caideyang.user from ../backup/caideyang/user.metadata.json 2016-10-30T16:04:43.918+0800 restoring caideyang.score from ../backup/caideyang/score.bson 2016-10-30T16:04:43.918+0800 restoring caideyang.user from ../backup/caideyang/user.bson 2016-10-30T16:04:43.930+0800 error: multiple errors in bulk operation: - E11000 duplicate key error collection: caideyang.user index: _id_ dup key: { : ObjectId('5815a5fa5fee222be4c321c9') } - E11000 duplicate key error collection: caideyang.user index: _id_ dup key: { : ObjectId('5815a63a5fee222be4c321ca') } 2016-10-30T16:04:43.930+0800 restoring indexes for collection caideyang.user from metadata 2016-10-30T16:04:43.936+0800 finished restoring caideyang.user (2 documents) 2016-10-30T16:04:43.988+0800 restoring indexes for collection caideyang.score from metadata 2016-10-30T16:04:43.989+0800 finished restoring caideyang.score (4 documents) 2016-10-30T16:04:43.989+0800 done [caideyang@localhost mongodb3.2.10]$
注:部份內容引用自 https://www.jianshu.com/p/5844fdfa9511