返回顶部
首页 > 资讯 > 数据库 >如何配置 MongoDB 副本集
  • 772
分享到

如何配置 MongoDB 副本集

2024-04-02 19:04:59 772人浏览 安东尼
摘要

mongoDB 已经成为市面上最知名的 NoSQL 数据库。MonGoDB是面向文档的,它的无模式设计使得它在各种各样的WEB 应用当中广受欢迎。最让我喜欢的特性之一是它的副本集(Replica Set),

mongoDB 已经成为市面上最知名的 NoSQL 数据库。MonGoDB是面向文档的,它的无模式设计使得它在各种各样的WEB 应用当中广受欢迎。最让我喜欢的特性之一是它的副本集(Replica Set),副本集将同一数据的多份拷贝放在一组 mongod 节点上,从而实现数据的冗余以及高可用性。

这篇教程将向你介绍如何配置一个 MongoDB 副本集。

副本集的最常见配置需要一个主节点以及多个副节点。这之后启动的复制行为会从这个主节点到其他副节点。副本集不止可以针对意外的硬件故障和停机事件对数据库提供保护,同时也因为提供了更多的节点从而提高了数据库客户端数据读取的吞吐量。

 

配置环境

这个教程里,我们会配置一个包括一个主节点以及两个副节点的副本集。

为了达到这个目的,我们使用了3个运行在 VirtualBox 上的虚拟机。我会在这些虚拟机上安装 ubuntu 14.04,并且安装 MongoDB 官方包。

我会在一个虚拟机实例上配置好所需的环境,然后将它克隆到其他的虚拟机实例上。因此,选择一个名为 master 的虚拟机,执行以下安装过程。

 

首先,我们需要给 apt 增加一个 MongoDB 密钥:

$ sudo apt-key adv--keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

然后,将官方的 MongoDB 仓库添加到 source.list 中:

$ sudo su

# echo "debHttp://repo.mongodb.org/apt/ubuntu "$(lsb_release-sc)"/mongodb-org/3.0 multiverse" | sudo tee/etc/apt/sources.list.d/mongodb-org-3.0.list

接下来更新 apt 仓库并且安装 MongoDB。

$ sudo apt-get update

$ sudo apt-get install -ymongodb-org

现在对 /etc/mongodb.conf 做一些更改

auth = true

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

keyFile=/var/lib/mongodb/keyFile

replSet=myReplica

 

第一行的作用是表明我们的数据库需要验证才可以使用。keyfile配置用于 MongoDB 节点间复制行为的密钥文件。replSet为副本集设置一个名称。

接下来我们创建一个用于所有实例的密钥文件。

$ echo -n"MyRandomStringForReplicaSet" | md5sum > keyFile

这将会创建一个含有 MD5 字符串的密钥文件,但是由于其中包含了一些噪音,我们需要对他们清理后才能正式在 MongoDB 中使用。

$ echo -n"MyReplicaSeTKEy" | md5sum|grep -o "[0-9a-z]\+" >keyFile

grep 命令的作用的是把将空格等我们不想要的内容过滤掉之后的 MD5 字符串打印出来。

现在我们对密钥文件进行一些操作,让它真正可用。

$ sudo cp keyFile/var/lib/mongodb

$ sudo chown mongodb:nogroupkeyFile

$ sudo chmod 400 keyFile

 

接下来,关闭此虚拟机。将其 Ubuntu 系统克隆到其他虚拟机上。

这是克隆后的副节点1和副节点2。确认你已经将它们的Mac地址重新初始化,并且克隆整个硬盘。

请注意,三个虚拟机示例需要在同一个网络中以便相互通讯。因此,我们需要它们弄到“互联网"上去。

这里推荐给每个虚拟机设置一个静态 IP 地址,而不是使用 DHCP。这样它们就不至于在 DHCP 分配IP地址给他们的时候失去连接。

像下面这样编辑每个虚拟机的 /etc/networks/interfaces文件。

在主节点上:

auto eth2

    iface eth2 inet static

    address 192.168.50.2

    netmask 255.255.255.0

在副节点1上:

auto eth2

    iface eth2 inet static

    address 192.168.50.3

    netmask 255.255.255.0

在副节点2上:

auto eth2

    iface eth2 inet static

    address 192.168.50.4

netmask 255.255.255.0

 

由于我们没有 DNS 服务,所以需要设置设置一下 /etc/hosts 这个文件,手工将主机名称放到此文件中。

在主节点上:

127.0.0.1 localhost primary

192.168.50.2 primary

192.168.50.3 secondary1

192.168.50.4 secondary2

在副节点1上:

127.0.0.1 localhostsecondary1

192.168.50.2 primary

192.168.50.3 secondary1

192.168.50.4 secondary2

在副节点2上:

127.0.0.1 localhostsecondary2

192.168.50.2 primary

192.168.50.3 secondary1

192.168.50.4 secondary2

使用 ping 命令检查各个节点之间的连接。

$ ping primary

$ ping secondary1

$ ping secondary2

 

配置副本集

验证各个节点可以正常连通后,我们就可以新建一个管理员用户,用于之后的副本集操作。

在主节点上,打开 /etc/mongodb.conf文件,将 auth 和 replSet 两项注释掉。

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

#auth = true

keyFile=/var/lib/mongodb/keyFile

#replSet=myReplica

 

在一个新安装的 MongoDB 上配置任何用户或副本集之前,你需要注释掉 auth 行。默认情况下,MongoDB 并没有创建任何用户。而如果在你创建用户前启用了 auth,你就不能够做任何事情。你可以在创建一个用户后再次启用 auth。

修改 /etc/mongodb.conf 之后,重启 mongod 进程。

$ sudo service mongod restart

现在连接到 MongoDB master:

$ mongo<master-ip-address>:27017

连接 MongoDB 后,新建管理员用户。

> use admin

> db.createUser({

user:"admin",

pwd:"

})

重启 MongoDB:

$ sudo service mongod restart

再次连接到 MongoDB,用以下命令将副节点1 和副节点2节点添加到我们的副本集中。

> use admin

>db.auth("admin","myreallyhardpassWord")

> rs.initiate()

> rs.add("secondary1:27017")

>rs.add("secondary2:27017")

 

现在副本集到手了,可以开始我们的项目了。参照 官方驱动文档 来了解如何连接到副本集。如果你想要用 shell 来请求数据,那么你需要连接到主节点上来插入或者请求数据,副节点不行。如果你执意要尝试用副本集操作,那么以下错误信息就蹦出来招呼你了。

myReplica:SECONDARY>

myReplica:SECONDARY> showdatabases

2015-05-10T03:09:24.131+0000E QUERY    Error: listDatabases failed:{"note" : "from execCommand", "ok" : 0,"errmsg" : "not master" }

    at Error ()

    at Mongo.getDBs(src/mongo/shell/mongo.js:47:15)

    at shellHelper.show(src/mongo/shell/utils.js:630:33)

at shellHelper(src/mongo/shell/utils.js:524:36)

at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

 

如果你要从 shell 连接到整个副本集,你可以安装如下命令。在副本集中的失败切换是自动的。

$ mongoprimary,secondary1,secondary2:27017/?replicaSet=myReplica

如果你使用其它驱动语言(例如,javascript、Ruby 等等),格式也许不同。

 

希望这篇教程能对你有所帮助。你可以使用Vagrant来自动完成你的本地环境配置,并且加速你的代码。

免费领取兄弟连IT教育原创云计算培训视频/细说linux教程,详情咨询官网客服:http://www.lampbrother.net/linux/或者勾搭Q2430675018~

欢迎加入linux交流群 478068715

 


您可能感兴趣的文档:

--结束END--

本文标题: 如何配置 MongoDB 副本集

本文链接: https://lsjlt.com/news/37459.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何配置 MongoDB 副本集
    MongoDB 已经成为市面上最知名的 NoSQL 数据库。MongoDB是面向文档的,它的无模式设计使得它在各种各样的WEB 应用当中广受欢迎。最让我喜欢的特性之一是它的副本集(Replica Set),...
    99+
    2024-04-02
  • 配置mongodb副本集
    主机信息:[root@my2 db]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 loca...
    99+
    2024-04-02
  • Linux下如何配置MongoDB副本集
    这篇文章给大家分享的是有关Linux下如何配置MongoDB副本集的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据...
    99+
    2023-06-27
  • MongoDB安装与副本集配置
    副本集是一组,由N个mongo节点组成并协同工作的,提供自动的故障集群转移。...
    99+
    2024-04-02
  • MongoDB中怎么配置副本集
    MongoDB中怎么配置副本集,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境准备三台服务器,地址分别是:192.168.248.128192.168.248.13519...
    99+
    2023-06-19
  • mongodb副本集
           其实mongodb也可以做主从机制,mongodb一主一从类似mysql,但是slave在架构中为只读,并且主机宕机后从不...
    99+
    2024-04-02
  • mongodb 副本集
    系统:centos6.5IP:10.19.21.244 主节点 10.19.21.245 备节点 10.19.21.248 仲裁点不只是主节点、副本节点、仲裁节点,还有Secondary-Only、Hidd...
    99+
    2024-04-02
  • mongodb如何更换副本集
    要更换MongoDB副本集,需要遵循以下步骤:1. 添加新副本集成员:首先,在新服务器上安装MongoDB,并确保它可以连接到现有的...
    99+
    2023-08-23
    mongodb
  • 【MongoDB学习笔记32】MongoDB修改副本集配置
    一、删除副本集成员spock:PRIMARY> rs.config()    {       &nb...
    99+
    2024-04-02
  • mongodb集群-副本集(CSRS)
    一、概述(1)MongoDB复制是将数据同步在多个服务器的过程。(2)复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。(3)复制还允许您从硬件故障和服务...
    99+
    2024-04-02
  • 如何进行MongoDB副本集搭建
    如何进行MongoDB副本集搭建,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们之前的案例都是在单个节点上实现的,在生产环境中这种做法是有风险的,如果服务宕机...
    99+
    2023-06-19
  • MongoDB Replica Set 副本集
    1、简介MongoDB复制是将数据同步在多个服务器的过程,类似MySQL Replication是一种异步复制;复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的...
    99+
    2024-04-02
  • mongodb 副本集搭建
    mongodb的副本集模式较早前的master-slave模式有了很大的改进,由于之前的master-slave模式不支持主机宕机之后切换到从机,已经逐渐被淘汰。而现在官方推荐的副本集模式,支持多个节点并存...
    99+
    2024-04-02
  • mongodb 副本集创建
    vi install_mongo.shtar -zxvf mongodb-linux-x86_64-rhel62-3.2.9.tgzmv mongodb-linux-x86_64-rhel62-3.2.9 ...
    99+
    2024-04-02
  • mongodb副本集维护
    一、概述mongodb副本集维护主要工作:1、查看副本集状态(集群状态、同步延迟、单个库的运行状态mongostate)2、增删节点、停节点shutdownmongodb副本集集群同步机制数据复制的目的是使...
    99+
    2024-04-02
  • mongo副本集集群安装配置
    新建用户和目录 useradd mongodb mkdir  -p /comm/mg10000/data mkdir  -p /comm/mg10001/data mkdir...
    99+
    2024-04-02
  • 如何为MongoDB添加分片副本集
    目录01 新建副本集02 副本集添加到已有的集群中(addShard)03 添加分片时间标签(addShardTag)04 给打好的标签添加具体的数值范围(addTagRange)0...
    99+
    2024-04-02
  • MongoDB如何删除添加副本集并修改副本集IP等信息
    本篇文章为大家展示了MongoDB如何删除添加副本集并修改副本集IP等信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB 删除,添加副本集,并修改副本...
    99+
    2024-04-02
  • 3.5-MongoDB副本集测试
    *MongoDB副本集测试主上建库,建集合>use mydb   #建库>db.acc.insert({AccountID:1,UserName:"123",password:"123...
    99+
    2024-04-02
  • mongoDB副本集的搭建
    环境简介    192.168.1.151      FedoraServer   用作副本集的主库,已经有数据    192...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作