MongoDB集群安装

2018/7/4 posted in  MongoDB

安装使用的是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:端口号")