关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » .NET »如何配置 MongoDB 副本集

    如何配置 MongoDB 副本集

    2015-08-29 00:00:00 出处:oschina
    分享

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

    怎样配置 MongoDB 副本集

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

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

    配置环境

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

    怎样配置 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 "deb http://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 -y mongodb-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:nogroup keyFile
    $ sudo chmod 400 keyFile

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

    怎样配置 MongoDB 副本集

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

    怎样配置 MongoDB 副本集

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

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

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

    在主节点上:

    auto eth1
        iface eth1 inet static
        address 192.168.50.2
        netmask 255.255.255.0

    在副节点1上:

    auto eth1
        iface eth1 inet static
        address 192.168.50.3
        netmask 255.255.255.0

    在副节点2上:

    auto eth1
        iface eth1 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 localhost secondary1
    192.168.50.2 primary
    192.168.50.3 secondary1
    192.168.50.4 secondary2

    在副节点2上:

    127.0.0.1 localhost secondary2
    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> show databases
    2015-05-10T03:09:24.131+0000 E 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 连接到整个副本集,你可以安装如下命令。在副本集中的失败切换是自动的。

    $ mongo primary,secondary1,secondary2:27017/ replicaSet=myReplica

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

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

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。