mongodb shard集群的shell程序启动

#!/bin/bash
processExist=`ps aux|grep mongo|grep -v "grep" `
MONGODB_PATH="/opt/mongodb/mongos"
MONGODB_DATA="/opt/mongodb"

mongod_lock=$MONGODB_DATA/data/configsvr/mongod.lock
shard1_lock=$MONGODB_DATA/data/shard1/mongod.lock
shard2_lock=$MONGODB_DATA/data/shard2/mongod.lock
shard3_lock=$MONGODB_DATA/data/shard3/mongod.lock

echo "------------------------关闭mongodb的所有进程start-------------------------"
mongoProesses=` ps -A |grep "mongo"| awk '{if($0!~/mongodb-run/) print $1}' `

for proess in ${mongoProesses}; do
  kill -9 $proess
done
echo "------------------------关闭mongodb的所有进程end-------------------------"


echo "----------------删除mongodb异常关闭的锁文件start-------------------------"
if [ -f "$mongod_lock" ]; then
rm -rf $mongod_lock
fi

if [ -f "$shard1_lock" ]; then
rm -rf $shard1_lock
fi
if [ -f "$shard2_lock" ]; then
rm -rf $shard2_lock
fi
if [ -f "$shard3_lock" ]; then
rm -rf $shard3_lock
fi
echo "----------------删除mongodb异常关闭的锁文件end-------------------------"

#以下配置我参考了 http://www.csdn.net/article/2014-04-24/2819492-2819221-build-high-avialable-mongodb-cluster-part-2/2#0-tsina-1-78606-397232819ff9a47a7b7e80a40613cfe1

echo "-------------------------configsvr------------------------------"
$MONGODB_PATH/bin/mongod --configsvr  --port 21000 --dbpath $MONGODB_DATA/data/configsvr --logpath $MONGODB_DATA/log/configsvr/configsvr.log --fork
echo "-------------------------mongos------------------------------"
$MONGODB_PATH/bin/mongos -configdb 10.100.112.155:21000 -port 20000 -logpath $MONGODB_DATA/log/mongos.log -logappend -fork
echo "-------------------------shard1------------------------------"
$MONGODB_PATH/bin/mongod --shardsvr --replSet shard1  --port 22001 --dbpath $MONGODB_DATA/data/shard1 --logpath $MONGODB_DATA/log/shard1/shard1.log --fork --nojournal --oplogSize 10
echo "-------------------------shard2------------------------------"
$MONGODB_PATH/bin/mongod --shardsvr --replSet shard2  --port 22002 --dbpath $MONGODB_DATA/data/shard2 --logpath $MONGODB_DATA/log/shard2/shard2.log --fork  --nojournal  --oplogSize 10
echo "-------------------------shard3------------------------------"
$MONGODB_PATH/bin/mongod --shardsvr --replSet shard3  --port 22003 --dbpath $MONGODB_DATA/data/shard3 --logpath $MONGODB_DATA/log/shard3/shard3.log --fork --nojournal  --oplogSize 10
echo "-------------------------end------------------------------"
$MONGODB_PATH/bin/mongo 127.0.0.1:22001 <<EOF

use admin
config = { _id:"shard1", members:[ {_id:0,host:"10.100.112.155:22001"} ] };
rs.initiate(config);
EOF

$MONGODB_PATH/bin/mongo 127.0.0.1:22002 <<EOF
use admin
config = { _id:"shard2", members:[ {_id:0,host:"10.100.112.155:22002"} ] };
rs.initiate(config);
EOF
$MONGODB_PATH/bin/mongo 127.0.0.1:22003 <<EOF
use admin
config = { _id:"shard3", members:[ {_id:0,host:"10.100.112.155:22003"} ] };
rs.initiate(config);
EOF
$MONGODB_PATH/bin/mongo 127.0.0.1:20000 <<EOF
use admin
db.runCommand( { addshard : "shard1/10.100.112.155:22001"});
db.runCommand( { addshard : "shard1/10.100.112.155:22002"});
db.runCommand( { addshard : "shard1/10.100.112.155:22003"});
db.runCommand( { listshards : 1 } );
EOF





#这两个配置是一定要的,不然插入数据时,数据只会到shard1,这些业务逻辑操作,可以写另外一个shell文件导入。
#最后要分片的数据库一定要执行
db.runCommand( { enablesharding :"testdb"});

#指定数据库里需要分片的集合和片键
#db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
#hashed:均匀分布数据
db.runCommand( { shardcollection : "testdb.table1",key : {id:'hashed' } } )

#再介绍工作时使用的mongodb可视化工具:MongoVUE,可以分别连进去20000,22001,22002,22003查看配置,插入切片数据的分布。

猜你喜欢

转载自lyongq04.iteye.com/blog/2233769