對(duì)于linux系統(tǒng)下的MongoDB數(shù)據(jù)庫安裝配置等操作,小編為大家整理了linux系統(tǒng)MongoDB數(shù)據(jù)庫安裝、配置、主從同步、備份與恢復(fù)資料,希望對(duì)大家有所幫助。
MongoDB介紹
Mongo是一個(gè)高性能,開源,模式自由(schema-free)的文檔型數(shù)據(jù)庫,它在許多場景下可用于替代傳統(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值(key-value)存儲(chǔ)方式。Mongo使用C++開發(fā),具有以下特性:
l 面向集合的存儲(chǔ):適合存儲(chǔ)對(duì)象及JSON形式的數(shù)據(jù)。
l 動(dòng)態(tài)查詢:Mongo支持豐富的查詢表達(dá)式。查詢指令使用JSON形式的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對(duì)象及數(shù)組。
l 完整的索引支持:包括文檔內(nèi)嵌對(duì)象及數(shù)組。Mongo的查詢優(yōu)化器會(huì)分析查詢表達(dá)式,并生成一個(gè)高效的查詢計(jì)劃。
l 查詢監(jiān)視:Mongo包含一個(gè)監(jiān)視工具用于分析數(shù)據(jù)庫操作的性能。
l 復(fù)制及自動(dòng)故障轉(zhuǎn)移:Mongo數(shù)據(jù)庫支持服務(wù)器之間的數(shù)據(jù)復(fù)制,支持主-從模式及服務(wù)器之間的相互復(fù)制。復(fù)制的主要目標(biāo)是提供冗余及自動(dòng)故障轉(zhuǎn)移。
l 高效的傳統(tǒng)存儲(chǔ)方式:支持二進(jìn)制數(shù)據(jù)及大型對(duì)象(如照片或圖片)。
l 自動(dòng)分片以支持云級(jí)別的伸縮性(處于早期alpha階段):自動(dòng)分片功能支持水平的數(shù)據(jù)庫集群,可動(dòng)態(tài)添加額外的機(jī)器。
模式自由(schema-free),意味著對(duì)于存儲(chǔ)在mongodb數(shù)據(jù)庫中的文件,我們不需要知道它的任何結(jié)構(gòu)定義。如果需要的話,你完全可以把不同結(jié)構(gòu)的文件存儲(chǔ)在同一個(gè)數(shù)據(jù)庫里。
存儲(chǔ)在集合中的文檔,被存儲(chǔ)為鍵-值對(duì)的形式。鍵用于唯一標(biāo)識(shí)一個(gè)文檔,為字符串類型,而值則可以是各中復(fù)雜的文件類型。我們稱這種存儲(chǔ)形式為BSON(Binary Serialized dOcument Format)。
MongoDB服務(wù)端可運(yùn)行在Linux、Windows或OS X平臺(tái),支持32位和64位應(yīng)用,默認(rèn)端口為27017。推薦運(yùn)行在64位平臺(tái),因?yàn)镸ongoDB在32位模式運(yùn)行時(shí)支持的最大文件尺寸為2GB。
MongoDB把數(shù)據(jù)存儲(chǔ)在文件中(默認(rèn)路徑為:/data/db),為提高效率使用內(nèi)存映射文件進(jìn)行管理。
=== 安裝、配置 ===
源碼包:wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz
1.解壓tar -zxvf mongodb-linux-i686-1.6.5.tgz
重命名mv mongodb-linux-i686-1.6.5.tgz mongodb
2.創(chuàng)建數(shù)據(jù)庫文件目錄,默認(rèn)為/data/db,我把數(shù)據(jù)庫文件目錄放在當(dāng)前文件夾下,mkdir -p data/mongodb,創(chuàng)建日志目錄mkdir log
3.啟動(dòng)服務(wù)
cd /usr/local/mongodb/bin
./mongod -dbpath=/data/mongodb -logpath=/var/log/mongodb.log
4.安裝完,進(jìn)行測(cè)試
[root@localhost bin]# ./mongo
MongoDB shell version: 1.6.5
connecting to: test
> db.foo.save({a:1})
> db.foo.find()
{ "_id" : ObjectId("4d292a457e289d5d90dc6f33"), "a" : 1 }
5.將mongoDB服務(wù)加入隨機(jī)啟動(dòng)
vi /etc/rc.local
使用vi編輯器打開配置文件,并在其中加入下面一行代碼
/usr/local/mongodb/bin/mongod -dbpath=/data/mongodb --port 27017
-logpath=/var/log/mongodb.log --logappend &
=== 主從同步 ===
1.建立數(shù)據(jù)庫目錄
mkdir /mongodb/masterdb
mkdir/mongodb/slavedb_1
mkdir/mongodb/slavedb_2
2.分別啟動(dòng)主從服務(wù)器
啟動(dòng)主服務(wù)器 監(jiān)聽10000端口
./bin/mongod-dbpath /mongodb/masterdb/--port 10000 --master
啟動(dòng)兩個(gè)從服務(wù)器 分別用10001 和 10002 端口 也可以使用 master master-> slave 的設(shè)置
./bin/mongod-dbpath /mongodb/slavedb_1--sourcelocalhost:10000 --slave --port 10001
./bin/mongod-dbpath /mongodb/slavedb_2--sourcelocalhost:10000 --slave --port 10002
#啟動(dòng)后 就會(huì)看到有日志 顯示 從主服務(wù)器復(fù)制內(nèi)容了
相關(guān)參數(shù):./mongod --help
--autoresync 當(dāng)發(fā)現(xiàn)從服務(wù)器的數(shù)據(jù)不是最新時(shí),開始從主服務(wù)器請(qǐng)求同步數(shù)據(jù)
--slavedelay 同步延遲,單位:秒
3.測(cè)試主從
a、在主服務(wù)器新建數(shù)據(jù)庫
./bin/mongo--port 10001
show dbs
#里面只有系統(tǒng)數(shù)據(jù)庫,同時(shí)如果做插入數(shù)據(jù)的操作 會(huì)提示 not master
use testdb
db.blog.save({title:"new article"})
b、在從服務(wù)器上查看同步數(shù)據(jù)
./bin/mongo--port 10001
MongoDB shell version: 1.6.0
connecting to: 127.0.0.1:10001/test
> show dbs
admin
local
testdb
> use testdb
switched to db testdb
> db.blog.find()
{ "_id": ObjectId("4c776ccce7af0727ce4b6234"), "title": "new article"} #此為同步過來的數(shù)據(jù),測(cè)試成功
=== 備份與恢復(fù) ===
mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb
將/tmp/backup 下面的文件導(dǎo)入數(shù)據(jù)庫:
mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/
mongodb提供了兩個(gè)命令來備份(mongodump )和恢復(fù)(mongorestore )數(shù)據(jù)庫。
1、備份數(shù)據(jù)庫
語法:mongodump -h IP -d 數(shù)據(jù)庫 -o 文件存在路徑
./mongodump -h 127.0.0.1 -d testdb -o /backup/mongobak/
connected to: 127.0.0.1:10000
DATABASE: testdb to /data/dump/testdb
testdb.blog to /data/dump/testdb/blog.bson
1 objects
testdb.system.indexes to /data/dump/testdb/system.indexes.bson
1 objects
出現(xiàn)此提示說明備份成功
2、恢復(fù)數(shù)據(jù)庫
語法:mongorestore -h 主機(jī) -d 目標(biāo)庫 -drop --directoryperdb 源文件
【注釋】--drop參數(shù),有此參數(shù),則表示,先刪除所有的記錄,然后恢復(fù)。如無此參數(shù),則恢復(fù)備份時(shí)候的數(shù)據(jù),備份之后新增加的數(shù)據(jù)依然存在;/backup/mongodb則是備份文件存放路徑
./mongorestore -h 127.0.0.1 --directoryperdb /data/dump
3.另外mongodb還提供了mongoexport 和 mongoimport 這兩個(gè)命令來導(dǎo)出或?qū)霐?shù)據(jù),導(dǎo)出的數(shù)據(jù)是json格式的。也可以實(shí)現(xiàn)備份和恢復(fù)的功能。
例:
mongoexport -d mixi_top_city_prod -c building_45 -q '{ "uid" : "10832545" }' > mongo_10832545.bson
mongoimport -d mixi_top_city -c building_45 --file mongo_10832545.bson