MongoDB Replica Set 安裝SOP 3.2.4版
OS = RHEL 6.2
(請在三台Primary ,Secondary1 ,Secondary2機器上面安裝)
1. vim /etc/yum.repos.d/mongodb-org-3.2.repo
add
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6Server/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1
2. vim /etc/hosts
54.239.130.9 repo.mongodb.org
3. sudo yum install -y mongodb-org-3.2.4 mongodb-org-server-3.2.4 mongodb-org-shell-3.2.4 mongodb-org-mongos-3.2.4 mongodb-org-tools-3.2.4
4. mongo (進入mongodb) 即可
==========================================================
設定 MongoDB Replica
1.先到在Primary 那台
輸入mongo 進入資料庫
接著
輸入use admin
貼上
db.createUser( {
user: "mongoAdmin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
});
貼上
db.createUser( {
user: "mongoRootAdmin",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
});
輸入use social
貼上
db.createUser( {
user: "mongoUser",
pwd: "password",
roles: [ { role: "dbOwner", db: "social" } ]
});
輸入 exit 離開
-----------------------------------------------
2.建立資料安全性 (Key)
請在Primary機器
輸入 openssl rand -base64 741 > /var/lib/mongo/mongodb-keyfile (產生金鑰)
輸入 chmod 600 /var/lib/mongo/mongodb-keyfile
輸入 chown mongodb.mongodb /var/lib/mongo/mongodb-keyfile
記得要把 剛剛產生的 mongodb-keyfile 放到 Secondary1 ,Secondary2這兩台
3.連線到Secondary1 (複製金鑰)
輸入 scp -p -r root@primary(hostname or IP):/var/lib/mongo/mongodb-keyfile /var/lib/mongo/
輸入 chown mongodb.mongodb /var/lib/mongo/mongodb-keyfile
4.連線到Secondary2 (複製金鑰)
輸入 scp -p -r root@primary(hostname or IP):/var/lib/mongo/mongodb-keyfile /var/lib/mongo/
輸入 chown mongodb.mongodb /var/lib/mongo/mongodb-keyfile
5.回到 primary
輸入 vim /etc/mongod.conf
新增下面四行
security:
keyFile: /var/lib/mongo/mongodb-keyfile
replication:
replSetName: rs0
輸入:wq! 離開
輸入service mongod restart (重啟服務)
6.連線到Secondary1
輸入 vim /etc/mongod.conf
新增下面四行
security:
keyFile: /var/lib/mongo/mongodb-keyfile
replication:
replSetName: rs0
輸入:wq! 離開
輸入service mongod restart (重啟服務)
7.連線到Secondary2
輸入 vim /etc/mongod.conf
新增下面四行
security:
keyFile: /var/lib/mongo/mongodb-keyfile
replication:
replSetName: rs0
輸入wq! 離開
輸入service mongod restart (重啟服務)
8.連線到Primary
輸入mongo
輸入use admin
輸入 db.auth("mongoRootAdmin","password")
回傳1 表示正常
-----------------------------------------------
接著輸入
rs.initiate()
輸入
rs.conf()
畫面類似如下
> rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "mongodb324prim:27017",
"ok" : 1
}
rs0:OTHER> rs.conf()
{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "mongodb324prim:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("56f3ae3562814f2e49aa3b38")
}
}
-----------------------------------------------
輸入rs.add("secondary1(hostname):27017") (新增secondary1機器)
輸入rs.add("secondary2(hostname):27017") (新增secondary2機器)
輸入rs.status() 查看狀態
畫面類似如下
rs0:PRIMARY> rs.add("mongodb324sec1:27017")
{ "ok" : 1 }
rs0:PRIMARY> rs.add("mongodb324sec2:27017")
{ "ok" : 1 }
rs0:PRIMARY> rs.conf()
{
"_id" : "rs0",
"version" : 3,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "mongodb324prim:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb324sec1:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb324sec2:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("56f3ae3562814f2e49aa3b38")
}
}
rs0:PRIMARY> exit
bye
這樣就完成了設定囉 ~~