一、下载TGZ包
Replica Set是mongod的实例集合,它们有着同样的数据内容。包含三类角色:
(1)主节点(Primary) 接收所有的写请求,只能有一个Primary节点
(2)副本节点
(3)仲裁者(Arbiter) 不保有数据,不参与选主,只进行选主投票。
参考文档:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
下载mongodb安装程序
下载地址:https://www.mongodb.com/download-center/community
我下载的这个版本:mongodb-linux-x86_64-3.4.24.tgz
[root@localhost ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.24.tgz
二、新建mongodb目录
[root@localhost ~]# mkdir -p /data/mongodb
三、拷贝、解压程序包
[root@localhost ~]# mkdir -p /data/mongodb/app
[root@localhost ~]# cd /data/mongodb/app
[root@localhost app]# mv ~/mongodb-linux-x86_64-3.4.24.tgz .
[root@localhost app]# tar -zxvf mongodb-linux-x86_64-3.4.24.tgz
[root@localhost app]# mv mongodb-linux-x86_64-3.4.24 mongodb
四、生成秘钥文件
[root@localhost app]# cd /data/mongodb/app/mongodb
[root@localhost mongodb]# mkdir keyfile
[root@localhost mongodb]# openssl rand -base64 756 > ./keyfile/mongo.key
[root@localhost mongodb]# chmod 400 ./keyfile/mongo.key
五、创建日志目录
[root@localhost mongodb]# mkdir -p /data/mongodb/app/mongodb/log
六、创建数据目录
[root@localhost mongodb]# mkdir -p /data/mongodb/data/mongodb/master
[root@localhost mongodb]# mkdir -p /data/mongodb/data/mongodb/slave
[root@localhost mongodb]# mkdir -p /data/mongodb/data/mongodb/arbiter
七、创建配置文件目录、并手动生成配置文件
[root@localhost mongodb]# mkdir -p /data/mongodb/app/mongodb/conf/
[root@localhost mongodb]# cd conf/
[root@localhost conf]# vi arbiter.conf
#arbiter.conf
dbpath=/data/mongodb/data/mongodb/arbiter
logpath=/data/mongodb/app/mongodb/log/arbiter.log
pidfilepath=/data/mongodb/app/mongodb/arbiter.pid
#keyFile=/usr/cwgis/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.10.140
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
[root@localhost conf]# vi master.conf
#master.conf
dbpath=/data/mongodb/data/mongodb/master
logpath=/data/mongodb/app/mongodb/log/master.log
pidfilepath=/data/mongodb/app/mongodb/master.pid
#keyFile=/data/mongodb/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.10.140
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
[root@localhost conf]# vi slave.conf
#slave.conf
dbpath=/data/mongodb/data/mongodb/slave
logpath=/data/mongodb/app/mongodb/log/slave.log
pidfilepath=/data/mongodb/app/mongodb/slave.pid
#keyFile=/data/mongodb/app/mongodb/keyfile/mongo.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=192.168.10.140
port=27018
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000
#查看配置文件
[root@localhost conf]# ll
总用量 12
-rw-r--r-- 1 root root 356 3月 31 11:26 arbiter.conf
-rw-r--r-- 1 root root 355 3月 31 11:26 master.conf
-rw-r--r-- 1 root root 352 3月 31 11:27 slave.conf
八、启动mongodb
[root@localhost conf]# cd /data/mongodb/app/mongodb/bin/
[root@localhost bin]# ./mongod -f /data/mongodb/app/mongodb/conf/master.conf
[root@localhost bin]# ./mongod -f /data/mongodb/app/mongodb/conf/slave.conf
[root@localhost bin]# ./mongod -f /data/mongodb/app/mongodb/conf/arbiter.conf
[root@localhost bin]# ss -tunlp|grep 270
tcp LISTEN 0 128 192.168.10.140:27017 *:* users:(("mongod",pid=17368,fd=8))
tcp LISTEN 0 128 192.168.10.140:27018 *:* users:(("mongod",pid=17395,fd=8))
tcp LISTEN 0 128 192.168.10.140:27019 *:* users:(("mongod",pid=17422,fd=8))
九、在浏览器输入http://ip地址:27017
如果服务启动成功会看到以下一段话:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
十、配置集群
10.1 进入主节点
[root@localhost bin]# cd /data/mongodb/app/mongodb/bin/
[root@localhost bin]# ./mongo --port 27017 --host 192.168.10.140
10.2 在主节点上配置集群
#rs.initiate()处理配置
rsconf = {
_id: "testdb",
members: [
{
_id: 0,
host: "192.168.10.140:27017"
},
{
_id: 1,
host: "192.168.10.140:27018"
},
{
_id: 2,
host: "192.168.10.140:27019"
}
]
}
#执行如下命令
> rs.initiate( rsconf )
#显示副本集
testdb:PRIMARY> rs.conf()
#查看集群状态
testdb:PRIMARY> rs.status()
十一、常见命令
rs.initiate()
rs.conf()
rs.reconfig()
rs.add()
十二、使用正确的姿势连接复制集
MongoDB复制集里Primary节点是不固定的,当遇到复制集轮转升级、Primary宕机、网络分区等场景时,复制集可能会选举出一个新的Primary,而原来的Primary则会降级为Secondary,即发生主备切换。
使用以下方式进行连接复制集:
https://docs.mongodb.com/manual/reference/connection-string/
mongodb://192.168.10.140:27017,192.168.10.140:27018/?connectTimeoutMS=300000&replicaSet=testdb
配置文件参考:
data:
mongodb:
uri: mongodb://192.168.20.81:27017,192.168.20.81:27018/dataqulity?slaveOk=true&replicaSet=testdb&write=1&readPreference=secondaryPreferred&connectTimeoutMS=300000
留言