溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mongodb 副本搭建(一主兩備)

發(fā)布時間:2020-06-27 18:07:32 來源:網(wǎng)絡(luò) 閱讀:757 作者:304076020 欄目:MongoDB數(shù)據(jù)庫

mongodb 副本搭建(一主兩備)

主:192.168.0.237

備1:192.168.0.122

備2:192.168.0.123

三臺機器同樣操作

tar zxf mongodb-linux-i686-1.8.1.tgz

mv mongodb-linux-i686-1.8.1 /usr/local/mongodb

cd /usr/local/mongodb/

mkdir etc

mkdir logs

cd logs/

touch mongodb.log

cd ..

cd etc/

vi mongodb.cnf

加入

dbpath=/data/cc

mkdir /data/cc

/usr/local/mongodb/bin/mongod --dbpath=/data/cc --logpath=/usr/local/mongodb/logs/mongodb.log -f /usr/local/mongodb/etc/mongodb.cnf --replSet repset --fork

全部安裝并啟動成功

在三臺機器上任意一臺機器登陸mongodb

/usr/local/mongodb/bin/mongo


#使用admin數(shù)據(jù)庫

use admin

#定義副本集配置變量,這里的 _id:”repset” 和上面命令參數(shù)“ –replSet repset” 要保持一樣。

config = { _id:"repset", members:[

... {_id:0,host:"192.168.0.122:27017"},

... {_id:1,host:"192.168.0.123:27017"},

... {_id:2,host:"192.168.0.237:27017"}]

... }

#輸出

{

       "_id" : "repset",

       "members" : [

               {

                       "_id" : 0,

                       "host" : "192.168.0.122:27017"

               },

               {

                       "_id" : 1,

                       "host" : "192.168.0.123:27017"

               },

               {

                       "_id" : 2,

                       "host" : "192.168.0.237:27017"

               }

       ]

}


#初始化副本集配置

rs.initiate(config);

#輸出成功


1

{

       "info" : "Config now saved locally.  Should come online in about a minute.",

       "ok" : 1

}


#查看集群節(jié)點的狀態(tài)

rs.status();

#輸出


{

       "set" : "repset",

       "date" : ISODate("2014-05-05T10:51:50Z"),

       "myState" : 2,

       "members" : [

               {

                       "_id" : 0,

                       "name" : "192.168.0.122:27017",

                       "health" : 1,

                       "state" : 2,

                       "stateStr" : "SECONDARY",

                       "optime" : {

                               "t" : 1399286403000,

                               "i" : 1

                       },

                       "optimeDate" : ISODate("2014-05-05T10:40:03Z"),

                       "self" : true

               },

               {

                       "_id" : 1,

                       "name" : "192.168.0.123:27017",

                       "health" : 1,

                       "state" : 2,

                       "stateStr" : "SECONDARY",

                       "uptime" : 920,

                       "optime" : {

                               "t" : 1399286403000,

                               "i" : 1

                       },

                       "optimeDate" : ISODate("2014-05-05T10:40:03Z"),

                       "lastHeartbeat" : ISODate("2014-05-05T10:51:48Z")

               },

               {

                       "_id" : 2,

                       "name" : "192.168.0.237:27017",

                       "health" : 1,

                       "state" : 1,

                       "stateStr" : "PRIMARY",

                       "uptime" : 920,

                       "optime" : {

                               "t" : 1399286403000,

                               "i" : 1

                       },

                       "optimeDate" : ISODate("2014-05-05T10:40:03Z"),

                       "lastHeartbeat" : ISODate("2014-05-05T10:51:48Z")

               }

       ],

       "ok" : 1

}

整個副本集已經(jīng)搭建成功了。


6、測試副本集數(shù)據(jù)復(fù)制功能


#在主節(jié)點192.168.0.237 上連接到終端:

mongo 127.0.0.1


#建立test 數(shù)據(jù)庫。

use test;


往testdb表插入數(shù)據(jù)。

> db.testdb.insert({"test1":"testval1"})


#在副本節(jié)點 192.168.0.122、192.168.0.123 上連接到mongodb查看數(shù)據(jù)是否復(fù)制過來。

/usr/local/mongodb/bin/mongo 192.168.0.122:27017


#使用test 數(shù)據(jù)庫。

repset:SECONDARY> use test;


repset:SECONDARY> show tables;

#輸出

Sun Dec 29 21:50:48.590 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:128

這是正常的,因為SECONDARY是不允許讀寫的,如果非要解決,方法如下:


repset:SECONDARY> rs.slaveOk();或者

repset:SECONDARY> db.getMongo().setSlaveOk();

可以看到數(shù)據(jù)已經(jīng)復(fù)制到了副本集。

repset:SECONDARY> db.testdb.find();


#輸出

{ "_id" : ObjectId("52c028460c7505626a93944f"), "test1" : "testval1" }




此方法出現(xiàn)故障需手動指定mongodb ip


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI