mongodb集群搭建

## 注: 机器1、2、3、4、5分别为  172.16.40.107、x.108、x.109、x.110、x.106
/etc/init.d/iptables stop
/etc/init.d/ip6tables stop
## 机器1:
rm -rf /home/mongodb/*
mkdir -p  /home/mongodb/data/shard11
/usr/local/mongodb/bin/mongod --shardsvr --port 27017 --replSet shard1/dlxa08:27017 --dbpath /home/mongodb/data/shard11 --oplogSize 100 --logpath /home/mongodb/data/shard11.log --logappend --fork

## 机器2:
rm -rf /home/mongodb/*
mkdir -p  /home/mongodb/data/shard12
/usr/local/mongodb/bin/mongod --shardsvr --replSet shard1/dlxa07:27017 --port 27017 --dbpath /home/mongodb/data/shard12 --oplogSize 100 --logpath /home/mongodb/data/shard12.log --logappend --fork

##  初始化Replica Set, 连接任意一台mongod进程,(注:只要在一台db上执行一次下面的命令即可)
/usr/local/mongodb/bin/mongo --port 27017
config = {_id:'shard1',members:[
                          {_id:0,host:'172.16.40.107:27017'},
                          {_id:1,host:'172.16.40.108:27017'}]
           }

rs.initiate(config);
# 查看初始化状态。
> rs.status();

#=====================================

同样方法,配置shard2用到的replica sets:
server3:
rm -rf /home/mongodb/*
mkdir -p /home/mongodb/data/shard21
/usr/local/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongodb/data/shard21 --oplogSize 100 --logpath /home/mongodb/data/shard21.log --logappend --fork

server4:
rm -rf /home/mongodb/*
mkdir -p /home/mongodb/data/shard22
/usr/local/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /home/mongodb/data/shard22 --oplogSize 100 --logpath /home/mongodb/data/shard22.log --logappend --fork


##  初始化Replica Set, 连接任意一台mongod进程,(注:只要在一台db上执行一次下面的命令即可)
/usr/local/mongodb/bin/mongo --port 27018
config = {_id: 'shard2', members: [
                          {_id: 0, host: '172.16.40.109:27018'},
                          {_id: 1, host: '172.16.40.110:27018'}]
           }

rs.initiate(config);

# 查看初始化状态。
> rs.status();

#==================================================================
#配置3台config server

Server2:
mkdir -p /home/mongodb/data/config
/usr/local/mongodb/bin/mongod --configsvr --dbpath /home/mongodb/data/config --port 20000 --logpath /home/mongodb/data/config.log --logappend --fork

#config server也需要dbpath
 
Server4:
mkdir -p /home/mongodb/data/config
/usr/local/mongodb/bin/mongod --configsvr --dbpath /home/mongodb/data/config --port 20000 --logpath /home/mongodb/data/config.log --logappend --fork


Server5:
rm -rf /home/mongodb/*
mkdir -p /home/mongodb/data/config
/usr/local/mongodb/bin/mongod --configsvr --dbpath /home/mongodb/data/config --port 20000 --logpath /home/mongodb/data/config.log --logappend --fork

#==================================================================

配置mongos

#在 
#    server1, 
#    server3,
#    server5,
#上分别执行:

/usr/local/mongodb/bin/mongos --configdb 172.16.40.106:20000,172.16.40.108:20000,172.16.40.110:20000 --port 30000 --chunkSize 5 --logpath /home/mongodb/data/mongos.log --logappend --fork 

应该改为:
/usr/local/mongodb/bin/mongos --configdb 172.16.40.107:20000 --port 30000 --chunkSize 5 --logpath /home/mongodb/data/mongos.log --logappend --fork 
#mongs不需要dbpath

#=================================================================

Configuring the Shard Cluster

连接到其中一个mongos进程,并切换到admin数据库做以下配置
1. 连接到mongs,并切换到admin
/usr/local/mongodb/bin/mongo 172.16.40.110:30000/admin
>db
Admin


2. 加入shards
如里shard是单台服务器,用>db.runCommand( { addshard : "<serverhostname>[:<port>]" } )这样的命令加入,如果shard是replica sets,用replicaSetName/<serverhostname>[:port][,serverhostname2[:port],…]这样的格式表示,例如本例执行:
db.runCommand( { addshard : "shard1/172.16.40.107:27017,172.16.40.108:27017",name:"s1",maxsize:20480} );
db.runCommand( { addshard : "shard2/172.16.40.109:27018,172.16.40.110:27018",name:"s2",maxsize:20480} );


db.runCommand( { addshard : "shard1/172.16.40.107:27017,172.16.40.108:27017",name:"s1"} );
db.runCommand( { addshard : "shard2/172.16.40.109:27018,172.16.40.110:27018",name:"s2"} );

#Name:用于指定每个shard的名字,不指定的话系统将自动分配
#maxSize:指定各个shard可使用的最大磁盘空间,单位megabytes

4. Listing shards
>db.runCommand( { listshards : 1 } )
如果列出了以上二个你加的shards,表示shards已经配置成功

5. 激活数据库分片
命令:
> db.runCommand( { enablesharding : "test" } );

通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,

6.
要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:
> db.runCommand( { shardcollection : "test.cdr",key : {"_id":1} });

#################################################################################################
问题:

1、 只能启动1、3 configdbs
    [root@dlxa07 ritow]# cat /home/mongodb/data/mongos.log 
    Mon Sep  5 17:20:29 need either 1 or 3 configdbs
    ,将两个中的一个kill掉,成功地将 mongos启动

2、3、4 问题可以通过关闭防火墙,得以解决:
2、 web 端只能看到一个,另一个看不到
    能够: 172.16.40.107:28017、 172.16.40.109:28018
    不能: 172.16.40.108:28017、 172.16.40.110:28018
    
3、初始化Replica Set, (107上)失败提示如下,但在两个中的另外一个(108上)运行同样的命令,启动貌似成功
    失败情况:(于107上)
    > rs.initiate(config);
    {
        "errmsg" : "couldn't initiate : need members up to initiate, not ok : 172.16.40.108:27017",
        "ok" : 0
    }
    (于108上):
    rs.initiate(config);
    {
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
    }

4、rs.status() 仍然是一个成功一个失败,情况同上。

#################################################################################################
1、 未启动分片

[root@dlxa10 mg_test]# ./InsertTest 
sizeof(u8)==1
sizeof(u16)==2
sizeof(u32)==4
sizeof(u64)==8
<localhost:27017> is connected!
2961998925:2319215107
2978776141:855253525
2264924263


The using time is: 899S

计算结果:
    插入1千万条记录,用时899秒,平均11123 条/秒
    
[root@dlxa06 mongodb-src-r1.8.3]# du -h /home/mongodb/data/;date
4.0K    /home/mongodb/data/config/_tmp
209M    /home/mongodb/data/config
209M    /home/mongodb/data/
2011年 09月 06日 星期二 14:06:44 CST

[root@dlxa07 bin]# du -h /home/mongodb/data/;date
4.0K    /home/mongodb/data/shard11/_tmp
673M    /home/mongodb/data/shard11
673M    /home/mongodb/data/
2011年 09月 06日 星期二 14:07:15 EDT

[root@dlxa08 ~]# du -h /home/mongodb/data/;date
4.0K    /home/mongodb/data/shard12/_tmp
25G    /home/mongodb/data/shard12
4.0K    /home/mongodb/data/config/_tmp
209M    /home/mongodb/data/config
25G    /home/mongodb/data/
2011年 09月 06日 星期二 14:11:49 CST

[root@dlxa09 bin]# du -h /home/mongodb/data/;date
4.0K    /home/mongodb/data/shard21/_tmp
209M    /home/mongodb/data/shard21
209M    /home/mongodb/data/
2011年 09月 06日 星期二 14:08:59 CST

[root@dlxa10 mg_test]# du -h /home/mongodb/data/;date
4.0K    /home/mongodb/data/config/_tmp
209M    /home/mongodb/data/config
4.0K    /home/mongodb/data/shard22/_tmp
209M    /home/mongodb/data/shard22
417M    /home/mongodb/data/
2011年 09月 06日 星期二 14:08:39 CST


shard1:PRIMARY> db.persons.remove();
shard1:PRIMARY> 
大约需要9分钟,没有获取精确时间

#################################################################################################
2、 激活分片
[root@dlxa10 mg_test]# ./InsertTest 
sizeof(u8)==1
sizeof(u16)==2
sizeof(u32)==4
sizeof(u64)==8
<localhost:27017> is connected!
2961998925:2319215107
2978776141:855253525
2264924263


RECORD_COUNT=5000000.   The using time is: 1902S
    插入速率:2628条/秒
[root@dlxa07 bin]# du -h /home/mongodb/data/shard*
4.0K    /home/mongodb/data/shard11/_tmp
8.2G    /home/mongodb/data/shard11

[root@dlxa08 ~]# du -h /home/mongodb/data/shard*
4.0K    /home/mongodb/data/shard12/_tmp
8.5G    /home/mongodb/data/shard12

[root@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shinobi_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值