官方API:http://www.mongodb.org/pages/viewpage.action?pageId=6750283
主從同步:
1.建立數據庫目錄
mkdir
/mongodb/masterdb
mkdir
/mongodb/
slavedb_1
mkdir
/mongodb/
slavedb_2
2.分別啟動主從服務器
啟動主服務器監聽10000端口
.
/bin/mongod
-dbpath
/mongodb/masterdb/
--port 10000 --master
啟動兩個從服務器 分別用10001 和 10002 端口 也可以使用 master master-> slave 的設置
.
/bin/mongod
-dbpath
/mongodb/
slavedb_1
--
source
localhost:10000 --slave --port 10001
.
/bin/mongod
-dbpath
/mongodb/
slavedb_2
--
source
localhost:10000 --slave --port 10002
#啟動后 就會看到有日志 顯示從主服務器復制內容了
相關參數:./mongod --help
--autoresync 當發現從服務器的數據不是最新時,開始從主服務器請求同步數據
--slavedelay 同步延遲,單位:秒
3.測試主從
a、在主服務器新建數據庫
.
/bin/mongo
--port 10001
show dbs
#里面只有系統數據庫,同時如果做插入數據的操作 會提示 not master
use testdb
db.blog.save({title:
"new article"
})
b、在從服務器上查看同步數據
.
/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"
} #此為同步過來的數據,測試成功
備份與恢復:
mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb
將/tmp/backup 下面的文件導入數據庫:
mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/
mongodb提供了兩個命令來備份(mongodump )和恢復(mongorestore )數據庫。
1、備份數據庫
語法:mongodump -h host -d database -o dir_to_store_backup
mongodump -h 127.0.0.1 -d jtxm -o /home/backup/
出現此提示說明備份成功
2、恢復數據庫
語法:mongorestore -h 主機 -d 目標庫 -drop --directoryperdb 源文件
【注釋】--drop參數,有此參數,則表示,先刪除所有的記錄,然后恢復。如無此參數,則恢復備份時候的數據,備份之后新增加的數據依然存在;/backup/mongodb則是備份文件存放路徑
./mongorestore -h 127.0.0.1 --directoryperdb /data/dump
3.另外mongodb還提供了mongoexport 和 mongoimport 這兩個命令來導出或導入數據,導出的數據是json格式的。也可以實現備份和恢復的功能。
例:
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
公共參數:
--port arg 指定端口
-h arg 指定主機
-d arg 指定database
-c arg 指定collection
--dbpath arg 指定mongod的數據庫文件所在路徑
備份:
bsondump
命令用法:bsondump [options] <bson fileName>
特別參數:
--type arg 輸出文件的格式,arg= json,debug
在xp下不能用,沒測試
mongodump
命令用法:mongodump [options]
特別參數:
-o arg 輸出的"目錄",不指定時,默認在執行命令的路徑下創建dump目錄導出
-q arg json query,此處可通過json查詢,有選擇性的導出數據
說明:
1.與mongorestore構成一對工具集,即由Mongodump導出的數據可由mongrestore恢復
2.mongodump可用於“熱備份”
3.導出的數據是bson格式
性能:數據庫中1g的數據導出后變成285M,大概8秒
mongoexport
命令用法:mongoexport [options]
特別參數:
-q arg 查詢過濾器,json string
-f args 輸出的域,例如-f name,age,address
--csv 輸出csv,不寫此參數,默認為json
-o arg 輸出的文件,默認為stdout
說明:
1.可以導出json或csv格式的文件
2.可以指定查詢過濾器或指定輸出的域
3.此工具導出的json,csv可能對某些數據類型不兼容,因此可能不能全部數據導出,mongodump就可以全部兼容。
性能:1g數據,約1分40秒,導出大小為380M
恢復:
mongoimport
命令用法:mongoimport [options]
特別參數:
--file args 導入的文件,若無此參數,以stdin為標准
-f args 導入的數據域
--fieldFile arg 帶域名稱的文件
--ignoreBlanks 在csv,tsv文件中忽略空域
--type arg 導入文件的類型,默認為json,還可以為csv,tsv
--drop 插入前先刪除原collection
--upsert 插入或更新已存在的對象
--jsonArray 導入json array,目前每個array的限制是4M
--headerline 只能用於csv,tsv文件中,用第一行作為文件頭
說明:
接受json,csv,tsv格式的文件,每行為一個對象
{"somefield" : 123456, "created_at" : {"$date" : 1285679232000}}此格式可解析日期。
性能:導入1g數據,2分20秒,失敗33個對象
mongorestore
命令用法:mongorestore [options] [file or dir to restore]
特別參數:
--drop 導入前先drop collection
--objcheck 插入前檢測對象的合法性
--filter arg 插入前的過濾器
--indexesLast 插入完數據后再建立索引(此參數可提供更高的性能,建議選用)
說明:
1.與mongodump合用,在restore過程中,索引會重新創造
性能:1g數據,約6分鍾
小結:
備份方面:mongodump的速度和壓縮率都最好,每秒125M的數據,壓縮率達28%
恢復方面:
mongoimport速度較快,但不保證數據完整導入
mongorestore,速度較慢,比mongoimport慢2.5倍左右,但是根據mongodump導出的數據,可以完整導入數據。