设置MongoDB副本集

时间:2012-09-19 15:24:18

标签: mongodb database

我有一台带有8Gb RAM的快速Windows 7 PC。我想为我的开发测试这个MongoDB副本集:http://www.mongodb.org/display/DOCS/Replica+Sets。我不想买3台电脑,因为它有点贵。有没有办法使用某种技术,如Hyper-V,才能设置它?如果没有,我应该买多少台电脑?我们应该买什么?

6 个答案:

答案 0 :(得分:8)

您可以在不同端口上的同一台计算机上运行多个mongod进程,并指向不同的数据目录,并使它们成为同一个replicaset的一部分。

http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo

mongod --dbpath c:/ data1 --port 12345 --replSet foo

mongod --dbpath c:/ data2 --port 12346 --replSet foo

然后使用mongo控制台连接到其中一个mongod进程,并使用此处列出的说明添加启动副本集:

http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

答案 1 :(得分:0)

你可以创建在diff上的同一台服务器上运行的多个mongod实例。端口。

配置和副本集的工作方式,请参阅下面的博客。这将根据同一个盒子上的指令设置副本集。

http://pareshbhav.blogspot.com/2014/12/mongdb-replicaset-and-streaming.html

答案 2 :(得分:0)

一种超级简单的方法是设置the MongoDB replica set by using Docker

在我们的Docker主机内,我们可以创建Docker Network,这将为我们提供跨容器的隔离DNS解析。然后,我们可以开始创建MongoDB docker容器。他们最初不会相互了解。但是,我们可以通过连接到容器之一并运行副本集初始化命令来初始化复制。最后,我们可以将应用程序容器部署在相同的docker网络下。

查看the MongoDB replica set by using Docker帖子,了解如何实现此功能。

答案 3 :(得分:0)

在同一单个主机上设置副本没有用,因为这与冗余和高可用性的条款相矛盾。如果您的PC出现故障或速度变慢,则副本集将被破坏或降级。但是,可以肯定的是,购买多台PC来评估副本集并不划算,因此可以考虑MongoDB Replica Set with Master-Slave Replication中所述的可能情况。

关于副本集成员的数量,很正确,最常见的拓扑由3个成员组成,但是我建议您还在单独的主机上添加一个仲裁器。这是一个轻量级的过程,不需要很多资源,但是在PRIMARY失败后,如果成员数是偶数的话,它在维持新PRIMARY选举的法定人数方面起着重要作用。

答案 4 :(得分:0)

在Ubuntu 18.04上,MongoDb:shell版本v4.2.6

在终端(1)中(由于我们使用的是0.0.0.0,因此请使用防火墙保护端口)

sudo systemctl stop mongod
sudo systemctl status mongod
sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb --replSet rs0 --bind_ip 0.0.0.0

然后打开终端(2)的另一个实例(保持上一个打开)

mongo -u yourUserName -p (it will ask for password - follow on)
rs.initiate()

然后打开另一个终端(3)实例 在这里,您将使用连接URL运行server.js,如下所示:

const url = 'mongodb://' + user + ':' + password + 
        '@localhost:27017/?replicaSet=rs0' 

MongoClient.connect(url, { useUnifiedTopology: true, authSource: 'admin' }, 
        function (err, client) {
                if (err) {
                    throw err;
                }
            });

答案 5 :(得分:0)

我们将为MongoDB副本集配置3个节点。

假设我们有3个节点,分别是:

  • 主机名 Mongodb01 ,IP地址 192.168.1.11 和MongoDB 安装了端口号 27017
  • 主机名 Mongodb02 ,IP地址 192.168.1.22 和安装了端口号 27017
  • 的MongoDB
  • 主机名 Mongodb03 ,IP地址 192.168.1.33 和MongoDB 安装的端口号为 27017

在开始此配置之前,请确保您具有以下几点:

  • MongoDB服务已在所有3个节点中安装并运行
  • 所有3个节点都通过IP地址或主机名相互连接
  • 默认端口27017和28017(或您计划使用的任何其他端口)未被任何防火墙或防病毒软件阻止

现在,让我们开始进行配置

步骤1:修改每个节点的mongodb.conf文件以包括副本集信息。

replSet = myCluster
rest = true

replSet是副本集的唯一名称,并且所有节点的replSet参数必须具有相同的值。 rest是可选的,但用于为管理网页启用休息界面。

步骤2:在所有3个节点上重新启动MongoDB服务

步骤3::在您打算用作主节点的节点上配置副本集。在我们的例子中,我们将在Mongodb01的mongo shell中执行以下命令

rs.initiate()

启动副本集

rs.add("<hostname or ip-address>:<port-no>")

在副本集中添加辅助节点。

例如rs.add("Mongodb02:27017")rs.add("192.168.1.22:27017")

rs.addArb("<hostname or ip-address>:<port-no>")

在副本集中添加仲裁节点。

例如rs.addArb("Mongodb03:27017")rs.add("192.168.1.33:27017")

rs.status()

检查是否所有节点都已添加到副本集中。检查副本中节点的其他方法是使用浏览器地址栏中http://<hostname or ip-address>:<port>/_replSet

中的URL

例如http://localhost:27017/_replSethttp://Mongodb01:27017/_replSethttp://192.168.1.11:27017/_replSet

仅当您在rest = true文件中设置mongodb.conf时,此URL才可访问