MongoDB的管理-深度長文

(1) 啓動和停止MongoDB;

Ubuntu18下啓動關閉MongoDB
啓動MongoDB:
方法一:
systemctl start mongod.service
在這裏插入圖片描述
方法二:
在MongoDB的安裝目錄下執行
./bin/mongod -f /data/mongod
在這裏插入圖片描述
上面的截圖中,是以腳本的方式啓動mongodb服務。在/data/mongod.conf配置文件中,配置了以下內容。

1.	#日誌文件位置  
2.	logpath=/data/db/journal/mongodb.log  
3.	   
4.	# 以追加方式寫入日誌  
5.	logappend=true  
6.	   
7.	# 是否以守護進程方式運行  
8.	fork=true  
9.	   
10.	# 默認27017  
11.	#port = 27017  
12.	   
13.	# 數據庫文件位置  
14.	dbpath=/data/db  
15.	   
16.	# 啓用定期記錄CPU利用率和 I/O 等待  
17.	#cpu = true  
18.	   
19.	# 是否以安全認證方式運行,默認是不認證的非安全方式  
20.	#noauth = true  
21.	#auth = true  
22.	   
23.	# 詳細記錄輸出  
24.	#verbose = true  
25.	   
26.	# Inspect all client data for validity on receipt (useful for  
27.	# developing drivers)用於開發驅動程序時驗證客戶端請求  
28.	#objcheck = true  
29.	   
30.	# Enable db quota management  
31.	# 啓用數據庫配額管理  
32.	#quota = true  
33.	# 設置oplog記錄等級  
34.	# Set oplogging level where n is  
35.	#   0=off (default)  
36.	#   1=W  
37.	#   2=R  
38.	#   3=both  
39.	#   7=W+some reads  
40.	#diaglog=0  
41.	   
42.	# Diagnostic/debugging option 動態調試項  
43.	#nocursors = true  
44.	   
45.	# Ignore query hints 忽略查詢提示  
46.	#nohints = true  
47.	# 禁用http界面,默認爲localhost:28017  
48.	#nohttpinterface = true  
49.	   
50.	# 關閉服務器端腳本,這將極大的限制功能  
51.	# Turns off server-side scripting.  This will result in greatly limited  
52.	# functionality  
53.	#noscripting = true  
54.	# 關閉掃描表,任何查詢將會是掃描失敗  
55.	# Turns off table scans.  Any query that would do a table scan fails.  
56.	#notablescan = true  
57.	# 關閉數據文件預分配  
58.	# Disable data file preallocation.  
59.	#noprealloc = true  
60.	# 爲新數據庫指定.ns文件的大小,單位:MB  
61.	# Specify .ns file size for new databases.  
62.	# nssize =  
63.	   
64.	# Replication Options 複製選項  
65.	# in replicated mongo databases, specify the replica set name here  
66.	#replSet=setname  
67.	# maximum size in megabytes for replication operation log  
68.	#oplogSize=1024  
69.	# path to a key file storing authentication info for connections  
70.	# between replica set members  
71.	#指定存儲身份驗證信息的密鑰文件的路徑  
72.	#keyFile=/path/to/keyfile  

關閉MongoDB:
方法一:在shell模式下可以直接通過db.shutdownServer()關閉
在這裏插入圖片描述

方法二:還可以直接通過kill -9 進程號殺死mongodb的進程
方法三:mongod --config=/data/mongod.conf –shutdown
方法四:systemctl stop mongod.service

(2)訪問控制;

創建管理員用戶

  1. 首先進入mongo shell 命令行模式下

  2. 選擇admin庫,創建root用戶
    在這裏插入圖片描述

  3. 認證
    db.auth(“username”,”password”)
    在這裏插入圖片描述

  4. 修改mongo.conf文件,添加以下內容
    security:
    authorization:enabe
    在這裏插入圖片描述
    保存退出後,需要重啓mongod服務。

  5. 登錄服務
    mongo -u root-p root –authenticationDatabase admin

在這裏插入圖片描述

還可以修改用戶的密碼:
db.changeUserPassword(“username”,”password”)

在這裏插入圖片描述
刪除用戶

在這裏插入圖片描述
用戶的內置角色

  • 數據庫用戶角色 read、readWrite;

  • 數據庫管理角色 dbAdmin、dbOwner、userAdmin

  • 集羣管理角色 clusterAdmin、clusterManager、clusterMonitor hostManager

  • 備份恢復角色 backup、restore

  • 所有數據庫角色,只用於admin數據庫
    readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  • 超級用戶角色 root 內部角色 __system

(3)命令行操作;

數據庫相關

  1. show dbs: 顯示數據庫列表。
  2. show collections:顯示當前數據中的集合
  3. show users: 顯示用戶
  4. use yourDB: 切換到當前數據庫
  5. db.help() :顯示數據庫操作命令
  6. db.yourCollection.help():顯示集合操作命令,yourCollection是集合名字
  7. db.createCollections(‘teacher’):
    創建Collection,其實MongoDB其實在插入數據的時候也會自動創建對應的集合。

插入數據
插入數據也會自動創建集合
插入有兩種方式:insert和save
兩個都可以不指定_id的值,會自動生成唯一_id

兩者的區別是

  • insert時,如果_id已存在,不會再次插入新的值
  • save時,如果_id已存在,會更新原來的值,也就是覆蓋

db.student.insert({_id:1,sname:'zhangsan',sage:20}) # 向student表中插入一條數據
在這裏插入圖片描述

刪除文檔;
db.student.remove({sname:'zhangsan'}) # 刪除student表中sname='zhangsan'

在這裏插入圖片描述

修改文檔;
語法格式: db.youCollection.update(criteria, objNew, upsert, multi )

  • criteria: update的查詢條件,類似sql update查詢內where後面的。
  • objNew : update的對象和一些更新的操作符(如$set)等,也可以理解爲sql update查詢內set後面的。
  • upsert : 如果不存在update的記錄,是否插入objNew,true爲插入,默認是false,不插入。
  • multi: mongodb默認是false,只更新找到的第一條記錄,如果這個參數爲true,就把按條件查出來多條記錄全部更新。默認false,只修改匹配到的第一條數據。
  • 其中criteria和objNew是必選參數,upsert和multi可選參數

在這裏插入圖片描述

查看數據
db.youCollection.find(criteria, filterDisplay)
criteria :查詢條件,可選
filterDisplay:篩選顯示部分數據,如顯示指定列數據,可選
db.youCollection.find(criteria, filterDisplay).pretty()表示格式化輸出

刪除collection

  1. db.teacher.drop()

退出shell命令
exit或Ctrl+c

(4)進程控制;

查看MongoDB當前正在做哪些操作
db.currentOp()
在這裏插入圖片描述

查看當前有多少個連接
db.serverStatus().connections
在這裏插入圖片描述

結束進程
db.killOp(1234)
等同於:db.$cmd.sys.killop.findOne{op:1234}

(5)MongoDB的監控;

Mongostat是mongodb自帶的狀態監測工具,在命令行下使用,他會監測固定時間mongodb的當前運行狀態,並輸出。
在這裏插入圖片描述
inserts/s每秒插入的次數
query/s,每秒查詢的次數;update/s,每秒更新的次數,delete/s,每秒刪除的次數;command/s每秒的命令數,conn當前連接數,time是時間戳,vsize,虛擬內存使用量,res代表物理內存使用量,單位是MB。

db.status() #查看分區狀態
在這裏插入圖片描述
獲取服務器狀態,connections中有當前連接數和可用連接數。
在這裏插入圖片描述

mongotop用來跟蹤mongodb的實例,提供每個集合的統計數據。默認情況下,mongotop每秒刷新一次。
ns:包含數據庫命名空間
db:包含數據庫的名稱。名爲 . 的數據庫針對全局鎖定,而非特定數據庫。
total:mongod花費的時間工作在這個命名空間提供總額。
read:mongod花費在此命名空間執行讀操作的時間,
write:mongod花費在這個命名空間進行寫操作的時間,

在這裏插入圖片描述

(6)MongoDB數據的導入、導出;

mongodb數據的導出
1、 導出工具:mongoexport
2、 概念:MongoDB的mongoexport工具可以將一個collection導出成JSON或者CSV格式的文件。
3、 語法:
mongoexport -d dbname -c collectionname -o file –type json/csv -f field
-d dbname: 數據庫名字
-c collectionname: collection名字
-o 指定導出的文件路徑和文件名
-type 導出文件類型,如果是csv,需要指定字段名
-f 後加字段名(例如:_id,user_id,user_name,age,status)
在這裏插入圖片描述

mongodb數據導入: mongoimport
1、 語法:
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

-d :數據庫名
-c :collection名
–type :導入的格式默認json
-f :導入的字段名
–headerline :如果導入的格式是csv,則可以使用第一行的標題作爲導入的字段
–file :要導入的文件

2、 實例
sudo mongoimport -d School-c student --file /usr/local/mongodb/student.json --type json在這裏插入圖片描述

導入結果查看

在這裏插入圖片描述
(7)MongoDB備份、還原;
MongoDB數據庫備份
語法:
mongoddump -h dbhost -d dbname -o dbdirectory

參數說明:
-h: MongoDB服務器所在地址,例如127.0.0.1,當然可以指定端口號:127.0.0.1:27017
-d: 備份數據庫實例
-o: 備份數據存放的位置,例如/data/db/mongodump,需要注意的是這個目錄需要提前建立

mongodump -h 127.0.0.1 -d School -o /data/db/mongodump
在這裏插入圖片描述
去查看一下是否備份成功
在這裏插入圖片描述
備份成功

MongoDB數據庫恢復
語法格式:
mongorestore -h dbhost -d dbname --dir dbdirectory

參數說明:
-h: MongoDB服務器所在地址,例如127.0.0.1,當然可以指定端口號:127.0.0.1:27017
-d: 恢復數據庫實例
–dir: 備份數據存放的位置,例如/data/db/mongodump/School
–drop: 這個參數的作用是在恢復的時候,先刪除當前數據,再恢復備份的數據。

mongorestore -h 127.0.0.1:27017 -d School --dir /data/db/mongodump/School

先刪庫,再恢復
在這裏插入圖片描述

恢復School庫
mongorestore -h 127.0.0.1:27017 -d School --dir /data/db/mongodump/School
在這裏插入圖片描述

查看是否恢復

在這裏插入圖片描述

恢復成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章