MongoDB的日常維護管理
主要介紹了日常執行維護的管理工具
MongoDB的日常維護包括使用配置檔案,設定訪問控制,Shell互動,系統監控和管理,資料庫日常備份和恢復啟動和停止MongoDB
啟動後可以通過資料庫的IP加埠號訪問Web形式資料庫。
配置檔案
通過使用拂去配置檔案的方式啟動資料庫例項,在bin資料夾下建立並編輯mongodb.config(名字可以隨意)
事例加上 dbpath =/data/db/
啟動時加上 --f 引數,並且指向配置檔案即可。
使用Daemon方式啟動
為什麼我們使用Daemon方式?當我們關閉資料庫服務的session埠的時候,MongoDB的服務也隨之終止,這樣是十分不安全的。通過守護程序的方式,啟動即可。
新增 --fork 引數,這裡必須指定儲存日誌的檔案,即為啟動 --logpath 引數。
事例如下
./mongod.exe --dbpath = D:\MongoDB --logpath = D:\MongoDB\log\mongodb50.log --fork
常見的mongod的引數說明
- dbpath:資料檔案存放路徑
- logpath: 存放的日誌檔案
- bind_ip :對外的服務繫結IP,一般為空,面對所有的IP開放
- port: fork 以後臺Daemon的形式啟動該服務,web管理端在其上加1000
- journal: 開啟日誌功能,通過儲存操作日誌來降低單機故障的恢復時間,
- config :當引數行十分多的時候,使用這個引數來設定引數檔案的位置
關閉資料庫
- 直接使用Control+C來中斷
- 在connect連線狀態下,可以切換到admin資料,後直接在庫中傳送db.shutdownServer()指令終止MongoDB例項。
- Unix下發送Kill -2 PID 或者 Kill -15 PID來終止程序
ps aux|grep mongod
kill -2 (yourPID)
ps aux|grep mongod
注意:不能使用kill -9 PID 殺死程序,這樣可能導致MongoDB資料庫損壞。
訪問資料庫
- 繫結iP地址 ——bind_ip
//MongoDB 可以限制只允許某一特定IP 來訪問,只要在啟動時加一個引數bind_ip 即可,如下:
[[email protected] /home/mongo/mongodb-2.0.2/bin]$ ./mongod --bind_ip 192.168.1.61 - 設定監聽埠 ——port
//將服務端監聽埠修改為27018:
[[email protected] /home/mongo/mongodb-2.0.2/bin]$ ./mongod --bind_ip 192.168.1.61 --port 27018
//(報錯程式碼)端戶訪問時不指定埠,會連線到預設埠27017,對於本例會報錯,程式碼如下:
[[email protected] /home/mongo/mongodb-2.0.2/bin]$ ./mongo 192.168.1.50
MongoDB shell version: 2.0.2
connecting to: 192.168.1.61/test
Sun Apr 14 21:45:26 Error: couldn't connect to server 192.168.1.50 shell/mongo.js:81 exception: connect failed - 使用使用者名稱和密碼登陸 ——啟動時使用--auth引數
//先啟用系統的登入驗證模組, 只需在啟動時指定 auth 引數即可,程式碼如下:
[[email protected] /home/mongo/mongodb-2.0.2/bin]$ ./mongod --auth
啟動認證
預設有個admin資料庫,在admin.system.users中儲存的使用者比其他的資料庫設定的使用者許可權更大。在未新增admin.system.users使用者的許可權的的情況下, 客戶端無需任何認證就可以連線到資料庫,並且可以對資料庫進行任何操作,只有在admin.system.users添加了使用者,啟動--auth引數才會起作用。
1.建立系統root使用者
>db.addUser("root","123456")
>db.auth("root","123456")
2.建立只讀許可權使用者
>db.addUser("user_reader","1234567",true)
新增只讀許可權的使用者只需新增第三個引數,true。
使用命令列操作
MongoDB不僅可以互動,還可以執行指定的JavaScript檔案,執行指定的命令片段,使用Linux Shell。
1.通過eval引數執行指定的語句
查詢test庫的t1集合的記錄有多少:
db.t1.find()
{ "_id" : ObjectId("4f8ac746b2764d3c3e2cafbb"), "num" : 1 }
{ "_id" : ObjectId("4f8ac74cb2764d3c3e2cafbc"), "num" : 2 }
{ "_id" : ObjectId("4f8ac74eb2764d3c3e2cafbd"), "num" : 3 }
{ "_id" : ObjectId("4f8ac751b2764d3c3e2cafbe"), "num" : 4 }
{ "_id" : ObjectId("4f8ac755b2764d3c3e2cafbf"), "num" : 5 }
db.t1.count()
5
通過使用--eval引數直接執行ti的集合中的數
$./mongo.exe --eval "printjson(db.t1.count())"
MongoDB shell version: 2.0.2
connecting to: test
5
2.使用js檔案執行檔案內容
$cat t1_count.js
var count = db.t1.count();
printjson('count of t1 is: '+count);
顯示為:
$./mongo t1_count.js
MongoDB shell version: 2.0.2
connecting to: test
"count of t1 is: 5"
Tips:通過--quiet引數遮蔽部分登陸資訊,使結果更清晰
$ ./mongo --quiet t1_count.js
"count of t1 is: 5"
程序管理
檢視活動程序
> db.currentOp()
>db.$cmd.sys.inprog.findOne() //$cmd呼叫外部函式
顯示如下:
> db.currentOp()
{
"inprog" : [
{
"opid" : 630385,
"active" : true,
"lockType" : "read",
"waitingForLock" : false,
"secs_running" : 0,
"op" : "query",
"ns" : "test",
"query" : {
"count" : "t1",
"query" : {
},
"fields" : {
}
},
"client" : "127.0.0.1:51324",
"desc" : "conn",
"threadId" : "0x7f066087f710",
"connectionId" : 7,
"numYields" : 0
}
]
}
>
程式碼解釋:
- opid:操作程序號
- op: 操作型別(query ,update ,etc)
- ns: 名稱空間(namespace),操作物件
- query :顯示操作的具體內容
- lockType: 鎖的型別,指明是寫鎖還是讀鎖
結束程序
> db.killOp(630385)
{ "info" : "attempting to kill op" }
我們檢視下:
> db.currentOp()
{ "inprog" : [ ] }
>
監控系統的狀態和效能
使用serverStatus命令可以獲取到執行中的MongoDB伺服器統計資訊,下面我們來執行命令,檢視MongoDB伺服器的統計資訊(不同平臺或不同版本的鍵會有所不同),程式碼如下:
> db.runCommand({"serverStatus":1})
{
"host" : "lindenpatservermongodb01",
"version" : "2.0.2",
"process" : "mongod",
"uptime" : 6003,
"uptimeEstimate" : 5926,
"localTime" : ISODate("2012-04-15T11:02:21.795Z"),
"globalLock" : {
"totalTime" : 6002811172,
"lockTime" : 24867,
"ratio" : 0.000004142559092311891,
"currentQueue" : {
"total" : 0,
"readers" : 0,
"writers" : 0
},
"activeClients" : {
"total" : 0,
"readers" : 0,
"writers" : 0
}
},
"mem" : {
"bits" : 64,
"resident" : 52,
"virtual" : 1175,
"supported" : true,
"mapped" : 160,
"mappedWithJournal" : 320
},
"connections" : {
"current" : 1,
"available" : 818
},
"extra_info" : {
"note" : "fields vary by platform",
"heap_usage_bytes" : 341808,
"page_faults" : 14
},
"indexCounters" : {
"btree" : {
"accesses" : 1,
"hits" : 1,
"misses" : 0,
"resets" : 0,
"missRatio" : 0
}
},
"backgroundFlushing" : {
"flushes" : 100,
"total_ms" : 13,
"average_ms" : 0.13,
"last_ms" : 1,
"last_finished" : ISODate("2012-04-15T11:02:19.010Z")
},
"cursors" : {
"totalOpen" : 0,
"clientCursors_size" : 0,
"timedOut" : 0
},
"network" : {
"bytesIn" : 1729666458,
"bytesOut" : 1349989344,
"numRequests" : 21093517
},
"opcounters" : {
"insert" : 5,
"query" : 8,
"update" : 0,
"delete" : 0,
"getmore" : 0,
"command" : 21093463
},
"asserts" : {
"regular" : 0,
"warning" : 0,
"msg" : 0,
"user" : 0,
"rollovers" : 0
},
"writeBacksQueued" : false,
"dur" : {
"commits" : 30,
"journaledMB" : 0,
"writeToDataFilesMB" : 0,
"compression" : 0,
"commitsInWriteLock" : 0,
"earlyCommits" : 0,
"timeMs" : {
"dt" : 3073,
"prepLogBuffer" : 0,
"writeToJournal" : 0,
"writeToDataFiles" : 0,
"remapPrivateView" : 0
}
},
"ok" : 1
}
>
資料匯出與匯入 mongoexport和mongoinport
使用mongoexport匯出資料
先看資料:
> db.t1.find()
{ "_id" : ObjectId("4f8ac746b2764d3c3e2cafbb"), "num" : 1 }
{ "_id" : ObjectId("4f8ac74cb2764d3c3e2cafbc"), "num" : 2 }
{ "_id" : ObjectId("4f8ac74eb2764d3c3e2cafbd"), "num" : 3 }
{ "_id" : ObjectId("4f8ac751b2764d3c3e2cafbe"), "num" : 4 }
{ "_id" : ObjectId("4f8ac755b2764d3c3e2cafbf"), "num" : 5 }
>
使用程式碼:
./mongoexport.exe -d test -c t1 -o t1.dat
connected to: 127.0.0.1
exported 5 records
[[email protected] /home/mongo/mongodb-2.0.2/bin]$ ls
bsondump mongodump mongoimport mongosniff t1_count.js
mongo mongoexport mongorestore mongostat t1.dat
mongod mongofiles mongos mongotop testfiles.txt
[[email protected] /home/mongo/mongodb-2.0.2/bin]$ cat t1.dat
{ "_id" : ObjectId("4f8ac746b2764d3c3e2cafbb"), "num" : 1 }
{ "_id" : ObjectId("4f8ac74cb2764d3c3e2cafbc"), "num" : 2 }
{ "_id" : ObjectId("4f8ac74eb2764d3c3e2cafbd"), "num" : 3 }
{ "_id" : ObjectId("4f8ac751b2764d3c3e2cafbe"), "num" : 4 }
{ "_id" : ObjectId("4f8ac755b2764d3c3e2cafbf"), "num" : 5 }
./mongoexport.exe -d test -c t1 -o t1.dat 使用引數說明
- -d: 指明使用的資料庫
- -c: 指明匯出的集合,這裡是t1
- -o: 匯出的資料名,這裡的資料名預設使用相對路徑,也可以使用絕對路徑。
匯出的資料格式的是JSON方式,也可匯出csv格式;
匯出為CSV格式程式碼檔案如下:
./mongoexport -d test -c t1 -csv -f num -o t1.dat
- -csv:指明瞭要匯出的是CSV格式
- -f: 指明需要匯出的是哪些例子
資料匯入 mongoimport
現將ti刪除:
> db.t1.drop()
true
> show collections
system.indexes
system.users
>
再匯入資料,這裡匯入的是csv資料:
./mongoimport -d test -c t1 --type csv --headerline -file /home/t1.dat
connected to: 127.0.0.1
看看匯入的資料是不是一樣:
> db.t1.find()
{ "_id" : ObjectId("4f8ac746b2764d3c3e2cafbb"), "num" : 1 }
{ "_id" : ObjectId("4f8ac74cb2764d3c3e2cafbc"), "num" : 2 }
{ "_id" : ObjectId("4f8ac74eb2764d3c3e2cafbd"), "num" : 3 }
{ "_id" : ObjectId("4f8ac751b2764d3c3e2cafbe"), "num" : 4 }
{ "_id" : ObjectId("4f8ac755b2764d3c3e2cafbf"), "num" : 5 }
>
- --type csv 匯入的資料格式為CSV,為什麼匯入CSV格式:CSV對各大主流的資料庫支援更良好,而JSON作為輕量級的資料格式,還有些弊端。
- --file 指明匯入的檔案路徑
資料備份和恢復
使用 資料備份 mongodump
./mongodump -d test -o /home/dump
- -o:表示輸出的備份路徑,如果沒有使用這個選項的話,MongoDB會自動建立dump資料夾並將備份檔案放於其內。
使用資料恢復 mongorestore
mongorestore獲取mongodump的輸出結果,並將備份的資料插入到執行的MongoDB中。
./mongorestore -d test dump/*
connected to: 127.0.0.1
Thu Apr 19 18:16:12 dump/test/system.users.bson
Thu Apr 19 18:16:12 going into namespace [test.system.users]
2 objects found
Thu Apr 19 18:16:12 dump/test/t1.bson
Thu Apr 19 18:16:12 going into namespace [test.t1]
5 objects found
Thu Apr 19 18:16:12 dump/test/system.indexes.bson
Thu Apr 19 18:16:12 going into namespace [test.system.indexes]
Thu Apr 19 18:16:12 { key: { _id: 1 }, ns: "test.system.users", name: "_id_" }
Thu Apr 19 18:16:13 { key: { _id: 1 }, ns: "test.t1", name: "_id_" }
2 objects found
相關推薦
MongoDB的日常維護管理
主要介紹了日常執行維護的管理工具 MongoDB的日常維護包括使用配置檔案,設定訪問控制,Shell互動,系統監控和管理,資料庫日常備份和恢復 啟動和停止MongoDB 啟動後可以通過資料庫的IP加埠號訪問Web形式資料庫。 配置檔案 通過使用拂去配置檔案的方式啟動資料
Oracle 表空間的日常維護與管理
enc rename 文件操作 pdb form 允許 恢復 constrain gin 目錄 Oracle 表空間的日常維護與管理 1、創建數據表空間 2、創建臨時表空間 3、創建 UNDO 表空間 4、表空間的擴展與修改大小 5、表空間重命名 6、表空間的刪除 7、更
MongoDB之基本操作與日常維護
啟動 地址 自己的 進制 日常 sea .... object abc MongoDB基本操作 MongoDB的基本操作主要是對數據庫、集合、文檔的操作,包括創建數據庫、刪除數據庫、插入文檔、更改文檔、刪除文檔、和查詢文檔。 操作 描述 show dbs 查看
mongodb 索引日常維護操作
spec 方法 order ali 詳細 bat tail 刪除索引 行數據 創建索引:db.t_order_detail.createIndex({"order_id":1})復合索引:db.t_order_detail.createIndex({&q
《Linux深度攻略》一書,講述Linux日常系統管理和服務器配置內容
linuxLinux深度攻略 首先從介紹Linux系統的安裝入手,講述了Linux系統管理和服務器配置兩部分的知識。系統管理方面內容有Linux系統簡介和安裝,Linux字符界面,目錄和文件管理,Linux常用命令,Shell編程,用戶和組群賬戶管理,權限、所有者和ACL,歸檔、壓縮和備份,軟件包管理,磁盤和
Linux系統Oracle 12cR2 RAC集群安裝與維護管理(12.2)專題
oracle教程 oracle培訓 oracle數據庫教程 oracle工程師培訓 oracle數據庫培訓 風哥Linux系統Oracle 12cR2 RAC集群安裝與維護管理(12.2)專題包括內容:Oracle數據庫12cR2(項目實戰之一):在Windows上安裝Oracle12.2
Oracle 11.2.0.4.0 Dataguard部署和日常維護(6)-Active dataguard
ima file man log role 主備 span for current 1. 檢查主備庫的狀態 on primary column DATABASE_ROLE format a20 column OPEN_MODE format a15 column PR
華為交換機日常維護
交換機交換機上查看當前端口流量:display interface Ethernet brief | include up對端口進行限速:interface GigabitEthernet 0/0/14 qos lr inbound cir 8192 //配置進入此端口的保證帶寬為8Mbit/sqos lr
[linux][MongoDB] mongodb學習(一):MongoDB安裝、管理工具、
ole ont mon mkdir man 管理工具 tar end 認證 參考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安裝完美實現! 1. mongoDB安裝、啟動、關閉 1.1
物理standby database的日常維護
for str startup using commit system ava sys art 1.停止Standby select process, status from v$managed_standby; --查看備庫是否在應用日誌進行恢復 alter databa
MHA 日常維護命令集
故障轉移 show tar manager one less 命令集 efault 決定 MHA 日常維護命令集 1.查看ssh登陸是否成功 masterha_check_ssh --global_conf=/etc/masterha/masterha_default.co
linux日常維護(iostat,free,ps,
1監控io性能iostat在安裝sysstat時就已經安裝,和sar屬於同一個包[root@abc ~]# iostat -xLinux 3.10.0-514.el7.x86_64 (abc.com) 2017年11月27日 _x86_64_ (1 CPU)avg-cpu: %user %nice
linux日常維護(網絡相關,防火墻,netfirter介紹,netfirter語法)
linux網絡相關 防火墻 netfirter 1.linux網絡相關ifconfig 查看網卡ip (centos6是默認有的,centos7裏沒有,需要下載 yum install net-tloos)關閉網卡: ifdown +網卡 (關閉後沒有ip)打開網卡 if
Linux日常維護(firewalld的9個zone和service)
firewalld zone service 一、iptables規則備份和恢復iptables如果不使用service iptables save命令,則重啟之後規則會全部消失。services save命令默認把規則保存在/etc/sysconfig/iptables文件裏。可以用ipable
linux日常維護(rsync介紹,常用選項,rsync六種模式)
rsync介紹 rsync常用選項 rsync六種模式 一、rsync介紹rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此
Linux-Postfix&Extmail郵件隊列問題及日常維護
隊列 分享圖片 命令行 top 錯誤 director 慎用 服務 gin 郵件隊列相關: Postsuper:postsuper命令是postfix隊列維護作業。該命令的使用僅限於超級用戶。 默認情況下,postsuper執行在所有Postfix隊列目錄中使用-s和-p命
MongoDB用戶管理
command ror mon create .get 分享 string undefine pwd 創建用戶 語法:db.createUser({user:<name_string>, #字符串pwd:<password_strin>, #字符
[svc][db]mysql日常維護語句
data inter ota can use sta hang 建表 命令 mysql啟動 docker run -p 3306:3306 -v /data/mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime --n
綜合布線系統維護管理的五大註意要點
科迅電子 德特威勒 綜合布線綜合布線系統是一套用於建築物內或建築群之間,為計算機、通信設施與監控系統預先設置的信息傳輸通道。它將語音、數據、圖像等設備彼此相連,同時能使上述設備與外部通信數據網絡相連接。它的核心就是"綜合",也就是各個弱電系統均可用綜合布線系統進行信息傳輸。 機房維護管理的
Oracle數據庫web維護管理及監控
種類 簡單的 window 經歷 優勢 自主 toad 都是 命令 1、Oracle數據庫客戶端的種類及現狀 目前Oracle數據庫維護管理,通常是使用客戶端軟件:PL/SQL Developer,SQL* Plus,toad,em等進行數據的管理、維護等操