MongoDB實戰系列之四:mongodb副本集部署

jopen 12年前發布 | 17K 次閱讀 MongoDB NoSQL數據庫

簡述:副本集合(Replica Sets),是一個基于主/從復制機制的復制功能,但增加了自動故障轉移和恢復特性。一個集群最多可以支持7個服務器,并且任意節點都可以是主節點。所有的寫操作都被分發到主節點,而讀操作可以在任何節點上進行。

環境:CentOS 5.5 x64

md01 10.0.0.11
md02 10.0.0.12
md03 10.0.0.14

把以上主機名對應IP 添加到hosts文件

方法一:設置優先級

啟動各節點:
md01

/elain /apps /mongodb /bin /mongod  --rest  --replSet elain /md01: 27017  --master --fork  --port  27017  --dbpath  /elain /data /mongodb /db /  --logpath /elain /logs /mongodb /mongodb.log

md02

/elain /apps /mongodb /bin /mongod  --rest  --replSet elain /md02: 27017  --fork  --port  27017  --dbpath  /elain /data /mongodb /db /  --logpath /elain /logs /mongodb /mongodb.log

md03

/elain /apps /mongodb /bin /mongod  --rest  --replSet elain /md03: 27017  --fork  --port  27017  --dbpath  /elain /data /mongodb /db /  --logpath /elain /logs /mongodb /mongodb.log

初始化節點:
md01:(登錄其中任何一個節點操作皆可)

mongo  --port  27017

>rs.initiate ( {
_id :  "elain",
members :  [
{_id :  1, host :  "md01:27017", priority: 2 },
{_id :  2, host :  "md02:27017", priority: 3 },
{_id :  3, host :  "md03:27017", priority: 4 },
]
} );


#priority 是設置優先級的,默認優先級為1,可以是1-1000的數字
注:通常在同一個交換機上,同一個網內,通常使用優先級來設置 副本集就已經足夠使用了

方法二:添加仲裁節點(這里設置在md02):

啟動各節點:
md01

/elain /apps /mongodb /bin /mongod  --rest  --replSet elain /md01: 27017  --fork  --port  27017  --dbpath  /elain /data /mongodb /db /  --logpath /elain /logs /mongodb /mongodb.log

md02

/elain /apps /mongodb /bin /mongod  --rest  --replSet elain /md02: 27017  --fork  --port  27017  --dbpath  /elain /data /mongodb /db /  --logpath /elain /logs /mongodb /mongodb.log

md03

/elain /apps /mongodb /bin /mongod  --rest  --replSet elain /md03: 27017  --fork  --port  27017  --dbpath  /elain /data /mongodb /db /  --logpath /elain /logs /mongodb /mongodb.log

#啟動仲裁節點
在md02上

mkdir  /elain /data /mongodb /arb
/elain /apps /mongodb /bin /mongod  --fork  --rest  --replSet elain  --dbpath /elain /data /mongodb /arb  --port  27015  --logpath /elain /logs /mongodb /mongodb.log

初始化節點:
md01:(登錄其中任何一個節點操作皆可)

> rs.initiate ( {
_id :  "elain",
members :  [
{_id :  1, host :  "md01:27017" },
{_id :  2, host :  "md02:27017" },
{_id :  3, host :  "md03:27017" },
{_id :  4, host :  "md02:27015""arbiterOnly"true },
]
} );

#驗證

PRIMARY >rs.status ( )

也可瀏覽:http://10.0.0.11:28017/_replSet 查看狀態

#設置從庫可讀(從庫上執行)

>rs.slaveOk ( );

查看副本集狀態

>rs.status ( )
>user  local;
>rs.isMaster ( )
>db.system.replset.find ( )

查看當前主庫:

>;db. $cmd.findOne ( {ismaster: 1 } );
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!