Mongodb的副本、分片搭建方式

本文介绍副本和分片的两种搭建方式
由于主从模式很简单,而且Mongodb官网不推荐这种方式所以不再写这个模式的搭建过程了。

**

0、环境

**
本人机器资源有限,Linux环境由虚拟机搭建完成,而这两种模式完全可以在一台机器上来模拟,所以不启动多台机器了。

机器环境:CentOS6.6+VMware
Mongodb:2.6.9
IP:192.168.1.168

**

一、副本模式

**
我在一台机器上来模拟副本模式的搭建,所以将Mongo来复制为多个目录,通过启动不同的端口号来区分。

[20:24:53 fifi@CentOS6 test]$ ls
conf.bak  mongodb1  mongodb2  mongodb3

可以清理下data目录下的数据和log下的文件

整体架构如下:
副本模式搭建

1. 配置文件

mongodb1目录中的配置如下:

#mongodb1.conf
port=30001
dbpath=/home/fifi/test/mongodb1/data
logpath=/home/fifi/test/mongodb1/log/mongo.log
logappend=true
fork=true
replSet=myrepl
noprealloc=true

mongodb2、mongodb3对应的conf需要分别修改port、dbpath、logpath。

2.启动服务

我在每把mongodbN/bin/目录下的mongod改为了mongodN

[23:49:39 fifi@CentOS6 test]$ ll mongodb*/bin/mongod*
-rwxr-xr-x. 1 fifi fifi 23908720 Jun 17 23:28 mongodb1/bin/mongod1
-rwxr-xr-x. 1 fifi fifi 23908720 Jun 16 16:56 mongodb2/bin/mongod2
-rwxr-xr-x. 1 fifi fifi 23908720 Jun 16 16:57 mongodb3/bin/mongod3

其实没必要,只要自己清楚就行。
启动服务:

./mongodb1/bin/mongod1 -f mongodb1/mongodb.conf
./mongodb2/bin/mongod2 -f mongodb2/mongodb.conf 
./mongodb3/bin/mongod3 -f mongodb3/mongodb.conf 

3.客户端连接并配置

任意连接一个副本数据库即可,30001/30002/30003的一个就行
下文为具体操作工程,有些步骤的解析附在了注释中:

./mongodb1/bin/mongo --port 30001
#初始化配置
> cfg = { _id:"myrepl", members:[
... {_id:1, host:"192.168.1.168:30001", priority:2},
... {_id:2, host:"192.168.1.168:30002", priority:1},
... {_id:3, host:"192.168.1.168:30003", priority:2, arbiterOnly:true}
... ] };
#回车后显示如下,其中第一个_id必须与mongodb.conf配置中的replSet=myrepl对应上
{
        "_id" : "myrepl",
        "members" : [
                {
                        "_id" : 1,
                        "host" : "192.168.1.168:30001",
                        "priority" : 2
                },
                {
                        "_id" : 2,
                        "host" : "192.168.1.168:30002",
                        "priority" : 1
                },
                {
                        "_id" : 3,
                        "host" : "192.168.1.168:30003",
                        "priority" : 2,
                        "arbiterOnly" : true
                }
        ]
}
#使配置生效
> rs.initiate(cfg)
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}
> 
myrepl:SECONDARY> 
myrepl:PRIMARY> 
myrepl:PRIMARY> 
#这里可以看到,30001这个数据库先是变为SECONDARY,然后变为PRIMARY,至此正好符合我们的预期。
#输入rs.status()来看一下副本状态,可以看到PRIMARY、SECONDARY、ARBITER都已就位(忽略部分信息)。
myrepl:PRIMARY> rs.status()
{
        "set" : "myrepl",
        "myState" : 1,
        "members" : [
                {
                        "_id" : 1,
                        "name" : "192.168.1.168:30001",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "self" : true
                },
                {
                        "_id" : 2,
                        "name" : "192.168.1.168:30002",
                        "health" : 1,
                        "state" : 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值