一、部署软件
pc1、pc2、pc3分别安装mongodb,操作如下:
[root@pc1 ~]# tail /etc/security/limits.conf
mongod soft nproc 40000
* hard nofile 1000000
* soft nofile 1000000
* soft core unlimited
* soft stack 10240
* - nofile 65535
push - nproc 65535
push - nofile 320000
work - nproc 10000
[root@pc1 ~]# tail /etc/security/limits.d/90-nproc.conf
* soft nproc 1024
root soft nproc unlimited
[root@pc1 ~]# cat /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
[root@pc1 ~]# yum -y install mongodb-org
[root@pc1 ~]# chkconfig mongodb off
[root@pc1 ~]# mkdir -p /data/mongodb/{config,data/{config,logs,shard{1,2,3}_1}}
[root@pc1 ~]# chown -R mongod.mongod /data/mongodb
[root@pc1 ~]# cp /etc/mongod.conf /data/mongodb/config/shard1.conf
[root@pc1 ~]# tree /data/
/data/
└── mongodb
├── config
│ └── shard1.conf
└── data
├── config
├── logs
├── shard1_1
├── shard2_1
└── shard3_1
二、配置服务
副本集1的配置文件与启动脚本如下:
[root@pc1 ~]# egrep "^[^#$]" /data/mongodb/config/shard1.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/data/logs/shard1.log
storage:
dbPath: /data/mongodb/data/shard1_1
directoryPerDB: true
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/shard1.pid # location of pidfile
net:
port: 27027
#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
replication:
oplogSizeMB: 500
replSetName: shard1
sharding:
clusterRole: shardsvr
[root@pc1 ~]# cp /etc/init.d/mongod /etc/init.d/shard1
[root@pc1 ~]# vim /etc/init.d/shard1
[root@pc1 ~]# egrep "^[^#$]" /etc/init.d/shard1
. /etc/rc.d/init.d/functions
CONFIGFILE="/data/mongodb/config/shard1.conf"
OPTIONS=" -f $CONFIGFILE"
mongod=${MONGOD-/usr/bin/mongod}
MONGO_USER=mongod
MONGO_GROUP=mongod
SYSCONFIG="/etc/sysconfig/mongod"
if [ -f "$SYSCONFIG" ]; then
. "$SYSCONFIG"
fi
NUMACTL_ARGS="--interleave=all"
if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
then
NUMACTL="numactl $NUMACTL_ARGS"
else
NUMACTL=""
fi
PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'`
PIDDIR=`dirname $PIDFILEPATH`
start()
{
# Make sure the default pidfile directory exists
if [ ! -d $PIDDIR ]; then
install -d -m 0755 -o $MONGO_USER -g $MONGO_GROUP $PIDDIR
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/shard1
}
stop()
{
echo -n $"Stopping mongod: "
mongo_killproc "$PIDFILEPATH" $mongod
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/shard1
}
restart () {
stop
start
}
mongo_killproc()
{
local pid_file=$1
local procname=$2
local -i delay=300
local -i duration=10
local pid=`pidofproc -p "${pid_file}" ${procname}`
kill -TERM $pid >/dev/null 2>&1
usleep 100000
local -i x=0
while [ $x -le $delay ] && checkpid $pid; do
sleep $duration
x=$(( $x + $duration))
done
kill -KILL $pid >/dev/null 2>&1
usleep 100000
checkpid $pid # returns 0 only if the process exists
local RC=$?
[ "$RC" -eq 0 ] && failure "${procname} shutdown" || rm -f "${pid_file}"; success "${procname} shutdown"
RC=$((! $RC)) # invert return code so we return 0 when process is dead.
return $RC
}
RETVAL=0
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/shard1 ] && restart || :
;;
status)
status $mongod
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
RETVAL=1
esac
exit $RETVAL
副本集2的配置文件与启动脚本如下:
[root@pc1 ~]# egrep "^[^#$]" /data/mongodb/config/shard2.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/data/logs/shard2.log
storage:
dbPath: /data/mongodb/data/shard2_1
directoryPerDB: true
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/shard2.pid # location of pidfile
net:
port: 27028
#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
replication:
oplogSizeMB: 500
replSetName: shard2
sharding:
clusterRole: shardsvr
[root@pc1 ~]# cp /etc/init.d/mongod /etc/init.d/shard2
[root@pc1 ~]# vim /etc/init.d/shard2
[root@pc1 ~]# egrep "^[^#$]" /etc/init.d/shard2
. /etc/rc.d/init.d/functions
CONFIGFILE="/data/mongodb/config/shard2.conf"
OPTIONS=" -f $CONFIGFILE"
mongod=${MONGOD-/usr/bin/mongod}
MONGO_USER=mongod
MONGO_GROUP=mongod
SYSCONFIG="/etc/sysconfig/mongod"
if [ -f "$SYSCONFIG" ]; then
. "$SYSCONFIG"
fi
NUMACTL_ARGS="--interleave=all"
if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
then
NUMACTL="numactl $NUMACTL_ARGS"
else
NUMACTL=""
fi
PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'`
PIDDIR=`dirname $PIDFILEPATH`
start()
{
# Make sure the default pidfile directory exists
if [ ! -d $PIDDIR ]; then
install -d -m 0755 -o $MONGO_USER -g $MONGO_GROUP $PIDDIR
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/shard2
}
stop()
{
echo -n $"Stopping mongod: "
mongo_killproc "$PIDFILEPATH" $mongod
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/shard2
}
restart () {
stop
start
}
mongo_killproc()
{
local pid_file=$1
local procname=$2
local -i delay=300
local -i duration=10
local pid=`pidofproc -p "${pid_file}" ${procname}`
kill -TERM $pid >/dev/null 2>&1
usleep 100000
local -i x=0
while [ $x -le $delay ] && checkpid $pid; do
sleep $duration
x=$(( $x + $duration))
done
kill -KILL $pid >/dev/null 2>&1
usleep 100000
checkpid $pid # returns 0 only if the process exists
local RC=$?
[ "$RC" -eq 0 ] && failure "${procname} shutdown" || rm -f "${pid_file}"; success "${procname} shutdown"
RC=$((! $RC)) # invert return code so we return 0 when process is dead.
return $RC
}
RETVAL=0
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/shard2 ] && restart || :
;;
status)
status $mongod
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
RETVAL=1
esac
exit $RETVAL
副本集3的配置文件与启动脚本如下:
[root@pc1 ~]# egrep "^[^#$]" /data/mongodb/config/shard3.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/data/logs/shard3.log
storage:
dbPath: /data/mongodb/data/shard3_1
directoryPerDB: true
journal:
enabled: true
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/shard3.pid # location of pidfile
net:
port: 27026
#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
replication:
oplogSizeMB: 500
replSetName: shard3
sharding:
clusterRole: shardsvr
[root@pc1 ~]# cp /etc/init.d/mongod /etc/init.d/shard3
[root@pc1 ~]# vim /etc/init.d/shard3
[root@pc1 ~]# egrep "^[^#$]" /etc/init.d/shard3 (略,内容基本与shard2 、shard1相同)
复制配置文件到pc2、pc3,并启动服务
[root@pc1 ~]# scp /data/mongodb/config{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'`
PIDDIR=`dirname $PIDFILEPATH`
start()
{
# Make sure the default pidfile directory exists
if [ ! -d $PIDDIR ]; then
install -d -m 0755 -o $MONGO_USER -g $MONGO_GROUP $PIDDIR
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mconfig
}
stop()
{
echo -n $"Stopping mongod: "
mongo_killproc "$PIDFILEPATH" $mongod
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mconfig
}
restart () {
stop
start
}
mongo_killproc()
{
local pid_file=$1
local procname=$2
local -i delay=300
local -i duration=10
local pid=`pidofproc -p "${pid_file}" ${procname}`
kill -TERM $pid >/dev/null 2>&1
usleep 100000
local -i x=0
while [ $x -le $delay ] && checkpid $pid; do
sleep $duration
x=$(( $x + $duration))
done
kill -KILL $pid >/dev/null 2>&1
usleep 100000
checkpid $pid # returns 0 only if the process exists
local RC=$?
[ "$RC" -eq 0 ] && failure "${procname} shutdown" || rm -f "${pid_file}"; success "${procname} shutdown"
RC=$((! $RC)) # invert return code so we return 0 when process is dead.
return $RC
}
RETVAL=0
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/mconfig ] && restart || :
;;
status)
status $mongod
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
RETVAL=1
esac
exit $RETVAL [root@pc1 ~]# scp /data/mongodb/config/config.conf pc2:/data/mongodb/config [root@pc1 ~]# scp /etc/init.d/mconfig pc2:/etc/init.d/ [root@pc1 ~]# [root@pc1 ~]# scp /data/mongodb/config/config.conf pc2:/data/mongodb/config [root@pc1 ~]# scp /etc/init.d/mconfig pc3:/etc/init.d/ [root@pc1 ~]# [root@pc1 ~]# /etc/init.d/mconfig start Starting mongod: [确定] [root@pc1 ~]# lsof -i:27029 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mongod 2765 mongod 6u IPv4 11520 0t0 TCP *:27029 (LISTEN) [root@pc1 ~]# ssh pc2 '/etc/init.d/mconfig start' [root@pc1 ~]# ssh pc2 '/etc/init.d/mconfig start' 为了保持config server的一致性,实现各config server的副本集功能,完成效果如下所示(config server的副本集不支持使用arbiter): [root@pc1 ~]# mongo localhost:27029 mongos 路由配置文件与启动脚本内容如下: [root@pc1 ~]# egrep "^[^#$]" /data/mongodb/config/mongos.conf [root@pc1 ~]# cp /etc/init.d/mongod /etc/init.d/mongos [root@pc1 ~]# vim /etc/init.d/mongos [root@pc1 ~]# egrep "^[^#$]" /etc/init.d/mongos [root@pc1 ~]# scp /data/mongodb/config/mongos pc2:/data/mongodb/config/ [root@pc1 ~]# scp /etc/init.d/mongos pc2:/etc/init.d/ [root@pc1 ~]# scp /data/mongodb/config/mongos pc3:/data/mongodb/config/ [root@pc1 ~]# scp /etc/init.d/mongos pc3:/etc/init.d/ [root@pc1 ~]# /etc/init.d/mongos start Starting mongod: [确定] [root@pc1 ~]# ssh pc2 '/etc/init.d/mongos start' Starting mongod: [确定] [root@pc1 ~]# ssh pc3 '/etc/init.d/mongos start' Starting mongod: [确定] [root@pc1 ~]# 有些网朋友说:需要实现mongos路由的副本集(即多台mongos路由之间的复制),但从原理分析,我个人没能理解这种方案的功能,当然本人也尝试过,发现设置副本集之后mongos服务无法启动(并无深入研究,请各位朋友提宝贝意见) 三、实现分片 连接到任何一台mongos路由上,操作如下: [root@pc1 ~]# mongo MongoDB shell version: 3.2.7 connecting to: test mongos> use admin switched to db admin mongos> sh.status() mongos> sh.addShard("shard1/pc1:27027") { "shardAdded" : "shard1", "ok" : 1 } mongos> sh.addShard("shard3/pc2:27026") { "shardAdded" : "shard3", "ok" : 1 } mongos> sh.addShard("shard2/pc3:27028") { "shardAdded" : "shard2", "ok" : 1 } mongos> sh.status() mongos> use config switched to db config mongos> db.chunks.find() mongos> db.settings.find() { "_id" : "chunksize", "value" : NumberLong(64) } mongos> db.settings.save({"_id":"chunksize","value":NumberLong(5)}) #不建议修改chunk的值,本例为了实例效果改为5M。最小的chunksize(1M),默认chunksize为64M WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) mongos> db.settings.find() { "_id" : "chunksize", "value" : NumberLong(5) } mongos> use admin switched to db admin mongos> sh.enableSharding("test") { "ok" : 1 } mongos> sh.shardCollection("test.user",{uid:1}) { "collectionsharded" : "test.user", "ok" : 1 } mongos> use test switched to db test mongos> db.use.ensureIndex({uid:1}) mongos> for (i=1;i<=100000;i++) db.user.insert({uid:'user'+i,age:(i%15),address:'#'+i+',shangdi south road,beijing',preferbooks:['book'+i,'hello world']}) WriteResult({ "nInserted" : 1 }) mongos> sh.status() mongos> use config switched to db config mongos> show collections mongos> db.settings.find() mongos> db.shards.find() mongos> db.databases.find() mongos> db.chunks.find() mongos>exit 四、补充命令 db.runCommand({addshard:"shard1/pc1:27027,pc2:27027,pc3:27027”,name:"shard1"}); db.runCommand({addshard:"shard2/pc1:27028,pc2:27028,pc3:27028”,name:"shard2"}); db.runCommand({addshard:"shard3/pc1:27026,pc2:27026,pc3:27026”,name:"shard3"}); use admin db.runCommand({enablesharding:"db_name"}) db.runCommand({shardcollection:"db_name.collection_name",key:{fields_name:"hashed"}}) db.runCommand({shardcollection:"db_name.collection_name",key:{fields_name:1}}) sh.shardCollection("db_name.collection_name",{fields_name1:1,fields_name2:1})MongoDB shell version: 3.2.7
connecting to: localhost:27029/test
configrs:SECONDARY> use admin
switched to db admin
configrs:SECONDARY> rs.slaveOk()
configrs:SECONDARY> rs.status()
{
"set" : "configrs",
"date" : ISODate("2016-07-01T03:25:49.471Z"),
"myState" : 2,
"term" : NumberLong(2),
"syncingTo" : "pc3:27029",
"configsvr" : true,
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "pc1:27029",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3937,
"optime" : {
"ts" : Timestamp(1467339616, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2016-07-01T02:20:16Z"),
"syncingTo" : "pc3:27029",
"configVersion" : 3,
"self" : true
},
{
"_id" : 1,
"name" : "pc2:27029",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3936,
"optime" : {
"ts" : Timestamp(1467339616, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2016-07-01T02:20:16Z"),
"lastHeartbeat" : ISODate("2016-07-01T03:25:48.578Z"),
"lastHeartbeatRecv" : ISODate("2016-07-01T03:25:47.481Z"),
"pingMs" : NumberLong(1),
"syncingTo" : "pc3:27029",
"configVersion" : 3
},
{
"_id" : 2,
"name" : "pc3:27029",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 3936,
"optime" : {
"ts" : Timestamp(1467339616, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2016-07-01T02:20:16Z"),
"lastHeartbeat" : ISODate("2016-07-01T03:25:49.146Z"),
"lastHeartbeatRecv" : ISODate("2016-07-01T03:25:47.585Z"),
"pingMs" : NumberLong(1),
"electionTime" : Timestamp(1467339615, 1),
"electionDate" : ISODate("2016-07-01T02:20:15Z"),
"configVersion" : 3
}
],
"ok" : 1
}
configrs:SECONDARY> exit
bye
[root@pc1 ~]#
systemLog:
destination: file
logAppend: true
path: /data/mongodb/data/logs/mongos.log
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongos.pid # location of pidfile
net:
port: 27017
#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
sharding:
configDB: pc1:27029,pc2:27029,pc3:27029
#注: mongodb3.4时格式必须为 configDB: configrs_name/configServer_list
. /etc/rc.d/init.d/functions
CONFIGFILE="/data/mongodb/config/mongos.conf"
OPTIONS=" -f $CONFIGFILE"
mongod=${MONGOD-/usr/bin/mongos}
MONGO_USER=mongod
MONGO_GROUP=mongod
SYSCONFIG="/etc/sysconfig/mongod"
if [ -f "$SYSCONFIG" ]; then
. "$SYSCONFIG"
fi
NUMACTL_ARGS="--interleave=all"
if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
then
NUMACTL="numactl $NUMACTL_ARGS"
else
NUMACTL=""
fi
PIDFILEPATH=`awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*(processManagement\.)?pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d "[:blank:]\"'" | awk -F'#' '{print $1}'`
PIDDIR=`dirname $PIDFILEPATH`
start()
{
# Make sure the default pidfile directory exists
if [ ! -d $PIDDIR ]; then
install -d -m 0755 -o $MONGO_USER -g $MONGO_GROUP $PIDDIR
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" --check $mongod "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongos
}
stop()
{
echo -n $"Stopping mongod: "
mongo_killproc "$PIDFILEPATH" $mongod
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mongos
}
restart () {
stop
start
}
mongo_killproc()
{
local pid_file=$1
local procname=$2
local -i delay=300
local -i duration=10
local pid=`pidofproc -p "${pid_file}" ${procname}`
kill -TERM $pid >/dev/null 2>&1
usleep 100000
local -i x=0
while [ $x -le $delay ] && checkpid $pid; do
sleep $duration
x=$(( $x + $duration))
done
kill -KILL $pid >/dev/null 2>&1
usleep 100000
checkpid $pid # returns 0 only if the process exists
local RC=$?
[ "$RC" -eq 0 ] && failure "${procname} shutdown" || rm -f "${pid_file}"; success "${procname} shutdown"
RC=$((! $RC)) # invert return code so we return 0 when process is dead.
return $RC
}
RETVAL=0
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/mongos ] && restart || :
;;
status)
status $mongod
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
RETVAL=1
esac
exit $RETVAL
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("577226b7511b1f96da0ddba2")
}
shards:
active mongoses:
"3.2.7" : 3
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("577226b7511b1f96da0ddba2")
}
shards:
{ "_id" : "shard1", "host" : "shard1/pc1:27027,pc2:27027" }
{ "_id" : "shard2", "host" : "shard2/pc1:27028,pc3:27028" }
{ "_id" : "shard3", "host" : "shard3/pc2:27026,pc3:27026" }
active mongoses:
"3.2.7" : 3
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 5
Last reported error: mongos specified a different config database string : stored : pc1:27029 vs given : pc1:27029,pc2:27029,pc3:27029
Time of Reported error: Tue Jun 28 2016 07:34:07 GMT+0000 (UTC)
Migration Results for the last 24 hours:
No recent migrations
databases:
{
"raw" : {
"shard1/pc1:27027,pc2:27027" : {
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(1467102931, 2),
"electionId" : ObjectId("7fffffff0000000000000001")
}
}
},
"ok" : 1
}
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("577234b7c92b86a15a2901d4")
}
shards:
{ "_id" : "shard1", "host" : "shard1/pc1:27027,pc2:27027" }
{ "_id" : "shard2", "host" : "shard2/pc2:27028,pc3:27028" }
{ "_id" : "shard3", "host" : "shard3/pc1:27026,pc3:27026" }
active mongoses:
"3.2.7" : 3
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
2 : Success
1 : Failed with error 'aborted', from shard1 to shard2
databases:
{ "_id" : "test", "primary" : "shard1", "partitioned" : true }
test.user
shard key: { "uid" : 1 }
unique: false
balancing: true
chunks:
shard11
shard21
shard31
{ "uid" : { "$minKey" : 1 } } -->> { "uid" : "user2" } on : shard2 Timestamp(2, 0)
{ "uid" : "user2" } -->> { "uid" : "user8" } on : shard3 Timestamp(3, 0)
{ "uid" : "user8" } -->> { "uid" : { "$maxKey" : 1 } } on : shard1 Timestamp(3, 1)
actionlog
changelog
chunks
collections
databases
lockpings
locks
mongos
settings
shards
tags
version
{ "_id" : "chunksize", "value" : NumberLong(64) }
{ "_id" : "shard1", "host" : "shard1/pc1:27027,pc2:27027" }
{ "_id" : "shard3", "host" : "shard3/pc1:27026,pc3:27026" }
{ "_id" : "shard2", "host" : "shard2/pc2:27028,pc3:27028" }
{ "_id" : "test", "primary" : "shard1", "partitioned" : true }
{ "_id" : "test.user-uid_MinKey", "lastmod" : Timestamp(2, 0), "lastmodEpoch" : ObjectId("57723675c92b86a15a290209"), "ns" : "test.user", "min" : { "uid" : { "$minKey" : 1 } }, "max" : { "uid" : "user2" }, "shard" : "shard2" }
{ "_id" : "test.user-uid_\"user2\"", "lastmod" : Timestamp(3, 0), "lastmodEpoch" : ObjectId("57723675c92b86a15a290209"), "ns" : "test.user", "min" : { "uid" : "user2" }, "max" : { "uid" : "user8" }, "shard" : "shard3" }
{ "_id" : "test.user-uid_\"user8\"", "lastmod" : Timestamp(3, 1), "lastmodEpoch" : ObjectId("57723675c92b86a15a290209"), "ns" : "test.user", "min" : { "uid" : "user8" }, "max" : { "uid" : { "$maxKey" : 1 } }, "shard" : "shard1" }