1. 下载安装mongoDB
首先我们需要在三台服务器上分别下载和安装mongoDB。
1.1. 打开服务器,创建目录
创建目录结构如下图所示:(日志文件会自动创建)(这里只创建myrs_27017目录及其子目录即可)
1.2. 下载mongoDB压缩包
把压缩包下载到指定目录(便于后期维护管理),然后解压。
相关命令参考菜鸟教程
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz # 下载
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz # 解压
mv mongodb-src-r4.2.8 /usr/local/mongodb4 # 将解压包拷贝到指定目录
1.3. 配置文件
把配置文件下载到指定目录(便于后期维护管理)。
配置文件内容如下:
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/root/mongoDB/myrs_27017/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
dbPath: "/root/mongoDB/myrs_27017/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/root/mongoDB/myrs_27017/log/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP
# 0.0.0.0 表示所有ip都能访问
bindIp: 0.0.0.0
#绑定的端口
port: 27017
replication:
#副本集的名称
replSetName: myrs
其他配置信息可参考官方文档。
2. 开启服务器端口和安全组
Centos7开放及查看端口
(PS:别忘了开安全组(有的云服务器运营商中也称之为防火墙)中的端口)
3. 启动mongoDB并且进行连接
3.1. 根据配置文件,启动三个mongoDB
如下图所示,分别进入三个服务器的
/root/mongoDB/mongodb-linux-x86_64-4.0.10/bin
目录,然后执行
./mongod -f /root/mongoDB/myrs_27017/mongod.conf
(上述mongodb-linux-x86_64-4.0.10为文件名,自行修改)
3.2. 进入mongoDB,将三个数据库进行绑定
任意进入一个服务器,执行(0.0.0.0替换为自己服务器的外网ip,该ip可以是其他服务器的,不过这里推荐使用当前服务器的外网ip)
./mongo --host=0.0.0.0 --port=27017
3.2.1. 初始化新的副本集
rs.initiate()
1)“ok”的值为1,说明创建成功。
2)命令行提示符发生变化,变成了一个从节点角色,此时默认不能读写。稍等片刻,回车,变成主节点。
3.2.2. 查看副本集的配置内容
说明:
返回包含当前副本集配置的文档。
rs.conf()
myrs:PRIMARY> rs.conf()
{
"_id" : "myrs",
"version" : 1,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "VM-4-16-centos:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
}