第一部分:MongoDB備忘錄

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"
        }
    ]
}
  • user:用戶名
  • pwd:密碼
  • db : 數據庫名字
  • roles:指定用戶的角色,能夠用一個空數組給新用戶設定空角色;在roles字段,能夠指定內置角色和用戶定義的角色。

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」安全

從配置文件啓動mongodb服務

./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

相關文章
相關標籤/搜索