MongoDB集群安装与配置2.4.3版本
mongoDB安装
http://www.mongodb.org/downloads
拷文件到
# cp mongodb-linux-i686-2.4.1.tgz /usr/local/
进入目录:
# cd /usr/local/
解压:
# tar zxvf mongodb-linux-i686-2.4.1.tgz
改名:
# mv mongodb-linux-i686-2.4.1 mongodb
根目录
# cd
建文件夹:
# mkdir -p /data/mongodb/data_shard1 #创建数据存储目录
# mkdir -p /data/mongodb/data_shard2 #创建数据存储目录
# mkdir -p /data/mongodb/data_shard3 #创建数据存储目录
# mkdir -p /data/mongodb/log/ #创建日志存储目录
# mkdir -p /data/mongodb/config/ #创建配置存储目录
启动服务
/* /usr/local/mongodb/bin/mongod --dbpath=/data/mongodb/data --logpath=/data/mongodb/log/mongodb.log */
192.168.1.191
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18001 --replSet shard1 --dbpath /data/mongodb/data_shard1 --logpath /data/mongodb/log/mongod_shard1.log --logappend --maxConns 10000
# /usr/local/mongodb/bin/mongod --fork --configsvr --port 18005 --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --rest
# /usr/local/mongodb/bin/mongos --configdb 192.168.1.191:18005,192.168.1.192:18005,192.168.1.193:18005 --fork --port 18000 --logpath /data/mongodb/log/mongos.log --chunkSize 256
连接此服务器
# /usr/local/mongodb/bin/mongo 192.168.1.191:18001
config = {_id: 'shard1', members: [ {_id: 0, host: '192.168.1.191:18001'}, {_id: 1, host: '192.168.1.194:18001'}, {_id: 2, host: '192.168.1.195:18001'}]}
rs.initiate(config)
rs.status()
192.168.1.192
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18002 --replSet shard2 --dbpath /data/mongodb/data_shard2 --logpath /data/mongodb/log/mongod.log --logappend --maxConns 10000
# /usr/local/mongodb/bin/mongod --fork --configsvr --port 18005 --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --rest
# /usr/local/mongodb/bin/mongos --configdb 192.168.1.191:18005,192.168.1.192:18005,192.168.1.193:18005 --fork --port 18000 --logpath /data/mongodb/log/mongos.log --chunkSize 256
连接此服务器
# /usr/local/mongodb/bin/mongo 192.168.1.192:18002
config = {_id: 'shard2', members: [ {_id: 0, host: '192.168.1.192:18002'}, {_id: 1, host: '192.168.1.195:18002'}, {_id: 2, host: '192.168.1.196:18002'}]}
rs.initiate(config)
rs.status()
192.168.1.193
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18003 --replSet shard3 --dbpath /data/mongodb/data_shard3 --logpath /data/mongodb/log/mongod.log --logappend --maxConns 10000
# /usr/local/mongodb/bin/mongod --fork --configsvr --port 18005 --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --rest
# /usr/local/mongodb/bin/mongos --configdb 192.168.1.191:18005,192.168.1.192:18005,192.168.1.193:18005 --fork --port 18000 --logpath /data/mongodb/log/mongos.log --chunkSize 256
连接一台此服务器
# /usr/local/mongodb/bin/mongo 192.168.1.193:18003
config = {_id: 'shard3', members: [{_id: 0, host: '192.168.1.193:18003'}, {_id: 1, host: '192.168.1.196:18003'} , {_id: 2, host: '192.168.1.194:18003'} ]}
rs.initiate(config)
rs.status()
192.168.1.194
分片1的复制集
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18001 --replSet shard1 --dbpath /data/mongodb/data_shard1 --logpath /data/mongodb/log/mongod_shard1.log --logappend --maxConns 10000
分片3的复制集
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18003 --replSet shard3 --dbpath /data/mongodb/data_shard3 --logpath /data/mongodb/log/mongod_shard3.log --logappend --maxConns 10000
192.168.1.195
分片2的复制集
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18002 --replSet shard2 --dbpath /data/mongodb/data_shard2 --logpath /data/mongodb/log/mongod_shard2.log --logappend --maxConns 10000
分片1的复制集
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18001 --replSet shard1 --dbpath /data/mongodb/data_shard1 --logpath /data/mongodb/log/mongod_shard1.log --logappend --maxConns 10000
192.168.1.196
分片3的复制集
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18003 --replSet shard3 --dbpath /data/mongodb/data_shard3 --logpath /data/mongodb/log/mongod_shard3.log --logappend --maxConns 10000
分片2的复制集
# /usr/local/mongodb/bin/mongod --fork --shardsvr --port 18002 --replSet shard2 --dbpath /data/mongodb/data_shard2 --logpath /data/mongodb/log/mongod_shard2.log --logappend --maxConns 10000
连接其中一台服务器的路由
# /usr/local/mongodb/bin/mongo 192.168.1.191:18000
mongos> use admin
mongos> db.adminCommand({addShard : "shard1/192.168.1.191:18001,192.168.1.194:18001,192.168.1.195:18001",maxsize:20480}) //增加分片,增加20G空间
mongos> db.adminCommand({addShard : "shard2/192.168.1.192:18002,192.168.1.195:18002,192.168.1.196:18002",maxsize:20480}) //增加分片,增加20G空间
mongos> db.adminCommand({addShard : "shard3/192.168.1.193:18003,192.168.1.196:18003,192.168.1.194:18003",maxsize:20480}) //增加分片,增加20G空间
mongos> db.adminCommand({listshards:1})
mongos> printShardingStatus()
添加测试库
mongos> db.runCommand({ enablesharding:"test" }) --设置分片存储的数据库
mongos> db.runCommand({ shardcollection: "test.users", key: { _id:1 }}) --设置分片的集合名称,且必须指定Shard Key,系统会自动创建索引
测试:
mongos> use test
mongos> for (var i = 1; i <= 500000; i++) db.users.insert({age:i, name:"chensuqian", addr:"Beijing", country:"China", job:"coder"})
mongos> db.users.stats()
mongos>
简单的参数说明:
–logpath 日志文件路径
–master 指定为主机器
–slave 指定为从机器
–source 指定主机器的IP地址
–pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
–logappend 日志文件末尾添加
–port 启用端口号
–fork 在后台运行
–only 指定只复制哪一个数据库
–slavedelay 指从复制检测的时间间隔
–auth 是否需要验证权限登录(用户名和密码)
–noauth 不需要验证权限登录(用户名和密码)
一共有4台机器,各自挂接一个存储,希望实现:
尽量节约存储高可用性存储大量数据
配置方案:
每一台机器做一个分片的主数据库每一台机器做一个分片的后备数据库每一台机器做一个分片的仲裁服务两个两个一组交叉作对方的后备有三台机器开配置服务有一台机器开路由服务(生产环境可以在每一台服务器上开路由服务,App服务器集群做负载均衡)
这样的话,任何一台服务器完全离线(或者交叉的两台服务器离线),都能保证整个系统正常运行。不过在服务器和服务器起来之后需要:
在升级成为主数据库的那个后备数据库上运行rs.StepDown(100)来让它让出主数据库的位置,因为每一个分片的活动数据库都应该由独立服务器担当,以获得最好的性能配置服务和后备数据库起来之后不需要做任何调整
http://www.linuxidc.com/Linux/2012-01/51011.htm
http://hi.baidu.com/noirwinter/item/248b27d7fe494852d63aaec5
http://blog.chinaunix.net/uid-26922865-id-3399138.html
http://www.cnblogs.com/cxd4321/archive/2012/05/18/2507777.html