版权声明:转载请注明出处! https://blog.csdn.net/ywd1992/article/details/81946975
一、基础环境
(1)操作系统:CentOS 7.3
(2)MongoDB:3.6.5 链接:https://pan.baidu.com/s/14_F9PUycakX5tt6kQ2hqDw 密码:udc0
二、安装MongoDB
(1)解压安装
tar -xvf mongodb-linux-x86_64-rhel70-3.6.5.tgz
mv mongodb-linux-x86_64-rhel70-3.6.5 /usr/local/mongodb
(2)创建数据库目录及日志目录
mkdir /usr/local/mongodb/dbs
touch /usr/local/mongodb/logs
(3)创建mongodb配置文件并启动mongodb
touch /usr/local/mongodb/bin/mongod.conf
# 数据库文件位置
dbpath=/usr/local/mongodb/dbs
# 数据库日志位置
logpath=/usr/local/mongodb/logs
# 进程文件
pidfilepath=/usr/local/mongodb/mongodb.pid
# 是否以守护进程方式启动
fork=true
# 错误日志采用追加模式
logappend=true
# 端口号
port=27017
# 绑定地址,本机地址
bind_ip=192.168.0.101
添加权限,启动数据库
chmod 777 /usr/local/mongodb/bin/mongod.conf
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongod.conf
可通过如下命令登录mongodb数据库
/usr/local/mongodb/bin/mongo IP:27017
(4)配置开机自启
chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local
添加以下配置
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongod.conf
三、配置副本集
(1)设置复制集集群名称
开启复制集并为复制集设置名称,需要在所有节点添加
vim /usr/local/mongodb/bin/mongod.conf
#replication:
replSet=GRIDSUM #复制集名称
(2)主节点登录Mongo进行配置
/usr/local/mongodb/bin/mongo 10.201.82.18:27017 #登录
config = {_id : "GRIDSUM",members : [{_id : 0, host : "10.201.82.18:27017"},{_id : 1, host : "10.201.82.19:27017" },{_id : 2, host : "10.201.82.21:27017" , arbiterOnly: true}]}
其中,“GRIDSUM”为复制集集群,将三台机器加入复制集集群,“arbiterOnly: true”为指定此台机器所在节点为仲裁节点,不接收数据,回车之后看到如下提示
{
"_id" : "GRIDSUM",
"members" : [
{
"_id" : 0,
"host" : "10.201.82.18:27017"
},
{
"_id" : 1,
"host" : "10.201.82.19:27017"
},
{
"_id" : 2,
"host" : "10.201.82.21:27017",
"arbiterOnly" : true
}
]
}
运行rs.initiate(config);命令看到如下提示,说明配置成功
{
"ok" : 1,
"operationTime" : Timestamp(1534388033, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1534388033, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
通过rs.status();查看复制集的状态,可以看出哪个是主节点,哪个是从节点,哪个是仲裁节点
{
"set" : "GRIDSUM",
"date" : ISODate("2018-08-16T03:03:27.337Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "10.201.82.18:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 756,
"optime" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-08-16T03:03:25Z"),
"electionTime" : Timestamp(1534388044, 1),
"electionDate" : ISODate("2018-08-16T02:54:04Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "10.201.82.19:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 573,
"optime" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1534388605, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-08-16T03:03:25Z"),
"optimeDurableDate" : ISODate("2018-08-16T03:03:25Z"),
"lastHeartbeat" : ISODate("2018-08-16T03:03:26.562Z"),
"lastHeartbeatRecv" : ISODate("2018-08-16T03:03:26.914Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "10.201.82.18:27017",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "10.201.82.21:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 573,
"lastHeartbeat" : ISODate("2018-08-16T03:03:26.592Z"),
"lastHeartbeatRecv" : ISODate("2018-08-16T03:03:26.001Z"),
"pingMs" : NumberLong(2),
"configVersion" : 1
}
],
"ok" : 1,
"operationTime" : Timestamp(1534388605, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1534388605, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}