MongoDB副本集配置

三台机器配置

要求:一主两从一仲裁、异地机房节点不具备选举为Primary资格。

1、MongoDB安装

官网或者GitHub上下载压缩包,上传到服务器,并解压到/usr/local/下,命名为mongodb

 

2、在/app目录下创建mongodb目录,并根据安装的节点端口号创建/mongodb+端口号目录,例如创建/mongodb27017目录

 

3、在/app目录下创建db、conf、log三个目录,并在conf下创建文件mongodb+端口号.conf文件,文件配置如下

port=27017
dbpath=/app/mongodb/mongodb27017/db
logappend=true
fork=true
logpath=/app/mongodb/mongodb27017/log/mongpdb.log
replSet=my_repl

4、分别启动各节点mongod服务

/usr/local/mongodb/bin/mongod -f /app/mongodb/mongodb27017/conf/mongodb27017.conf

5、启动配置为主节点的客户端,配置副本集

> rs.initiate({ _id:"my_repl", members:[{_id:0,host:"192.168.10.1:27017"},{_id:1,host:"192.168.10.2:27017"},{_id:2,host:"10.10.10.1:27017"}] })

#添加仲裁节点,如需要可创建另一个节点作为仲裁节点

> rs.addArb("192.168.10.2:27018")

6、将北京节点的priority设置为0,使其无法被选举为primary节点

my_repl:PRIMARY> cfg = rs.conf()

my_repl:PRIMARY> cfg.members[2].priority=0

my_repl:PRIMARY> rs.reconfig(cfg)

7、测试副本集同步功能及故障自动转移

在主节点写入数据、手动关闭主节点等。略。

 

彩蛋:

在conf里指定directoryperdb为true时,每个数据库都会生成单独的文件夹。然而在rs.initiate()时会出现报错"has data already, cannot initiate set"。

我的操作是创建别的db目录,将conf文件中的directoryperdb去掉,以另外的db目录启动数据库,重新初始化副本集。

 

参考文档:

1、https://blog.csdn.net/qiaqia609/article/details/78900187 安装

2、https://www.cnblogs.com/clsn/p/8214345.html#auto_id_0 副本集介绍

3、https://www.cnblogs.com/phpandmysql/p/7763394.html  conf文件参数详解

 

posted @ 2018-11-05 21:01  洲渚皓月掩映  阅读(312)  评论(0编辑  收藏  举报