(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)訪問控制;
創建管理員用戶
-
首先進入mongo shell 命令行模式下
-
選擇admin庫,創建root用戶
-
認證
db.auth(“username”,”password”)
-
修改mongo.conf文件,添加以下內容
security:
authorization:enabe
保存退出後,需要重啓mongod服務。 -
登錄服務
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)命令行操作;
數據庫相關
- show dbs: 顯示數據庫列表。
- show collections:顯示當前數據中的集合
- show users: 顯示用戶
- use yourDB: 切換到當前數據庫
- db.help() :顯示數據庫操作命令
- db.yourCollection.help():顯示集合操作命令,yourCollection是集合名字
- 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
- 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
查看是否恢復
恢復成功。