手动搭建MongoDB副本集

举报
Nosql_newbee 发表于 2018/03/17 16:28:14 2018/03/17
【摘要】 手动搭建MongoDB副本集

MongoDB作为分布式数据库,其支持复制功能,复制功能保证将数据的副本保存到多台服务器上。

在创建一个副本集之后就可以使用复制功能了。副本集是一组服务器,其中有一个主服务器(primary),用于处理客户端请求,还有多个备份服务器(secondary),用于保存主服务器的数据副本。如果主服务器崩溃了,备份服务器会自动将其中一个成员升级为新的主服务器。

本文介绍快速搭建三成员的副本集。

在mongodb官方网站上下载mongodb Windows版本,并安装。一般在产品级应用中,每个副本集成员单独在一个机器上。这里为了快速搭建,在同一台机器上起三个mongod进程,使用默认绑定的ip地址(127.0.0.1)。

本例子将mongodb安装在D:\MongoDB 目录下

1、首先创建三个目录存储数据,例如 D:\MongoDB\data\db, D:\MongoDB\data1\db, D:\MongoDB\data2\db

2、开启三个cmd窗口,分别启动三个服务器:

mongod.exe --port 27017 --dbpath "D:\MongoDB\data\db"  --logpath "D:\MongoDB\data\MongoDB.log" --replSet rs0 --logappend

image.png

按照此方法启动另外两个服务器:

mongod.exe --port 27018 --dbpath "D:\MongoDB\data1\db"  --logpath "D:\MongoDB\data1\MongoDB.log" --replSet rs0 --logappend

mongod.exe --port 27019 --dbpath "D:\MongoDB\data2\db"  --logpath "D:\MongoDB\data2\MongoDB.log" --replSet rs0 --logappend

其中,--port 指定端口 --replSet 指定副本集的名称,三个服务的进程的副本集名称要一致

3、链接其中一个服务器并初始化副本集

三个服务启动后,cmd窗口不要关闭,另开一个cmd窗口,链接到27017端口的服务器(连接其他的端口也可以):

use test

定义副本集的配置

rs.initiate({"_id":"rs0","members":[{"_id":0,host:"127.0.0.1:27017"},{"_id":1,host:"127.0.0.1:27018"},{"_id":2,host:"127.0.0.1:27019"}]})

_id 的值是副本集名称,成员分别是三个服务器


执行完成后通过 rs.status() 查看副本集状态,其中可以看出副本集的primary节点和连个secondary节点

image.png

到此,最简单的副本集就搭建完成了,接下来链接primary 节点就可以插入数据进行验证了

链接primary节点,并插入验证数据:

image.png

在primary节点插入数据成功后,可以在任意的secondary节点查看数据。由于主备节点数据复制存在时间差,MongoDB为了防止用户在secondary节点读入脏数据,默认情况下禁止从secondary节点读入数据,可以通过执行 setSlaveOk 命令来允许在secondary节点读入数据:

image.png

副本集的复制功能也验证完了。

接下来介绍如何添加或去掉副本集节点成员,通过配置文件启动服务,配置文件中常用项的介绍。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。