標籤:設定檔 伺服器 認證 守護 使用者
mongodb{
一、啟動{
# 不啟動認證
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/
# 啟動認證
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/ --auth
# 設定檔方式啟動
cat /opt/mongodb/mongodb.conf
port=27017 # 連接埠號碼
fork=true # 以守護進程的方式運行,建立伺服器處理序
auth=true # 開啟使用者認證
logappend=true # 日誌採用追加方式
logpath=/opt/mongodb/mongodb.log # 日誌輸出檔案路徑
dbpath=/opt/mongodb/data/ # 資料庫路徑
shardsvr=true # 設定是否分區
maxConns=600 # 資料庫的最大串連數
./mongod -f /opt/mongodb/mongodb.conf
# 其他參數
bind_ip # 綁定IP 使用mongo登入需要指定對應IP
journal # 開啟日誌功能,降低單機故障的恢復,取代dur參數
syncdelay # 系統同步重新整理磁碟的時間,預設60秒
directoryperdb # 每個db單獨存放目錄,建議設定.與mysql獨立資料表空間類似
repairpath # 執行repair時的臨時目錄.如果沒開啟journal,出現異常重啟,必須執行repair操作
# mongodb沒有參數設定記憶體大小.使用os mmap機制快取資料檔案,在資料量不超過記憶體的情況下,效率非常高.資料量超過系統可用記憶體會影響寫入效能
}
二、關閉{
# 方法一:登入mongodb
./mongo
use admin
db.shutdownServer()
# 方法:kill傳遞訊號 兩種皆可
kill -2 pid
kill -15 pid
}
三、開啟認證與使用者管理{
./mongo # 先登入
use admin # 切換到admin庫
db.addUser("root","123456") # 建立使用者
db.addUser(‘zhansan‘,‘pass‘,true) # 如果使用者的readOnly為true那麼這個使用者只能讀取資料,添加一個readOnly使用者zhansan
./mongo 127.0.0.1:27017/mydb -uroot -p123456 # 再次登入,只能針對使用者所在庫登入
#雖然是超級管理員,但是admin不能直接登入其他資料庫,否則報錯
#Fri Nov 22 15:03:21.886 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228
show collections # 查看連結狀態 再次登入使用如下命令,顯示錯誤未經授權
db.system.users.find(); # 查看建立使用者資訊
db.system.users.remove({user:"zhansan"}) # 刪除使用者
#恢複密碼只需要重啟mongodb 不加--auth參數
}
四、登入{
192.168.1.5:28017 # http登入後可查看狀態
./mongo # 預設登入後開啟 test 庫
./mongo 192.168.1.5:27017/databaseName # 直接連接某個庫 不存在則建立 啟動認證需要指定對應庫才可登入
}
五、查看狀態{
#登入後執行命令查看狀態
db.runCommand({"serverStatus":1})
globalLock # 表示全域寫入鎖佔用了伺服器多少時間(微秒)
mem # 包含伺服器記憶體映射了多少資料,伺服器處理序的虛擬記憶體和常駐記憶體的佔用情況(MB)
indexCounters # 表示B樹在磁碟檢索(misses)和記憶體檢索(hits)的次數.如果這兩個比值開始上升,就要考慮添加記憶體了
backgroudFlushing # 表示後台做了多少次fsync以及用了多少時間
opcounters # 包含每種主要擦撞的次數
asserts # 統計了斷言的次數
#狀態資訊從伺服器啟動開始計算,如果過大就會複位,發送複位,所有計數都會複位,asserts中的roolovers值增加
#mongodb內建的命令
./mongostat
insert #每秒插入量
query #每秒查詢量
update #每秒更新量
delete #每秒刪除量
locked #鎖定量
qr|qw #用戶端查詢排隊長度(讀|寫)
ar|aw #活躍用戶端量(讀|寫)
conn #串連數
time #目前時間
}
六、常用命令{
db.listCommands() # 當前MongoDB支援的所有命令(同樣可通過運行命令db.runCommand({"listCommands" : `1})來查詢所有命令)
db.runCommand({"buildInfo" : 1}) # 返回MongoDB伺服器的版本號碼和伺服器OS的相關資訊。
db.runCommand({"collStats" : 集合名}) # 返回該集合的統計資訊,包括資料大小,已指派儲存空間大小,索引的大小等。
db.runCommand({"distinct" : 集合名, "key" : 鍵, "query" : 查詢文檔}) # 返回特定文檔所有符合查詢文檔指定條件的文檔的指定鍵的所有不同的值。
db.runCommand({"dropDatabase" : 1}) # 清空當前資料庫的資訊,包括刪除所有的集合和索引。
db.runCommand({"isMaster" : 1}) # 檢查本伺服器是主伺服器還是從伺服器。
db.runCommand({"ping" : 1}) # 檢查伺服器連結是否正常。即便伺服器上鎖,該命令也會立即返回。
db.runCommand({"repaireDatabase" : 1}) # 對當前資料庫進行修複並壓縮,如果資料庫特別大,這個命令會非常耗時。
db.runCommand({"serverStatus" : 1}) # 查看這台伺服器的管理統計資訊。
# 某些命令必須在admin資料庫下運行,如下兩個命令:
db.runCommand({"renameCollection" : 集合名, "to":集合名}) # 對集合重新命名,注意兩個集合名都要是完整的集合命名空間,如foo.bar, 表示資料庫foo下的集合bar。
db.runCommand({"listDatabases" : 1}) # 列出伺服器上所有的資料庫
}
七、進程式控制制{
db.currentOp() # 查看活動進程
db.$cmd.sys.inprog.findOne() # 查看活動進程 與上面一樣
opid # 操作進程號
op # 操作類型(查詢\更新)
ns # 命名空間,指操作的是哪個對象
query # 如果操作類型是查詢,這裡將顯示具體的查詢內容
lockType # 鎖的類型,指明是讀鎖還是寫鎖
db.killOp(opid值) # 結束進程
db.$cmd.sys.killop.findOne({op:opid值}) # 結束進程
}
八、備份還原{
./mongoexport -d test -c t1 -o t1.dat # 匯出JSON格式
-c # 指明匯出集合
-d # 使用庫
./mongoexport -d test -c t1 -csv -f num -o t1.dat # 匯出csv格式
-csv # 指明匯出csv格式
-f # 指明需要匯出那些例
db.t1.drop() # 登入後刪除資料
./mongoimport -d test -c t1 -file t1.dat # mongoimport還原JSON格式
./mongoimport -d test -c t1 -type csv --headerline -file t1.dat # mongoimport還原csv格式資料
--headerline # 指明不匯入第一行 因為第一行是列名
./mongodump -d test -o /bak/mongodump # mongodump資料備份
./mongorestore -d test --drop /bak/mongodump/* # mongorestore恢複
--drop #恢複前先刪除
db.t1.find() #查看
# mongodump 雖然能不停機備份,但市區了擷取即時資料視圖的能力,使用fsync命令能在運行時複製資料目錄並且不會損壞資料
# fsync會強制服務器將所有緩衝區的資料寫入磁碟.配合lock還阻止對資料庫的進一步寫入,知道釋放鎖為止
# 備份在從庫上備份,不耽誤讀寫還能保證即時快照備份
db.runCommand({"fsync":1,"lock":1}) # 執行強制更新與寫入鎖
db.$cmd.sys.unlock.findOne() # 解鎖
db.currentOp() # 查看解鎖是否正常
}
九、修複{
# 當停電或其他故障引起不正常關閉時,會造成部分資料損毀丟失
./mongod --repair # 修複操作:啟動時候加上 --repair
# 修複過程:將所有文檔匯出,然後馬上匯入,忽略無效文檔.完成後重建索引。時間較長,會丟棄損壞文檔
# 修複資料還能起到壓縮資料庫的作用
db.repairDatabase() # 運行中的mongodb可使用 repairDatabase 修複當前使用的資料庫
{"repairDatabase":1} # 通過驅動程式
}
本文出自 “浩子的▁營運筆錄ヽ” 部落格,請務必保留此出處http://chenhao6.blog.51cto.com/6228054/1723118
mongodb複雜命令列