
1、规划
(1)config
10.0.0.51:20004
10.0.0.51:20005
10.0.0.51:20006
(2)shard0
10.0.0.51:20001
10.0.0.51:20002
10.0.0.52:20003
(3)shard2
10.0.0.52:20001
10.0.0.52:20002
10.0.0.51:20003
(4)mongos
10.0.0.51:20010
10.0.0.52:20011
db01:
su - mongod
mkdir -p /mongodb/20001/conf /mongodb/20001/data /mongodb/20001/log
mkdir -p /mongodb/20002/conf /mongodb/20002/data /mongodb/20002/log
mkdir -p /mongodb/20003/conf /mongodb/20003/data /mongodb/20003/log
cat > /mongodb/20001/conf/mongod.conf <<EOF
systemLog:
destination: file
path: /mongodb/20001/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /mongodb/20001/data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 0.5
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 20001
bindIp: 10.0.0.51,127.0.0.1
replication:
oplogSizeMB: 2048
replSetName: CN_sh
sharding:
clusterRole: shardsvr
EOF
\cp /mongodb/20001/conf/mongod.conf /mongodb/20002/conf/
\cp /mongodb/20001/conf/mongod.conf /mongodb/20003/conf/
sed 's#20001#20002#g' /mongodb/20002/conf/mongod.conf -i
sed 's#20001#20003#g' /mongodb/20003/conf/mongod.conf -i
mongod -f /mongodb/20001/conf/mongod.conf
mongod -f /mongodb/20002/conf/mongod.conf
mongod -f /mongodb/20003/conf/mongod.conf
db02:
su - mongod
mkdir -p /mongodb/20001/conf /mongodb/20001/data /mongodb/20001/log
mkdir -p /mongodb/20002/conf /mongodb/20002/data /mongodb/20002/log
mkdir -p /mongodb/20003/conf /mongodb/20003/data /mongodb/20003/log
cat > /mongodb/20001/conf/mongod.conf <<EOF
systemLog:
destination: file
path: /mongodb/20001/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /mongodb/20001/data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 0.5
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 20001
bindIp: 10.0.0.52,127.0.0.1
replication:
oplogSizeMB: 2048
replSetName: US_sh
sharding:
clusterRole: shardsvr
EOF
\cp /mongodb/20001/conf/mongod.conf /mongodb/20002/conf/
\cp /mongodb/20001/conf/mongod.conf /mongodb/20003/conf/
sed 's#20001#20002#g' /mongodb/20002/conf/mongod.conf -i
sed 's#20001#20003#g' /mongodb/20003/conf/mongod.conf -i
mongod -f /mongodb/20001/conf/mongod.conf
mongod -f /mongodb/20002/conf/mongod.conf
mongod -f /mongodb/20003/conf/mongod.conf
db01:
mkdir -p /mongodb/20004/conf /mongodb/20004/data /mongodb/20004/log
mkdir -p /mongodb/20005/conf /mongodb/20005/data /mongodb/20005/log
mkdir -p /mongodb/20006/conf /mongodb/20006/data /mongodb/20006/log
cat > /mongodb/20004/conf/mongod.conf <<EOF
systemLog:
destination: file
path: /mongodb/20004/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /mongodb/20004/data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 0.5
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 20004
bindIp: 10.0.0.51,127.0.0.1
replication:
oplogSizeMB: 2048
replSetName: config
sharding:
clusterRole: configsvr
EOF
\cp /mongodb/20004/conf/mongod.conf /mongodb/20005/conf/
\cp /mongodb/20004/conf/mongod.conf /mongodb/20006/conf/
sed 's#20004#20005#g' /mongodb/20005/conf/mongod.conf -i
sed 's#20004#20006#g' /mongodb/20006/conf/mongod.conf -i
mongod -f /mongodb/20004/conf/mongod.conf
mongod -f /mongodb/20005/conf/mongod.conf
mongod -f /mongodb/20006/conf/mongod.conf
复制集配置
config = {_id: 'CN_sh', members: [
{_id: 0, host: '10.0.0.51:20001'},
{_id: 1, host: '10.0.0.51:20002'},
{_id: 2, host: '10.0.0.52:20003'}]
}
rs.initiate(config)
config = {_id: 'US_sh', members: [
{_id: 0, host: '10.0.0.52:20001'},
{_id: 1, host: '10.0.0.52:20002'},
{_id: 2, host: '10.0.0.51:20003'}]
}
rs.initiate(config)
config = {_id: 'config', members: [
{_id: 0, host: '10.0.0.51:20004'},
{_id: 1, host: '10.0.0.51:20005'},
{_id: 2, host: '10.0.0.51:20006'}]
}
rs.initiate(config)
mongos配置
mkdir -p /mongodb/20010/conf /mongodb/20010/log
cat > /mongodb/20010/conf/mongos.conf<<EOF
systemLog:
destination: file
path: /mongodb/20010/log/mongos.log
logAppend: true
net:
bindIp: 10.0.0.51,127.0.0.1
port: 20010
sharding:
configDB: config/10.0.0.51:20004,10.0.0.51:20005,10.0.0.51:20006
processManagement:
fork: true
EOF
mongos -f /mongodb/20010/conf/mongos.conf
mkdir -p /mongodb/20011/conf /mongodb/20011/log
cat> /mongodb/20011/conf/mongos.conf <<EOF
systemLog:
destination: file
path: /mongodb/20011/log/mongos.log
logAppend: true
net:
bindIp: 10.0.0.52,127.0.0.1
port: 20011
sharding:
configDB: config/10.0.0.51:20004,10.0.0.51:20005,10.0.0.51:20006
processManagement:
fork: true
EOF
mongos -f /mongodb/20011/conf/mongos.conf
db.runCommand( { addshard : "CN_sh/10.0.0.51:20001,10.0.0.51:20002,10.0.0.52:20003",name:"CN_sh"} )
db.runCommand( { addshard : "US_sh/10.0.0.52:20001,10.0.0.52:20002,10.0.0.51:20003",name:"US_sh"} )

1、针对每个要分片的集合,模型中增加一个区域字段 locationCode
locationCode:"CN" 应用程按照规则自动加上这个字段
2、给分片添加标签
sh.addShardTag("shard0", "CHINA")
sh.addShardTag("shard1", "AMERICA")
3、为打好标签的分片设置片键的数值区间
sh.addTagRange( "crm.orders",
{ "locationCode" : "CN", "order_id" : MinKey },
{ "locationCode" : "CN", "order_id" : MaxKey } ,
"CHINA" )
sh.addTagRange( "crm.orders",
{ "locationCode" : "US", "order_id" : MinKey },
{ "locationCode" : "US", "order_id" : MaxKey } ,
"AMERICA" )
