官方網站:
http://www.mongodb.org/html
MongoDB的一些參數linux
1 --logpath 日誌文件路徑 2 --master 指定爲主機器 3 --slave 指定爲從機器 4 --source 指定主機器的IP地址 5 --pologSize 命令行參數(與--master一同使用)配置用於存儲給從節點可用的更新信息佔用的磁盤空間(M爲單位),若是不指定這個參數,默認大小爲當前可用磁盤空間的5%(64位機器最小值爲1G,32位機器爲50M)。 6 --logappend 日誌文件末尾添加 7 --port 啓用端口號 8 --fork 在後臺運行 9 --only 指定只複製哪個數據庫 10 --slavedelay 指從複製檢測的時間間隔 11 --auth 是否須要驗證權限登陸(用戶名和密碼) 12 -h [ --help ] show this usage information 13 --version show version information 14 -f [ --config ] arg configuration file specifying additional options 15 --port arg specify port number 指定端口號 16 --bind_ip arg local ip address to bind listener - all local ips 17 bound by default 18 -v [ --verbose ] be more verbose (include multiple times for more 19 verbosity e.g. -vvvvv) 20 --dbpath arg (=/data/db/) directory for datafiles 指定數據存放目錄 21 --quiet quieter output 靜默模式 22 --logpath arg file to send all output to instead of stdout 指定日誌存放目錄 23 24 --logappend appnd to logpath instead of over-writing 指定日誌是以追加仍是以覆蓋的方式寫入日誌文件 25 26 --fork fork server process 以建立子進程的方式運行 27 --cpu periodically show cpu and iowait utilization 週期性的顯示cpu和io的使用狀況 28 --noauth run without security 無認證模式運行 29 --auth run with security 認證模式運行 30 --objcheck inspect client data for validity on receipt 檢查客戶端輸入數據的有效性檢查 31 --quota enable db quota management 開始數據庫配額的管理 32 --quotaFiles arg number of files allower per db, requires --quota 規定每一個數據庫容許的文件數 33 --appsrvpath arg root directory for the babble app server 34 --nocursors diagnostic/debugging option 調試診斷選項 35 --nohints ignore query hints 忽略查詢命中率 36 --nohttpinterface disable http interface 關閉http接口,默認是28017 37 --noscripting disable scripting engine 關閉腳本引擎 38 --noprealloc disable data file preallocation 關閉數據庫文件大小預分配 39 --smallfiles use a smaller default file size 使用較小的默認文件大小 40 --nssize arg (=16) .ns file size (in MB) for new databases 新數據庫ns文件的默認大小 41 --diaglog arg 0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是隻讀,只寫,仍是讀寫都行,仍是主要寫+部分的讀模式 42 --sysinfo print some diagnostic system information 打印系統診斷信息 43 --upgrade upgrade db if needed 若是須要就更新數據庫 44 --repair run repair on all dbs 修復全部的數據庫 45 --notablescan do not allow table scans 不運行表掃描 46 --syncdelay arg (=60) seconds between disk syncs (0 for never) 系統同步刷新磁盤的時間,默認是60s 47 Replication options: 48 --master master mode 主複製模式 49 --slave slave mode 從複製模式 50 --source arg when slave: specify master as <server:port> 當爲從時,指定主的地址和端口 51 --only arg when slave: specify a single database to replicate 當爲從時,指定須要從主複製的單一庫 52 --pairwith arg address of server to pair with 53 --arbiter arg address of arbiter server 仲裁服務器,在主主中和pair中用到 54 --autoresync automatically resync if slave data is stale 自動同步從的數據 55 --oplogSize arg size limit (in MB) for op log 指定操做日誌的大小 56 --opIdMem arg size limit (in bytes) for in memory storage of op ids指定存儲操做日誌的內存大小 57 Sharding options: 58 --configsvr declare this is a config db of a cluster 指定shard中的配置服務器 59 --shardsvr declare this is a shard db of a cluster 指定shard服務器
60 --diaglog:建立一個很是詳細的故障排除和各類錯誤的診斷日誌記錄。默認0。設置爲1,爲在dbpath目錄裏生成一個diaglog.開頭的日誌文件,他的值以下:
例子:diaglog:mongodb
1.
Value Setting
2.
0
off. No logging. #關閉。沒有記錄。
3.
1
Log write operations. #寫操做
4.
2
Log read operations. #讀操做
5.
3
Log both read and write operations. #讀寫操做
6.
7
Log write and some read operations. #寫和一些讀操做
MongoDB 安裝,主從配置
一 MongoDB 安裝shell
1 [root@zabbix_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz 2 [root@zabbix_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz 3 [root@zabbix_server src]# mv mongodb-linux-x86_64-2.0.0 /usr/local/mongodb 4 5 [root@zabbix_server src]# mkdir /usr/local/mongodb/data 6 [root@zabbix_server src]# touch /usr/local/mongodb/logs 7 8 [root@zabbix_server bin]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork 9 10 11 12 [root@zabbix_server bin]# ./mongo 13 MongoDB shell version: 2.0.0 14 connecting to: test 15 > use test; 16 switched to db test 17 > exit 18 bye 19 20 21 [root@zabbix_server bin]# netstat -anlpt | grep mongo 22 tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 11504/mongod 23 tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 11504/mongod
注意:
若是報錯
-bash: /usr/local/mongodb/bin/mongod: cannot execute binary file
說明你的服務器和mongodb 的版本不對應, 若是服務器是64位,下載x86_64的mongodb ,若是服務器是32位的, 下載i686的mongodb/
二 MongoDB 主從配置
1)實驗環境
主:192.168.0.14
從:192.168.0.64
2)時間同步
兩臺機器作時間同步
[root@zabbix_server src]# ntpdate time.windows.com
3)啓動服務:方法一
master:192.168.0.14
啓動命令
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
slave:192.168.0.64
啓動命令
/usr/local/mongodb/bin/mongod --slave --source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork數據庫
方法二(將啓動方法寫成配置文件的形式)windows
vi mongod.conf(主庫的配置文件) bash
port=27017
dbpath=/usr/local/mongodb01/db
logpath=/usr/local/mongodb01/logs/mongodb.log
logappend=true
journal=true
fork = true
master = true 服務器
vi mongod.conf(從庫的配置文件)
app
port=27017
dbpath=/usr/local/mongodb02/db
logpath=/usr/local/mongodb02/logs/mongodb.log
logappend=true
journal=true
fork = true
source = 10.143.79.16:27017tcp
./bin/mongd -f mongod.conf 執行後mongo啓動
4)測試主從
在主上插入數據
測試1:
1 測試1: 2 1 在主庫上插入數據 3 [root@cacti bin]# ./mongo 4 MongoDB shell version: 2.0.0 5 connecting to: test 6 > db.foo.save({"id":123456,"name":'lizonggang'}) 7 > db.foo.find({"id":123456}) 8 { "_id" : ObjectId("51c3f4b21399022afd992f39"), "id" : 123456, "name" : "lizonggang" } 9 > 10 11 2 在從上查看數據(已有在主上插入的數據,說明主從成功) 12 [root@zabbix_server bin]# ./mongo 13 MongoDB shell version: 2.0.0 14 connecting to: test 15 > db.foo.find({"id":123456}) 16 { "_id" : ObjectId("51c3f4b21399022afd992f39"), "id" : 123456, "name" : "lizonggang" } 17 >
進行數據同步是可能出現錯誤
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } 此錯誤是當主庫插完數據後,在從庫查詢的時候出現的
MongoDb的「not master and slaveok=false」錯誤及解決方法
解決方法:1.在從進庫輸入>rs.slaveOk();進行強制同步(不推薦)
2.在主庫上設置 slaveok=ok
[mongodb@ligh bin]$ mongo 127.0.0.1:33333
測試2:
1 1 在主庫上入數據 2 > use elaindb 3 switched to db elaindb 4 > db.test.save({title:"This is a test!"}) 5 > db.test.find(); 6 { "_id" : ObjectId("51c3f8f11a90c8da157c7f64"), "title" : "This is a test!" } 7 > 8 9 2 在從庫上驗證數據 10 [root@zabbix_server bin]# ./mongo 11 MongoDB shell version: 2.0.0 12 connecting to: test 13 > use elaindb 14 switched to db elaindb 15 > db.test.find(); 16 { "_id" : ObjectId("51c3f8f11a90c8da157c7f64"), "title" : "This is a test!" } 17 > db.printReplicationInfo(); 18 this is a slave, printing slave replication info. 19 source: 192.168.0.14:27017 20 syncedTo: Fri Jun 21 2013 14:59:10 GMT+0800 (CST) 21 = 9 secs ago (0hrs) 22 > 23 > db.printSlaveReplicationInfo(); 24 source: 192.168.0.14:27017 25 syncedTo: Fri Jun 21 2013 14:59:30 GMT+0800 (CST) 26 = 16 secs ago (0hrs) 27 >
測試3:
1 在這個狀態下,slave 下是不能夠插入數據的 2 > db.test.save({title:"This is slave test!"}) 3 not master
5) 一些查詢狀態的語句
1)查詢庫
1 > show dbs; 2 elaindb 0.0625GB 3 local 0.125GB 4 test 0.0625GB
2)在從庫上查詢主庫的地址
1 > use local; 2 switched to db local 3 > db.sources.find() 4 { "_id" : ObjectId("51c3f5dd568d10529950b10d"), "host" : "192.168.0.14:27017", "source" : "main", "syncedTo" : { "t" : 1371797300000, "i" : 1 } } 5 >
3)查看主從複製狀態
1 > db.printReplicationInfo(); 2 configured oplog size: 47.6837158203125MB 3 log length start to end: 1375secs (0.38hrs) 4 oplog first event time: Fri Jun 21 2013 14:30:35 GMT+0800 (CST) 5 oplog last event time: Fri Jun 21 2013 14:53:30 GMT+0800 (CST) 6 now: Fri Jun 21 2013 14:53:32 GMT+0800 (CST) 7 >
4)查看Collection狀態
1 > db.printCollectionStats(); 2 foo 3 { 4 "ns" : "test.foo", 5 "count" : 1, 6 "size" : 56, 7 "avgObjSize" : 56, 8 "storageSize" : 4096, 9 "numExtents" : 1, 10 "nindexes" : 1, 11 "lastExtentSize" : 4096, 12 "paddingFactor" : 1, 13 "flags" : 1, 14 "totalIndexSize" : 8176, 15 "indexSizes" : { 16 "_id_" : 8176 17 }, 18 "ok" : 1 19 } 20 --- 21 system.indexes 22 { 23 "ns" : "test.system.indexes", 24 "count" : 1, 25 "size" : 64, 26 "avgObjSize" : 64, 27 "storageSize" : 4096, 28 "numExtents" : 1, 29 "nindexes" : 0, 30 "lastExtentSize" : 4096, 31 "paddingFactor" : 1, 32 "flags" : 0, 33 "totalIndexSize" : 0, 34 "indexSizes" : { 35 36 }, 37 "ok" : 1 38 } 39 --- 40 >
6)應急
若是在應用中主掛掉了怎麼辦?
這個狀況就須要,中止從庫, 把從庫以主庫的啓動命令起來就能夠了。
1)停掉從庫
kill -9 進程號
2)刪除locat下文件
1 rm mongodb/db/locat.* -rf
3)啓動從庫
1 /usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data
--logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
6) Mongdb Web 查看界面
7) MongoDB 增,刪,改,查
1 [root@cacti bin]# ./mongo 2 MongoDB shell version: 2.0.0 3 connecting to: test 4 > db.test.insert({ "Name" : "ymind", "age" : 8 }); #在test數據庫裏插入數據 5 > 6 > db.test.find({ "Name" : "ymind" } ); #查詢數據 7 { "_id" : ObjectId("51c4187090db4e4751a3cd05"), "Name" : "ymind", "age" : 8 } 8 > db.test.find({ "age" : 8} ); #查詢數據 9 { "_id" : ObjectId("51c4187090db4e4751a3cd05"), "Name" : "ymind", "age" : 8 } 10 > 11 > 12 > db.test.update({"Name" : "ymind"}, { "$set" : { "age" : "5" } } ); #修改數據 13 > db.test.find({ "Name" : "ymind" } ); 14 { "Name" : "ymind", "_id" : ObjectId("51c4187090db4e4751a3cd05"), "age" : "5" } 15 > 16 > db.test.remove({ "Name" : "ymind" } ); #刪除數據 17 > db.test.find({ "Name" : "ymind" } ); 18 > 19 >