MongoDB是一个开源的non-SQL数据库引擎。 MongoDB是可扩展的,是标准关系数据库管理系统(RDBMS)的替代品。 副本集可以使在节点发生故障时还能提供对您的数据的访问。
安装MongoDB
1.确保在副本集的每个成员设置好hostname
nano /etc/hostname
/etc/hostname:
europa
2.创建一个文件以保存MongoDB存储库的配置信息:
sudo touch /etc/yum.repos.d/mongodb.repo
3.如果运行的是64位系统,请使用以下配置:
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1
对于32位系统,请使用以下配置:
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/ gpgcheck=0 enabled=1
4.使用如下命令安装MongoDB:
sudo yum install mongo-10gen-server
配置网络
请正确配置网络,否则将无法向副本集添加成员。 本节将详细介绍如何将三(3)个服务器配置为MongoDB副本集。
设置hosts文件
/etc/hosts
192.168.160.1 mongo1
192.168.170.1 mongo2
192.168.180.1 mongo3
使用您自己的IP地址代替上述示例中的地址。 副本集中的成员名称也可以根据你的需要设置名称。
编辑Mongo Conf文件
1.编辑mongod.conf文件以添加IP地址和端口号。
/etc/mongod.conf:
# fork and run in background fork = true bind_ip = 192.168.135.24 port = 27017
输入您在bind ip中服务器的私有IP地址。 如果bind_ip不存在,则需要添加它。 保留默认端口号27017,并取消注释行fork = true。
2.仍然在mongodb.conf文件中滚动到底部并添加副本集信息:
/etc/mongod.conf:
replSet = rs1
在此示例中,副本集为rs1,但是,您可以根据选择更改名称。
副本集
副本集将允许您的数据“复制”或传播到集合中的所有其他节点。 它在系统故障的情况下提供冗余。 建议副本集节点个数为奇数,因为这会使选举更容易。
选举是选择哪个节点成为主节点。 选举在副本集初始化之后和主节点不可用时发生。 主节点是唯一可以接受写操作的节点。 如果主节点不可用,则进行选举选出新的主节点。 选举操作自动进行,无需人工干预。
创建副本集
mongod.conf文件在安装过程中就创建好了。 需要用这个配置文件在副本集的每个节点上启动守护程序。
1.命令如下:
mongod --config /etc/mongod.conf
守护程序启动后,输出如下。
[user@europa mongo]# mongod –config /etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 20955
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
2.仅在副本集的一个节点上启动MongoDB客户端:
mongo --host <mongo0>
3.在MongoDB提示符下,使用命令切换到admin:
use admin
您应该看到消息switched to db admin.
4.运行rs.initiate()命令,该命令将在当前节点中创建副本集。 输出应类似于以下内容:
> rs.initiate() { “info2” : “no configuration explicitly specified — making one”, “me” : “192.168.160.1:27017”, “info” : “Config now saved locally. Should come online in about a minute.”, “ok” : 1
5.要查看当前配置,运行命令:
rs.conf()
输出应类似于以下内容:
rs.conf() { "_id" : "rs1", "version" : 8, "members" : [ { "_id" : 0, "host" : "192.168.160.1:27017" } ] }
6.要将成员添加到副本集,请使用命令:
rs.add("mongo1:27017")
输出:
rs1:PRIMARY> rs.add(“mongo2:27017”)
{ “ok” : 1 }
7.要验证节点是否已正确添加,请再次运行rs.conf()命令。 输出应类似于以下内容:
rs1:PRIMARY> rs.conf() { “_id” : “rs0”, “version” : 8, “members” : [ { “_id” : 0, “host” : “192.168.160.1:27017” }, { “_id” : 1, “host” : “mongo1:27017” }, { “_id” : 2, “host” : “mongo2:27017” } ] }
验证副本集
验证副本集是否正常并且节点都进行正常通信的最佳方法是创建新的测试数据库。 默认情况下,当您连接到MongoDB时,将使用现有的测试数据库。 为了保存新数据库,需要添加数据。 创建和插入数据的过程如下:
1.创建数据库
use <products>
用您喜欢的任何名称替换变量products。
2.添加数据
db.products.insert( {item: "paint", qty: 10 } )
如果您不在副本集的主节点上,您将收到消息not master。 切换到主节点并再次运行命令。 现在使用命令:
show dbs
显示数据库列表。 您的新应该出现在列表中。 连接到副本集的其他节点,查看新创建的数据库是否已复制过去。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我们目前正在M2集群上复制一个名为DatabaseA的数据库。我们正试图通过使用MongoDB Atlas每隔24小时将数据库克隆到一个名为DatabaseB的新数据库中来创建集群的备份。 我们已经研究了以下链接: https://docs.atlas.mongodb.com/api/ 但我们不知道如何实现这一点。 我们应该如何处理这个问题?
问题内容: 我实现了此处描述的副本构造函数。但是问题仍然是,当我更新时,会将相同的更新应用于。所以,我不明白我的代码有什么问题? 问题答案: 在复制构造函数中,您只是在进行浅表复制,而您需要进行深表复制: 在这里,您仍在复制的引用,该引用仍指向same 。您也应该对其进行修改以创建列表的副本。可能还需要像下面这样在arraylist中创建元素的副本:
问题内容: 我需要使用与完全相同的方法创建一个类。 用Java做到这一点的最佳方法是什么? 我知道我不能照原样扩展String类。我没有在寻找需要复制的源代码的解决方案。例如,假设我需要名为的自定义类中的功能,该类具有相应的’myLength()`方法。 实施的最佳方法是什么? 我不是在寻找各种算法来找出字符串的长度,而是在重用的方法。现在,一旦我准备好上课,就可以在任何地方进行自定义操作了。 问
我不确定我的问题是出在代码的深度复制部分,还是我在将元素添加到原始列表时犯了错误。到目前为止我所掌握的是: ...其中与此相关联的测试用例是:
MongoDB 中的集合是一组文档的组合,类似于关系型数据库(例如 MySQL)中的数据表。集合存在于数据库中,且没有固定的结构,您可以向集合中插入不同格式或类型的数据。 在 MongoDB 中,您可以使用 createCollection() 方法来创建集合,语法格式如下: db.createCollection(name, options) 参数说明如下: name: 要创建的集合名称; op
熊猫的常见操作是 但是,如何在SQL中执行此操作?是否有标准的功能或方法来执行