`
guochunyang2004
  • 浏览: 80389 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MongoDB 3.2.x 集群

 
阅读更多

一图胜千言

5台分片服务器建立
解压:tar zxvf /data/mongo.tgz -C /data
mkdir /data/mongo/conf
mkdir /data/mongo/logs
mkdir /data/mongo/databases
mkdir /data/mongo/databases/shard1
mkdir /data/mongo/databases/shard2
mkdir /data/mongo/databases/shard3
vi /data/mongo/conf/shard1.conf
shardsvr=true
replSet=shard1
port=10001
dbpath=/data/mongo/databases/shard1
logpath=/data/mongo/logs/shard1.log
directoryperdb=true
storageEngine=wiredTiger
wiredTigerCacheSizeGB=2
syncdelay=30
wiredTigerCollectionBlockCompressor=zlib
oplogSize=2048
logappend=true
journal=false
slowms=200
fork=true
rest=true
httpinterface=true
vi /data/mongo/conf/shard2.conf
shardsvr=true
replSet=shard2
port=10002
dbpath=/data/mongo/databases/shard2
logpath=/data/mongo/logs/shard2.log
directoryperdb=true
storageEngine=wiredTiger
wiredTigerCacheSizeGB=2
syncdelay=30
wiredTigerCollectionBlockCompressor=zlib
oplogSize=2048
logappend=true
journal=false
slowms=200
fork=true
rest=true
httpinterface=true
vi /data/mongo/conf/shard3.conf
shardsvr=true
replSet=shard3
port=10003
dbpath=/data/mongo/databases/shard3
logpath=/data/mongo/logs/shard3.log
directoryperdb=true
storageEngine=wiredTiger
wiredTigerCacheSizeGB=2
syncdelay=30
wiredTigerCollectionBlockCompressor=zlib
oplogSize=2048
logappend=true
journal=false
slowms=200
fork=true
rest=true
httpinterface=true

5台配置服务器建立
mkdir /data/mongo/conf
mkdir /data/mongo/logs
mkdir /data/mongo/databases
mkdir /data/mongo/databases/config
vi /data/mongo/conf/config.conf
configsvr=true
replSet=config
port=20000
dbpath=/data/mongo/databases/config
logpath=/data/mongo/logs/config.log
directoryperdb=true
logappend=true
storageEngine=wiredTiger
profile=1
slowms=200
fork=true
maxConns=20000

N台路由服务器建立(本例一台)
vi /data/mongo/conf/mongos.conf
configdb=config/server1:20000,server2:20000,server3:20000,server4:20000,server5:20000
port=40000
logpath=/data/mongo/logs/mongos.log
logappend=true
maxConns=20000
fork=true

每台服务器确认安装需要的类库
确认是否有库文件/usr/lib64/libnetsnmpagent.so.20
ls -lhtr /usr/lib64/libnetsnmpagent.so.20
没有则安装
yum -y install net-snmp-libs

mongodb内存设置
查看:cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
临时设置:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
永久vi /etc/rc.d/rc.local启动mongo之前加入:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
启动mongodb命令
/data/mongo/bin/mongod -f /data/mongo/conf/shard1.conf
/data/mongo/bin/mongod -f /data/mongo/conf/shard2.conf
/data/mongo/bin/mongod -f /data/mongo/conf/shard3.conf
/data/mongo/bin/mongod -f /data/mongo/conf/config.conf
/data/mongo/bin/mongos -f /data/mongo/conf/mongos.conf
配置随系统自启动设置文件:/etc/rc.d/rc.local
重启:shutdown -r now 立刻重启

登录mongodb命令
/data/mongo/bin/mongo --host 127.0.0.1:10001
/data/mongo/bin/mongo --host server1:10001
/data/mongo/bin/mongo --host server1:10002
/data/mongo/bin/mongo --host server1:10003
/data/mongo/bin/mongo --host server1:20000
/data/mongo/bin/mongo --host server6:40000

关闭mongodb命令
/data/mongo/bin/mongod -f /data/mongo/conf/shard1.conf --shutdown
/data/mongo/bin/mongod -f /data/mongo/conf/config.conf --shutdown
或先查看再kill(mongos服务必须用此)
ps -ef|grep mongo|grep -v grep
kill -2 pid

初始化配置服务器集群
rs.initiate( {
_id: "config",
configsvr: true,
members: [
{ _id: 0, host: "server1:20000" },
{ _id: 1, host: "server2:20000" },
{ _id: 2, host: "server3:20000" },
{ _id: 3, host: "server4:20000" },
{ _id: 4, host: "server5:20000" }
]
} )
rs.add("server1:20000");
rs.add("server2:20000");
rs.add("server3:20000");

设置分片副本集
shard1执行
rs.initiate({"_id" : "shard1","version" : 1,
"members" : [{"_id" : 0,"host" : "server1:10001"},{"_id" : 1,"host" : "server2:10001"},{"_id" : 2,"host" : "server3:10001"},{"_id" : 3,"host" : "server4:10001"},{"_id" : 4,"host" : "server5:10001"}]
});
shard2执行
rs.initiate({"_id" : "shard2","version" : 1,
"members" : [{"_id" : 0,"host" : "server1:10002"},{"_id" : 1,"host" : "server2:10002"},{"_id" : 2,"host" : "server3:10002"},{"_id" : 3,"host" : "server4:10002"},{"_id" : 4,"host" : "server5:10002"}]
});
shard3执行
rs.initiate({"_id" : "shard3","version" : 1,
"members" : [{"_id" : 0,"host" : "server1:10003"},{"_id" : 1,"host" : "server2:10003"},{"_id" : 2,"host" : "server3:10003"},{"_id" : 3,"host" : "server4:10003"},{"_id" : 4,"host" : "server5:10003"}]
});
或添加分片副本:
rs.add("server4:10001");
rs.add("server5:10001");
rs.add("server4:10002");
rs.add("server5:10002");
rs.add("server4:10003");
rs.add("server5:10003");
移除副本
rs.remove("server1:10003");
rs.remove("server5:10003");
添加集群,mongos下执行
sh.addShard("shard1/server1:10001,server2:10001,server3:10001,server4:10001,server5:10001")
sh.addShard("shard2/server1:10002,server2:10002,server3:10002,server4:10002,server5:10002")
sh.addShard("shard3/server1:10003,server2:10003,server3:10003,server4:10003,server5:10003")
use admin
db.runCommand({addshard:"shard1/server1:10001,server2:10001,server3:10001,server4:10001,server5:10001"});
db.runCommand({addshard:"shard2/server1:10002,server2:10002,server3:10002,server4:10002,server5:10002"});
db.runCommand({addshard:"shard3/server1:10003,server2:10003,server3:10003,server4:10003,server5:10003"});

为集群开启分片(可不开启)
数据库开启分片
sh.enableSharding("database") 或
use admin
db.runCommand( { enableSharding: <database> } )
集合开启分片
1.首先选择一个 shard key ,所选择的片键会影响集群的效率.参见 选择片键的注意事项. 获得注意事项.
2.如果集合中已经包含有数据,需要使用ensureIndex() 在片键上创建索引.如果集合是空的,MongoDB会在 sh.shardCollection() 过程中自动创建索引.
3.使用sh.shardCollection()方法来为一个集合启用分片,语法如下:
sh.shardCollection("<database>.<collection>", shard-key-pattern)
示例:
sh.shardCollection("records.people", { "zipcode": 1, "name": 1 } )
sh.shardCollection("people.addresses", { "state": 1, "_id": 1 } )
sh.shardCollection("assets.chairs", { "type": 1, "_id": 1 } )
sh.shardCollection("events.alerts", { "_id": "hashed" } )
use admin
db.runCommand({"shardcollection":"foo.bar","key":{"uid":1}});
db.runCommand({"shardcollection":"test.person","key":{_id:'hashed'}})

其他操作和常用命令
查看集群分片
sh.status() db.printShardingStatus() db.stats() db.serverStatus()
use admin
db.runCommand({listshards:1})
use config
db.databases.find();
db.shards.find();
移除分片
db.runCommand( { removeshard: "shardX" } )
移动数据库到分片
db.runCommand({movePrimary:"lessonplan",to:"shard3"})
创建用户和角色db.createUser() db.createRole()
web访问mongodb
http://server5:41000/databaseName/collectionName/

Centos Mongodb 工具
MobaXterm Personal Edition 多任务命令行工具
NoSQL Manager for MongoDB MongoDB UI工具
Robomongo MongoDB UI工具

Mongodb数据库同步
系统自带方法
db.copyDatabase(<from_dbname>, <to_dbname>, <from_hostname>);
copyDatabase 源服务器也可能是 slave/secondary。
copyDatabase 不是原子性的操作: 如果在复制的过程中,源服务器数据库修改了,
目标服务器接收的document和更新的源服务器会有所不同。
这个命令必须运行于目标服务器
这个命令不会给源服务器或者目标服务器加锁。两个服务器都允许进行读写操作。

其他工具
全量同步
mongosync -h server1:27017 --to server2:27020
增量同步
mongosync -h server1:27017 --to server2:27020 --oplog -s 1369406664,1
"初始化"同步(全量+增量+实时)
mongosync -h server1:27017 --to server2:27020 --oplog
同步一段时间范围内的数据
mongosync -h server1:27017 --to server2:27020 --oplog -s 1369811325,1 -t 1369811373,1

常用命令
1、关闭mongo实例 ./mongod --dbpath=/home/mongo/dbs/shard/data/shard1 --shutdown
2、设置副本节点可以读数据:db.getMongo().setSlaveOk();
3、查看分片情况:db.runCommand({listshards:1})
4、更改配置立即生效:rs.reconfig(config, { force: true})
5、查看mongo进程:ps -ef|grep mongod|grep -v grep , ps -ef | grep mongo
6、实时监控:./bin/mongostat -h 10.132.83.230:40000
7、查看集群状态:mongos> db.printShardingStatus() sh.status() db.serverStatus()
8、手动改变复制源
登录备份节点:use admin
db.adminCommand({"replSetSyncFrom":"新复制源"})
rs.syncFrom("新复制源")
9、主节点降为secondary
use admin
rs.stepDown(10)#单位为 秒
分享到:
评论

相关推荐

    mongodb的java驱动3.2版本

    10. **兼容性和升级**:Java驱动3.2版本与MongoDB 3.x系列服务器兼容,但请注意,随着MongoDB服务器的更新,驱动程序也需要相应升级以利用新特性并修复已知问题。 总的来说,MongoDB的Java驱动3.2版本为Java开发者...

    mongodb3.2.4说明文档

    自 MongoDB 3.2 版本起,官方不再提供 32 位版本的支持,用户需选择 64 位版本进行安装。这一决定主要是考虑到 64 位系统能更好地利用内存资源,从而提高数据库性能。 **2.3 教程** 文档提供了详细的安装教程,...

    mongodb-win32-i386-3.2.18.zip

    1. **分片集群**:MongoDB 3.2加强了分片集群功能,允许用户将数据分散在多个物理节点上,以实现水平扩展和高可用性。这对于处理大规模数据非常有帮助。 2. **新的聚合框架**:在3.2版本中,MongoDB提供了更强大的...

    mongo服务端程序,包含3/4版本

    这里的“3/4版本”可能是指MongoDB的3.x系列和4.x系列版本。每个主要版本都包含了重大的改进和新特性,这些改进有助于提升数据库的整体性能、可靠性和功能性。 ### 版本间的差异 #### MongoDB 3.x系列 - **3.0**...

    mongodb 手册,帮助文件。

    **1.5 安装 MongoDB on OS X** - **环境准备**:确保系统为 OS X。 - **安装步骤**: - 使用 Homebrew 包管理器安装 MongoDB。 - 配置启动脚本。 - 启动 MongoDB 服务。 **1.6 安装 MongoDB on Windows** - **...

    mongodb-src-r3.2.0.源码 压缩包

    8. **安全与认证**:MongoDB支持多种安全协议,如SCRAM-SHA-1和X.509。源码分析可以帮助我们理解权限控制和身份验证的实现细节。 此外,3.2版本还引入了一些新的特性,如: - **BSON C++库升级**:提供更强大的...

    mongoose各个版本

    3. **mongoose-5.x**:在这个版本中,Mongoose进一步增强了对MongoDB新特性的支持,如交易(Transactions)、聚合管道(Aggregation Pipeline)的改进、以及对MongoDB 4.0引入的分片集群(Sharding)和多文档事务的...

    MongoDB 应用场景与最佳实践.docx

    如果你英语不是很好,可以从看书开始,强烈推荐《MongoDB 实战 第二版》,因为这本书是 3.x 版本的,相对来说内容比较新。然后《MongoDB 权威指南 第二版》,这本内容蛮多的,不过已经过时了。《MongoDB 应用设计...

    Node与Express开发.pdf

    17 3.2 草地鹨旅行社网站 ................................................................................................................... 18 3.3 初始步骤 ..............................................

    mongodb使用心得简单总结

    - **集群与分片**:MongoDB支持分布式部署,能够进行数据分片以实现水平扩展。 - **跨平台**:MongoDB由C++编写,支持Windows、Mac OS X和Linux等多种操作系统。 - **高性能**:MongoDB设计时考虑了性能优化,...

    数据库平台趋势报告.pdf

    TiDB利用Ansible简化了集群部署,并预告了TiSpark的推出,这将加强其在分布式事务处理中的能力。InfluxDB发布的V1.2.4版本,优化了时序数据处理的效率。 5. **大数据生态圈**:Hadoop发布了第三个测试版本,表明其...

    nosql_分布式存储及应用系统架构分析

    **3.2 用MMS Backup恢复MongoDB实例** - **从存储快照恢复:** 可以从历史快照中恢复数据。 - **从过去24小时内的时间点恢复复制集:** 支持按时间点恢复数据。 - **恢复单个数据库:** 支持对单个数据库进行恢复...

    ES_安装教程总结_Elasticsearch(2017-12-06)

    - **架构设计**: Solr采用传统的客户端-服务器架构,而Elasticsearch则采用了分布式架构,更适合大规模集群部署。 - **灵活性**: Elasticsearch提供了更灵活的索引管理和查询语法。 **6.2 与MongoDB的比较** - **...

Global site tag (gtag.js) - Google Analytics