Standalone mongod转化为shard cluster
来源:互联网 发布:开票软件的控制台 编辑:程序博客网 时间:2024/06/05 07:01
随着业务的发展,原来一个standalone的mongod可能需要转化为shard cluster,以便更多的机器可以加进来,解决存储空间不足和运行某些统计时内存不足的问题。(原创文章,转发请注明来自Clement-Xu的博客)
router (一个或多个mongos) --> config server (大于等于3个的奇数个mongod)
↓↓↓
data server(mongod1, mongod2...任意多个)
连接到该config server:
rs.add("192.168.0.12:27001")
sh.addShard( "192.168.0.31:27027" )
或:db.userOpLog.stats()
router (一个或多个mongos) --> config server (大于等于3个的奇数个mongod)
↓↓↓
data server(mongod1, mongod2...任意多个)
具体转化步骤如下(假设正在运行中的standalone mongo的IP为:192.168.0.8,端口为缺省的:27017):
第零步、备份数据!
ssh <目标服务器>
cd /opt/backup/mongo备份到当前目录的dump文件夹下面:
mongodump --db <dbName> --collection <collectionName>
或:mongodump --db <dbName> --collection <collectionName> --port 27017
如果需要恢复数据:
mongorestore dump/
一、部署config server replica set:
启动第一个mongod作为config server replica set中的一员(假设ip为192.168.0.11):
mongod --config <config_file>
cd /opt
mkdir mongodb
cd mongodb
mkdir configsvr1
cd configsvr1
mkdir db (数据存储路径)
创建配置文件:
vi mongod.conf
systemLog:
destination: file
path: "/opt/mongodb/configsvr1/mongod.log"
logAppend: true
storage:
dbPath: "/opt/mongodb/configsvr1/db"
journal:
enabled: true
processManagement:
fork: true
pidFilePath: "/opt/mongodb/configsvr1/mongod.pid"
net:
port: 27001
setParameter:
enableLocalhostAuthBypass: false
sharding:
clusterRole: configsvr
replication:
replSetName: configReplSet
启动第一个config server:
mongod --config /opt/mongodb/configsvr1/mongod.conf
mongo --host 192.168.0.11 --port 27001
初始化replica set运行:
rs.initiate(
{
_id: "configReplSet",
configsvr: true,
members: [
{ _id : 0, host : "192.168.0.11:27001" }
]
}
)
修改开机启动脚本:
vi /etc/init.d/boot.local/usr/bin/sleep 10
/usr/bin/mongod --config /opt/mongodb/configsvr1/mongod.conf
添加其他成员:
rs.add("192.168.0.13:27001")
rs.status()
注:如果是后期添加,则需要修改mongos的配置文件,并重启。
二、部署mongos(服务器ip为:192.168.0.8,端口为:27017,跟正在运行的standalone mongo相同,以便无缝接替):
cd /opt/mongodb/mongos1创建配置文件(port设为27017,以接替正在运行的那个standalone mongod):
vi mongod.confsystemLog:
destination: file
path: "/opt/mongodb/mongos1/mongod.log"
logAppend: true
processManagement:
fork: true
pidFilePath: "/opt/mongodb/mongos1/mongod.pid"
net:
port: 27017
setParameter:
enableLocalhostAuthBypass: false
sharding:
autoSplit: true
configDB: configReplSet/192.168.0.11:27001
(configDB有多个的话用逗号分开,比如:configDB: configReplSet/192.168.0.11:27001,192.168.0.12:27001)
修改开机启动脚本:
vi /etc/init.d/boot.local/usr/bin/sleep 10
mongos --config /opt/mongodb/mongos1/mongod.conf
修改正在运行的standalone mongod配置文件,然后重启:
vi /etc/mongod.conf
修改port为27027
service mongod stop
service mongod start
启动mongos:
mongos --config /opt/mongodb/mongos1/mongod.conf三、加入第一个shard(就是那个正在运行的mongod)到cluster中:
连接到mongos:
mongo 192.168.0.8:27017/admin把standalone mongod加入到cluster中
sh.addShard( "192.168.0.8:27027" )
四、加入其它shard(mongod,假设ip为:192.168.0.21、31……,端口统一为:27027):
把一个mongod(standalone)作为一个shard加入到cluster中:
安装(略);
修改端口:
vi /etc/mongod.conf
修改port为27027
启动:
service mongod start
service mongod status
注册开机自动启动:
chkconfig mongod on
1、连接到mongos:
mongo 192.168.0.8:27017/admin
2、加入:
sh.addShard( "192.168.0.21:27027" )
五、选择某个collection来分片
注:缺省的分片机制是Ranged Sharding。
1、连接到mongos:
mongo 192.168.0.8:27017/admin
2、shard该collection所在的database:
sh.enableSharding("myLog")
3、选择一个shard key(最好能均匀分布并且可以连续获取,比如time),并为它创建索引:
use myLog
创建索引:
db.userOpLog.createIndex({"method" : 1, "ctime" : 1}, {backgroud: true})db.userOpLog.getIndexes()
对一个collection进行分片:
sh.shardCollection( "myLog.userOpLog", {"method" : 1, "ctime" : 1} )
如果成功,返回:{"ok":1}
5、查看balancer是不是在运行:
use myLog
sh.status()
或:db.printShardingStatus()
至此,大功告成!
取消分片:
参考:https://jira.mongodb.org/browse/SERVER-9845
参考:
https://docs.mongodb.org/manual/tutorial/convert-replica-set-to-replicated-shard-cluster/
0 0
- Standalone mongod转化为shard cluster
- mongodb shard cluster centos 7
- centos7开机启动mongodb shard cluster
- mongo cluster of replicate set and shard
- Spark standalone cluster模式部署实践
- ./mongod
- mongod
- shard
- 使用mongodb shard cluster构建高可用的系统架构
- [mongodb]shard cluster(分片集群)搭建实录
- Flink HA 高可用 Standalone Cluster High Availability
- 集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间是什么关系
- ElasticSearch中,集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间的关系
- 在standalone-cluster模式上运行spark应用程序(用sbt打包)
- spark源码学习(六):standalone模式的cluster集群源码解读
- 汉字转化为拼音
- 汉字转化为拼音
- 汉字转化为拼音
- php获取服务器操作系统等信息
- Apache配置支持目录浏览
- 题目15:链表中倒数第K个结点
- Java jdbc批量多线程读取CVS文件入库性能优化篇
- Android必备神级工具(开发,插件,效率)
- Standalone mongod转化为shard cluster
- GitLab集成LDAP登录并解决OpenLDAP的memberOf问题
- RDD基本转换操作(5)–mapPartitions、mapPartitionsWithIndex
- MySQL Blob类型简介
- Android中的原生和 H5
- UCI用法说明(一种读写文件的方法)
- Android-PullRefreshLayout
- LeetCode----Two Sum
- 类方法创建button