一步步教你如何在centos配置mongodb集群
Admin 2023-09-23 群英技术资讯 1002 次浏览
今天我们来学习关于“一步步教你如何在centos配置mongodb集群”的内容,下文有详解方法和实例,内容详细,逻辑清晰,有需要的朋友可以参考,希望大家阅读完这篇文章后能有所收获,那么下面就一起来了解一下吧。
安装包:mongodb-linux-x86_64-3.4.6.tgz
安装路径:/usr/mongodb
服务器: 192.168.177.131/132/133
mongos | 20000 |
config server | 21000 |
shard1 | 20001 |
shard2 | 20002 |
shard3 | 20003 |
解压后重命名为mongodb,方便以后操作
mkdir -p mongodb/mongos/log mkdir -p mongodb/config-server/data mkdir -p mongodb/config-server/log mkdir -p mongodb/shard1/data mkdir -p mongodb/shard1/log mkdir -p mongodb/shard2/data mkdir -p mongodb/shard2/log mkdir -p mongodb/shard3/data mkdir -p mongodb/shard3/log |
其中data目录存放数据,log目录存放日志
mongos服务不存放数据,所以不需要数据目录,只需要log目录
vim /usr/local/mongodb/config-server.conf
systemLog: destination: file path: "/usr/local/mongodb/config-server/log/config-server.log" logAppend: true storage: dbPath: "/usr/local/mongodb/config-server/data" journal: enabled: true directoryPerDB: true net: port: 21000 processManagement: fork: true pidFilePath: "/usr/local/mongodb/config-server/config-server.pid" sharding: clusterRole: configsvr replication: replSetName: configServer |
冒号(:)和配置之间需要有空格
启动三台服务器
cd mongodb
bin/mongod -f config-server.conf
登录任意一台配置服务器,初始化
#连接
mongodb/bin/mongo --port 21000
config = {
_id : "configServer",
members : [
{_id : 0, host : "192.168.177.131:21000" },
{_id : 1, host : "192.168.177.132:21000" },
{_id : 2, host : "192.168.177.133:21000" }
]
}
#初始化副本集
rs.initiate(config);
#查看分区状态
rs.status();
vim /usr/local/mongodb/shard1.conf
systemLog: destination: file path: "/usr/local/mongodb/shard1/log/shard1.log" logAppend: true storage: dbPath: "/usr/local/mongodb/shard1/data" journal: enabled: true directoryPerDB: true net: port: 20001 processManagement: fork: true pidFilePath: "/usr/local/mongodb/shard1/shard1.pid" sharding: clusterRole: shardsvr replication: replSetName: shard1 |
启动三台服务器:
cd mongodb
bin/mongod -f shard1.conf
登陆任意一台服务器,初始化副本集
mongo --port 20001
#使用admin数据库
use admin
config = { _id : "shard1", members : [ {_id : 0, host : "192.168.177.131:20001" }, {_id : 1, host : "192.168.177.132:20001" }, {_id : 2, host : "192.168.177.133:20001" } ] } |
#初始化副本集
rs.initiate(config);
#查看分区状态
rs.status();
配置第二,三个分片副本集,方法同第六步。 注意端口改为20002 20003
systemLog: destination: file path: "/usr/local/mongodb/shard2/log/shard2.log" logAppend: true storage: dbPath: "/usr/local/mongodb/shard2/data" journal: enabled: true directoryPerDB: true net: port: 20002 processManagement: fork: true pidFilePath: "/usr/local/mongodb/shard2/shard2.pid" sharding: clusterRole: shardsvr replication: replSetName: shard2 |
systemLog: destination: file path: "/usr/local/mongodb/shard3/log/shard3.log" logAppend: true storage: dbPath: "/usr/local/mongodb/shard3/data" journal: enabled: true directoryPerDB: true net: port: 20003 processManagement: fork: true pidFilePath: "/usr/local/mongodb/shard3/shard3.pid" sharding: clusterRole: shardsvr replication: replSetName: shard3 |
启动三台服务器:
cd mongodb
bin/mongod -f shard2.conf
bin/mongod -f shard3.conf
登陆任意一台服务器,初始化副本集
mongo --port 20002
mongo --port 20003
#使用admin数据库
use admin
config = {
_id : "shard2",
members : [
{_id : 0, host : "192.168.177.131:20002" },
{_id : 1, host : "192.168.177.132:20002" },
{_id : 2, host : "192.168.177.133:20002" }
]
}
config = {
_id : "shard3",
members : [
{_id : 0, host : "192.168.177.131:20003" },
{_id : 1, host : "192.168.177.132:20003" },
{_id : 2, host : "192.168.177.133:20003" }
]
}
#初始化副本集
rs.initiate(config);
#查看分区状态
rs.status();
vim /usr/local/mongodb/mongos.conf
systemLog: destination: file path: "/usr/local/mongodb/mongos/log/mongos.log" logAppend: true net: port: 20000 bindIp: 0.0.0.0 processManagement: fork: true pidFilePath: "/usr/local/mongodb/mongos/mongos.pid" sharding: configDB: configReplSet/192.168.177.131:21000,192.168.177.132:21000,192.168.177.133:21000 |
启动三台服务器:
cd mongodb
bin/mongos -f mongos.conf
注意此处启动使用的是mongos
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
#登陆任意一台mongos
mongo --port 20000
#使用admin数据库
use admin
#串联路由服务器与分配副本集
sh.addShard("shard1/192.168.177.131:20001,192.168.177.132:20001,192.168.177.133:20001");
sh.addShard("shard2/192.168.177.131:20002,192.168.177.132:20002,192.168.177.133:20002");
sh.addShard("shard3/192.168.177.131:20003,192.168.177.132:20003,192.168.177.133:20003");
#查看集群状态
sh.status()
至此集群已经搭建完成。
连接mongos
bin/mongo --port 20000
首先启动某个Database(数据库)的Sharding(分片)功能
mongos> sh.enableSharding("test")
对testDB数据库里的collection logs进行shard,shard key是sn字段,shard策略是hashed。使用hashed策略旨在让mongodb将数据均匀分布,如果使用{"sn",1}进行range shard,数据会按照大小顺序分布,就会出现某个shard数据很多,其他的很少的现象。
mongos> sh.shardCollection("testDB.logs", { "sn" : "hashed" } )
查看shard信息
mongos> sh.status()
添加测试数据
mongos> use testDB
mongos> for(var i=1; i<=100000; i++){db.log.insert({sn:i, msg:'Message ' + i});}
等待一段时间
查看log的shard信息
mongos> db.logs.stats()
可以看到三个分片几乎平均的保存了数据。
33143 33755 33102
{
"sharded" : true,
"capped" : false,
"ns" : "testDB.logs",
"count" : 100000,
"size" : 5688895,
"storageSize" : 1773568,
"totalIndexSize" : 3944448,
"indexSizes" : {
"_id_" : 983040,
"sn_hashed" : 2961408
},
"avgObjSize" : 56,
"nindexes" : 2,
"nchunks" : 6,
"shards" : {
"shard1" : {
"ns" : "testDB.logs",
"size" : 1920351,
"count" : 33755,
"avgObjSize" : 56,
"storageSize" : 634880,
"capped" : false,
...
"ok" : 1
},
"shard2" : {
"ns" : "testDB.logs",
"size" : 1885397,
"count" : 33143,
"avgObjSize" : 56,
"storageSize" : 544768,
"capped" : false,
...
"ok" : 1
},
"shard3" : {
"ns" : "testDB.logs",
"size" : 1883147,
"count" : 33102,
"avgObjSize" : 56,
"storageSize" : 593920,
"capped" : false,
...
"ok" : 1
}
},
"ok" : 1
}
mongodb的启动顺序是,先启动配置服务器,在启动分片,最后启动mongos.
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/config-server.conf
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/shard1.conf
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/shard2.conf
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/shard3.conf
/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/mongos.conf
关闭时,直接killall杀掉所有进程
killall mongod
killall mongos
没有killall命令的使用<yum install psmisc>安装
关于“一步步教你如何在centos配置mongodb集群”的内容今天就到这,感谢各位的阅读,大家可以动手实际看看,对大家加深理解更有帮助哦。如果想了解更多相关内容的文章,关注我们,群英网络小编每天都会为大家更新不同的知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
linux关机命令的区别:1、shutdown命令用于安全关闭Linux系统;2、halt是最简单的关机命令,其实际上是调用【shutdown -h】命令;3、reboot作用是重新启动;4、init是所有进程的祖先,其进程号始终为1。
linux创建文件失败的原因:1、当前目录对应的磁盘空间不足;在某个目录下创建文件时,实际上是在这个目录对应的磁盘上操作,如果这个磁盘已经满了,自然就创建失败。2、inode不足;由于一个文件对应一个inode,当磁盘里的小文件过多时,就会出现block数量还很多,但是inode分配完了,也就是空间还很多,但是也无法创建,那是因为创建文件时,申请inode号失败。
之前有遍文章介绍过了at这个命令,它用来设置只执行一次的定时任务。今天,和大家看看周期性执行的定时任务。工作中,周期性的定时任务会经常用到,比如系统文件的定时备份、数据库文件的定时备份、处理那些长时间没付款的订单等等。
在linux中,s指的是“强制位权限”,位于user或group权限组的第三位置。如果在user权限组中设置了s位,则当文件被执行时,该文件是以文件所有者UID而不是用户UID执行程序;如果在group权限组中设置了s位,当文件被执行时,该文件是以文件所有者GID而不是用户GID执行程序。s权限位是一个敏感的权限位,容易造成系统的安全问题。
CentOS7安装LNMP环境
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008