[MongoDB] 安装MongoDB配置Replica Set

url:http://blog.csdn.net/hf81970/article/details/19643639

MongoDB的环境主要包括StandAlone,Replication和Sharding。

  • StandAlone:单机环境,一般开发测试的时候用。
  • Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry。
    • Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似。
    • Arbitry上面不存数据,只是为了凑数。选举算法要求节点数必须是奇数个,如果Primary+Secondary不是奇数个,就要用Arbitry凑数。
    • 写数据只能在Primary,读数据默认也在Primary,可以配置成从Secondary读,可以选最近的节点。
    • 数据在Primary上写成功之后,会将操作记录在oplog中,Secondary将oplog拷贝过去,然后照着操作一遍,就有数据了。
    • Primary和Secondary上面的数据保证最终一致性,可以为写操作配置write concern,有几个级别:在Primary上写完就认为写成功;写到oplog后认为写成功;写到一个/多个/某个/某几个Secondary之后认为写成功,等等。
  • Sharding:share nothing的结构,每台机器只存一部分数据。mongod服务器存数据,mongos服务器负责路由读写请求,元数据存在config数据库中。

因为数据量和机器量的原因,项目最终用了一个Primary,一个Secondary,一个Arbitry。我自己的开发环境是Ubuntu,测试环境是CentOS。安装的是64位的MongoDB。

Ubuntu上的安装

sudo apt-get install mongodb-10gen

CentOS上的安装

配置yum源,创建文件:/etc/yum.repos.d/mongodb.repo

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

安装命令:

yum install mongo-10gen mongo-10gen-server

配置

每台机器上面的配置文件/etc/mongod.conf修改成下面的:

#数据库文件所在位置(默认)
dbpath=/var/lib/mongo
#日志所在位置(默认)
logpath=/var/log/mongo/mongod.log
#pid所在位置(默认)
pidfilepath = /var/run/mongodb/mongod.pid
#keyFile所在位置,生成方式在后面(添加)
keyFile=/var/lib/mongo/key

#端口(默认)
port=27017

#每次启动后日志追加在后面,不会新建日志文件(默认)
logappend=true
#用deamon方式启动(添加)
fork=true
#打开操作日志,用于故障恢复和持久化(默认)
journal=true

#replica set的名字(添加)
replSet=test-set

在每台机器上运行:

sudo mongod -f /etc/mongod.conf

我的环境里面,Primary ip: 192.168.1.1,Secondary ip: 192.168.1.2,Arbitary ip: 192.168.1.3。在单机上可以将多个mongodb设置成不同端口,我测试了一下也是可以的。

在Primary上运行“mongo”,打开命令行,设置Replica Set:

rs.initiate(
    {"_id" : "test-set",
     "members" : [
        {"_id" : 1, "host" : "192.168.1.1"},
        {"_id" : 2, "host" : "192.168.1.2"},
        {"_id" : 3, "host" : "192.168.1.3", "arbiterOnly" : true}
    ]
});

{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}

历史成功后需要等一段时间,他会选举Primary,然后查看Replica Set的状态:

test-set:PRIMARY> rs.status()
{
        "set" : "test-set",
        "date" : ISODate("2014-02-21T10:28:55Z"),
        "myState" : 7,
        "members" : [
                {
                        "_id" : 1,
                        "name" : "192.168.1.1:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 4086,
                        "optime" : Timestamp(1392972480, 1),
                        "optimeDate" : ISODate("2014-02-21T08:48:00Z"),
                        "lastHeartbeat" : ISODate("2014-02-21T10:28:54Z"),
                        "lastHeartbeatRecv" : ISODate("2014-02-21T10:28:53Z"),
                        "pingMs" : 0
                },
                {
                        "_id" : 2,
                        "name" : "192.168.1.2:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 3997,
                        "optime" : Timestamp(1392972480, 1),
                        "optimeDate" : ISODate("2014-02-21T08:48:00Z"),
                        "lastHeartbeat" : ISODate("2014-02-21T10:28:54Z"),
                        "lastHeartbeatRecv" : ISODate("2014-02-21T10:28:55Z"),
                        "pingMs" : 0,
                        "syncingTo" : "192.168.131.15:27017"
                },
                {
                        "_id" : 3,
                        "name" : "192.168.1.3:27017",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 5781,
                        "self" : true
                }
        ],
        "ok" : 1
}

这样整个replica set就配置成功了,还是比较简单的。

KeyFile的设置

KeyFile是机器间用来进行权限认证的,如果没有设置KeyFile,在rs.initiate()的时候,会提示有其他机器没有ready,大概这个意思记不清了,反正有个error...

网上搜了一下这个错误,很多解释都是说,服务器异常关闭或者mongodb异常退出的时候,会留下一个锁文件"/var/lib/mongo/mongo.lock",需要把这个锁文件删除之后重启mongodb。我试了一下这个方法对我无效。

查看了一台机器上的log文件,发现里面说,有其他机器给他发送消息,但是需要在每台机器上配置key file。大概是这个意思,忘记截图了。

创建Key File用下面的语句:

openssl rand -base64 741

产生的字符串存到一个文本文件中,然后把这个文件的权限chmod成600(如果权限过高不行,log里面会告诉你权限过高),然后在配置里面加上“keyFile=keyfile的路径”,重启mongodb就行了。

NUMA的问题

测试机的CPU是NUMA的,于是在运行mongod的时候命令行和log里面会有下面的提示:

WARNING: You are running on a NUMA machine.
We suggest launching mongod like this to avoid performance problems:
numactl –-interleave=all mongod [other options]

于是要把启动命令改成:

sudo numactl --interleave=all mongod -f /etc/mongod.conf

[MongoDB] 安装MongoDB配置Replica Set,布布扣,bubuko.com

时间: 2024-12-26 08:00:58

[MongoDB] 安装MongoDB配置Replica Set的相关文章

mongodb安装和配置

1. mongodb安装 先下载mongodb,官网地址; http://www.mongodb.org/downloads curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz 解压缩 tar -zxvf mongodb-linux-x86_64-2.6.1.tgz 新建目录 mkdir -p mongodb cp -R -n mongodb-linux-x86_64-2.6.1/ mongodb 2

MongoDB 安装与配置--Win10

MongoDB 安装与配置--Win10 2017年12月31日 17:17:39 阅读数:2403 1. 下载 下载链接:https://www.mongodb.com/download-center?jmp=nav#community 1 2. 安装 按提示安装即可 1. Complete:完整安装 2. Custom:自定义安装,可选择安装路径和安装组件 1 2 3 3. 配置 1. 安装完的目录结构 [C:\Program Files\MongoDB\Server\3.6] 1 2. 在

window下mongodb安装和配置

mongodb安装和配置 1.下载:https://www.mongodb.com 2.解压到盘的根目录下,本人解压到D盘根目录 3.在软件根目录下新建一个文件夹data 4.再新建两个文件夹db.logs,在logs下再新建log1.log 5.打开mangodb: 第一种方法 在bin目录下,按住shift键,右击鼠标,点击运行cmd输入:mongod --dbpath D:\mongodb\data\db在浏览器输入:localhost:27017 注意:服务端口默认开启27017端口 第

MONGODB安装与配置

1.下载mongodb,下载地址为:http://pan.baidu.com/s/1qXVvIDA 2.安装mongodb,一路默认配置即可 2.在C盘根目录下建立目录data/db 3.启动mongodb服务,进入安装目录,启动mongod.exe 4.新启动终端,运行mongo.exe, 连接成功!

【一】MongoDB安装及配置

一.MongoDB安装 1.下载并解压 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz tar zxvf mongodb-linux-x86_64-rhel62-3.2.0.tgz 2.移动到指定目录下 mv mongodb-linux-x86_64-rhel62-3.2.0 /usr/local/mongodb 3.添加到PATH中 vim /etc/profile export PATH=

MongoDB安装和配置环境(for win7)

本篇文章转载自http://blog.csdn.net/pupingpp/article/details/39053945,如果需要,请查看原文. 下面简单介绍一下MongoDB在win7 上的安装,以及可能出现的问题. 1.在官网下载MongoDB:http://www.mongodb.org/downloads : 2.安装,比如我的安装路劲:D:\Program Files\MongoDB2.6: 3.新建MongDB数据存放路劲,比如我的:D:\ProgramData\MongoDB:

Mongodb 安装与配置

1. 复制Mongodb到指定服务器 到mongodb官方网站http://www.mongodb.org/downloads下载mongodb,解压并将目录考到需要安装的服务器上,然后进行配置.例如: [[email protected] ~]# scp -r [email protected]:/data/web/dxm/mongodb/mongodb-linux-x86_64-2.4.5 data/web/ 会将mongodb目录copy到10.11.17.165服务器的 ~/data/w

Windows下图文详解Mongodb安装及配置

这两天接触了MongoDB数据库,发现和mysql数据库还是有很大差别的,同时使用前的配置看起来有些繁杂,踩过不少坑,其实只要一步一步搞清了,并不难. 接下来,我就整理下整个安装及配置过程. 安装的Mongodb版本: mongodb-win32-x86_64-2008plus-ssl-3.4.10-signed.msi 电脑信息:win10  64位 一.安装 安装其实很简单,一路next,选择custom,不然无法继续 我是默认的安装位置:C:\Program Files\MongoDB,你

Windows下Mongodb安装及配置

本文摘自:https://blog.csdn.net/heshushun/article/details/77776706 一.先登录Mongodb官网https://www.mongodb.com/download-center#community 下载   安装包.32.64位的都行. 二.安装MongoDB 下载后的安装包: 安装比较简单,类似于普通QQ软件,中间主要是选择“Custom”自定义 安装路径修改下:D:\software\MongoDB 然后不断“下一步”,安装至结束. 安装