MongoDB的日常維護和復制集
- 日常維護
- 備份與回復管理
- 匯入匯出
- 備份與恢復
- 克隆(克隆集合)
- 安全管理
- 監控
- 行程管理
- 授權啟動
日常維護
MongoDB日常維護主要包括資料庫的備份恢復、安全管理和資料庫狀態監控
備份與回復管理
在MongoDB中備份管理包括匯入匯出、備份與恢復、復制資料庫和克隆集合等操作
匯入匯出
可以使用mongoexport 和 mongoimport 命令來匯出匯入 MongoDB 的資料
- mongoexport 命令可以把一個collection匯出成JSON格式或CSV格式的檔案,可以通過引數指定匯出的資料項,也可以根據指定的條件匯出資料
- mongoimport 命令可以把一個特定格式檔案中的內容匯入到指定的collection中,該工具可以匯入JSON / CSV 格式的資料
- 批量創建資料
for(var i=1;i<=1000;i++){db.users.insert({'id':i,'name':'maomao'});}
而后使用db.users.find(),會發現只會出現20行,這是因為資料庫默認只會出現20行
- 匯出資料
mongoexport -d test -c 表格 -o 儲存位置/表名.json
[root@mongodb bin]# mongoexport -d test -c users -o /home/mao.json
2021-04-19T10:01:49.406-0400 connected to: localhost
2021-04-19T10:01:49.416-0400 exported 1000 records
[root@mongodb bin]# ls /home
mao.json maomao
- 模擬故障
匯入資料后模擬資料表格丟失
> db.users.drop()
true
> show tables
comment
system.indexes
zhu
- 恢復
恢復資料
mongoimport -d 庫名 -c 表名 --file json檔案路徑
[root@mongodb bin]# mongoimport -d test -c users --file /home/mao.json
2021-04-19T10:05:33.264-0400 connected to: localhost
2021-04-19T10:05:33.273-0400 imported 1000 documents
- 驗證
> db.users.findOne()
{
"_id" : ObjectId("607d8cdd5c684f0ac406a9ce"),
"id" : 2,
"name" : "maomao"
}
- 匯出特定條件的資料
匯出特定條件的資料(id大于500)
[root@mongodb bin]# mongoexport -d test -c users -q '{"id":{"$gt":500}}' -o /home/mao500.json
2021-04-19T10:11:35.345-0400 connected to: localhost
2021-04-19T10:11:35.349-0400 exported 500 records
- 驗證
[root@mongodb bin]# head -10 mao500.json
{"_id":{"$oid":"607d8cdd5c684f0ac406abc1"},"id":501.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc2"},"id":502.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc4"},"id":504.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc5"},"id":505.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc6"},"id":506.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc7"},"id":507.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc8"},"id":508.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abc9"},"id":509.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abca"},"id":510.0,"name":"maomao"}
{"_id":{"$oid":"607d8cdd5c684f0ac406abcb"},"id":511.0,"name":"maomao"}
- 匯入特定條件的資料
[root@mongodb bin]# mongoimport -d mao -c users --file /home/mao500.json
測驗
> use mao
switched to db mao
> show tables
system.indexes
users
> db.users.findOne()
{
"_id" : ObjectId("607d8cdd5c684f0ac406abc1"),
"id" : 501,
"name" : "maomao"
}
備份與恢復
MongoDB中可以使用mongodump 命令來備份MongoDB 的資料,該命令可以匯出所有資料到指定目錄中,mongodump 命令可以通過引數指定匯出的資料量級轉存的服務器
mongodump -h dbhost -d dbname -o db備份路徑
[root@mongodb home]# mkdir /home/backup
[root@mongodb home]# mongodump -h 127.0.0.1:27017 -d mao -o /home/backup/
2021-04-19T10:22:52.442-0400 writing mao.users to
2021-04-19T10:22:52.454-0400 done dumping mao.users (500 documents)
[root@mongodb home]# ll /home/backup/
total 0
drwxr-xr-x 2 root root 51 Apr 19 10:22 mao
[root@mongodb home]# cd backup/mao/
[root@mongodb mao]# ls
users.bson users.metadata.json
使用mongorestore命令來恢復備份的資料
mongostore -h dbhost -d dbname --dir=/資料路徑
[root@mongodb mao]# mongorestore -h127.0.0.1:27017 -d mao1 --dir=/home/backup/mao/
2021-04-19T10:26:42.560-0400 the --db and --collection args should only be used when restoring from a BSON file. Other use
s are deprecated and will not exist in the future; use --nsInclude instead2021-04-19T10:26:42.560-0400 building a list of collections to restore from /home/backup/mao dir
2021-04-19T10:26:42.561-0400 reading metadata for mao1.users from /home/backup/mao/users.metadata.json
2021-04-19T10:26:42.645-0400 restoring mao1.users from /home/backup/mao/users.bson
2021-04-19T10:26:42.688-0400 no indexes to restore
2021-04-19T10:26:42.688-0400 finished restoring mao1.users (500 documents)
2021-04-19T10:26:42.688-0400 done
> show dbs
admin 0.078GB
local 0.078GB
mao 0.078GB
mao1 0.078GB # 還原的庫
test 0.078GB
克隆(克隆集合)
在MongoDB中可以將資料庫中的集合進行克隆,這里將mao 資料庫中的users集合克隆到另外一個實體
啟動另外一個實體(instance),一個實體就是記憶體空間,
mongod -f /usr/local/mongodb/bin/mongodb2.conf
netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:27018 0.0.0.0:* LISTEN
mongo --port 27018 # 加埠號
克隆資料
> db.runCommand({"cloneCollection":"mao.users","from":"127.0.0.1:27017"})
{ "ok" : 1 }
> show dbs
local 0.078GB
mao 0.078GB
> use mao
switched to db mao
> show tables
system.indexes
users
> db.users.findOne()
{
"_id" : ObjectId("607d8cdd5c684f0ac406abc1"),
"id" : 501,
"name" : "maomao"
安全管理
MongoDB安全管理主要包括MongoDB 的安全訪問控制和用戶權限分配
監控
修改組態檔
vim mongodb1.conf
添加
bind_ip=192.168.188.101
port = 27017
然后停止服務
mongod -f mongodb1.conf --shutdown
開啟監控
方法一:命令列開啟,臨時,下次重啟失效
mongod -f /usr/local/mongodb/bin/mongodb1.conf --httpinterface
[root@mongodb ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 192.168.188.101:27017 *:*
方法二:修改組態檔,永久生效
在組態檔下面添加
httpinterface=true
在瀏覽器中登錄進行訪問:自身ip地址+28017埠號

系結ip和埠之后 登錄必須加上 --host
mongo --host 192.168.188.101:27017
行程管理
-
查看當前正在運行的行程
db.currentOp() 殺死高消耗的行程 db.killOp(268) -
”小駝峰” killOp
-
“大駝峰” StudentOp
授權啟動
可以配置授權用戶來訪問MongoDB,啟動時必須指定auth=true,否則授權不起作用
創建管理用戶
db.createUser(
{
user: "用戶名",
pwd: "密碼",
roles: [ { role: "root", db: "管理庫名" } ]
}
)
> db.createUser(
... {
... user:'root',
... pwd:'123',
... roles:[{role:'root',db:'admin'}]
... }
... )
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
創建普通用戶
db.createUser({user:"xiaotian",pwd:"123",roles:[{role:"readWrite",db:"mao"}]})
驗證
> db.auth('xiaotian','123')
1
回傳值為1說明驗證成功
開啟用戶驗證
vim mongodb1.conf
添加
auth=true
驗證用戶 方法1
mongod -f /usr/local/mongodb/bin/mongodb1.conf --shutdown
mongod -f /usr/local/mongodb/bin/mongodb1.conf
mongo --host 192.168.188.101:27017
> show dbs
2021-04-19T10:57:37.163-0400 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:814:19
shellHelper@src/mongo/shell/utils.js:704:15
@(shellhelp2):1:1
> db.auth("root","123")
1
> show dbs
admin 0.078GB
local 0.078GB
mao 0.078GB
mao1 0.078GB
test 0.078GB
> use mao
switched to db mao
> db.auth("xiaotian","123")
1
> show tables;
system.indexes
users
驗證用戶 方法2
mongo -uroot -proot 192.168.100.101:27017/admin
show dbs
洗掉賬號xiaotian
db.dropUser("xiaotian");
false
> use mao
switched to db mao
> db.dropUser("xiaotian");
true
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278418.html
標籤:其他
