安装使用的是CentOS 7.2 64位系统,MongoDB使用的是Linux发行版本3.6 64位安装包
添加MongoDB的yum仓库
输入命令
vi /etc/yum.repos.d/mongodb-org-3.6.repo
配置如下数据源:
[mongodb-org-3.6]
name=MongoDB Repository
baseurl= http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
保存配置
安装MongoDB服务
输入命令
yum install mongodb-org
等待自动完成下载和安装
允许外网访问MongoDB服务
输入命令:
vi /etc/mongod.conf
将bindIP这行IP改为:0.0.0.0:
net:
port: 27017
bindIp: 0.0.0.0
保存配置文件
步骤4. 启动MongoDB服务
输入命令:
systemctl start mongod.service
连接MongoDB服务
输入命令:
mongo
既可连接成功
三台服务器,相同的安装
编辑每台服务器MongoDB的配置文件,yum安装的MongoDB默认配置文件为/etc/mongo.conf
输入命令:
vi /etc/mongo.conf
添加如下代码:
replication:
oplogSizeMB: 2048
replSetName: repl
以上配置分别配置在三台服务器上面,配置完成后,三台服务器执行如下命令:
sudo service mongod restart
登录任意一台服务器,初始化配置副本集:
rs.initiate({_id: 'repl', members: [
{_id: 0, host: 'IP:端口'},
{_id: 1, host: 'IP:端口'},
{_id: 2, host: 'IP:端口'}
]
})
开始测试
主库操作:
db.movies.insert([ { "title" : "Jaws", "year" : 1975, "imdb_rating" : 8.1 },
{ "title" : "Batman", "year" : 1989, "imdb_rating" : 7.6 },
] );
从库操作:
repl:SECONDARY> db.movies.find().pretty();
# 在mongodb复制集当中,默认从库不允许读写,所以报错
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
repl:SECONDARY> rs.slaveOk() # 开启从库查询操作
repl:SECONDARY> db.movies.find().pretty();
{
"_id" : ObjectId("5a1f928e31a2d09d5ef64651"),
"title" : "Batman",
"year" : 1989,
"imdb_rating" : 7.6
}
{
"_id" : ObjectId("5a1f928e31a2d09d5ef64650"),
"title" : "Jaws",
"year" : 1975,
"imdb_rating" : 8.1
}
查看整体复制集状态(主从节点均可操作),执行如下命令:
rs.status()
查看当前是否是主节点
rs.isMaster()
新增一个从节点
repl:PRIMARY> rs.add("IP:端口号")
删除一个节点
repl:PRIMARY> rs.remove("IP:端口号")