mongodb的linux环境搭建

时间:2021-12-20 02:38:07

简单阐述一下mongo集群的数据存储:
路由节点:通过这个节点来做源和存储的桥梁,都是经过这个端口
(可以参考配置文档里面的50000端口)
源头数据进来后,通过路由端口进来,随机分发在三个shard分片上(r1,r2,r3),如果分在r1 上(三个节点上都可以查到复制三份),则在r2和r3上就查不到;
也就是说三个分片上的任意一个数据节点拼起来就是一个整体的数据。

 mongodb的linux环境搭建

 

一、配置mongodb环境变量
[mongodb@node1 ~]$ echo "export PATH=$PATH:/data/mongodb/bin" >> ~/.bash_profile
[mongodb@node1 data]$ source ~/.bash_profile

关闭虚拟机防火墙:service iptables stop

二、启动

[mongodb@node1 ~]$ mongod ~~~~~~~(随便什么mongo命令 :mongo -port 10000)
mongod: /usr/lib64/libcrypto.so.10: no version information available (required by m
mongod: /usr/lib64/libcrypto.so.10: no version information available (required by m
mongod: /usr/lib64/libssl.so.10: no version information available (required by mong
mongod: relocation error: mongod: symbol TLSv1_1_client_method, version libssl.so.1n file libssl.so.10 with link time reference
注:无法启动,看到相应的提示后
解决:安装openssl即可,三台机器均安装openssl-devel
yum install openssl-devel -y

ubuntu下解决办法: apt-get install openssl apt-get install libssl-dev   centos下解决办法: yum -y install openssl openssl-devel


网络监控程序:
netstat -nutlp

关闭
pkill mongod

连接mongo -web试试:
http://192.168.59.133:27017

 

清理日志的方法:(此方式不用下线,直接可操作)
连接到指定的端口mongo -port 10000
use admin
db.runCommand({logRotate:1})
这样会从开一个日志文件,删除旧的即可

mongo清理空间:
--先登录50000删除表,(前几个月)

再删除后台文件:
先删备 再删主;

查看磁盘空间:
df -h

查看文件大小: ls -lht

一、维护操作创建集合和索引(登录每台机器的主节点)
1、use ivr2017

2、--新建批量log2017010开头集合

for(var i =20170101; i <= 20170101 ;i++){
db.createCollection("log"+i );
db.system.indexes.insert(
{ "v" : 1, "key" : { "caller" : 1 }, "name" : "caller_1", "ns" : "ivr2017.log"+i });
db.system.indexes.insert(
{ "v" : 1, "key" : { "id" : 1 }, "name" : "id_1", "ns" : "ivr2017.log"+i });
db.system.indexes.insert(
{ "v" : 1, "key" : { "uuid" : 1 }, "name" : "uuid_1", "ns" : "ivr2017.log"+i });
print("log"+i);
};

3、--批量清表(集合):删除log201701开头的集合
先将所有集合放入参数中,在for循环中用if正则来test(如果满足则返回1,不满足返回0--boolean)

var colls = db.getCollectionNames();
for(var i = 0; i < colls.length; i++){
if(/^log201701[0-9]*$/.test(colls[i])){
print(colls[i]);
db.runCommand({"drop" : colls[i]});
}};

 

MONGO集群的搭建配置方法:------------------------------------------------

 

三台服务器搭建分片+集群

一、机器规划
mongoA 172.16.12.83 路由节点 数据配置节点 数据节点 B/C备点
mongoB 172.16.12.86 路由节点 数据配置节点 数据节点 A/C备点
mongoC 172.16.12.89 路由节点 数据配置节点 数据节点 A/B备点

二、数据节点
172.16.12.83
建立数据目录
mkdir -p /data01/MongoData/shard1
mkdir -p /data01/MongoData/shard2
mkdir -p /data01/MongoData/shard3
mkdir -p /app/mongodb64/log
启动
mongod --port 10000 --replSet r1 --oplogSize 1000 --dbpath /data01/MongoData/shard1 --logpath /app/mongodb64/log/shard1.log -logappend --rest --httpinterface --fork
mongod --port 10001 --replSet r2 --oplogSize 1000 --dbpath /data01/MongoData/shard2 --logpath /app/mongodb64/log/shard2.log -logappend --rest --httpinterface --fork
mongod --port 10002 --replSet r3 --oplogSize 1000 --dbpath /data01/MongoData/shard3 --logpath /app/mongodb64/log/shard3.log -logappend --rest --httpinterface --fork

172.16.12.86
建立数据目录
mkdir -p /data01/MongoData/shard1
mkdir -p /data01/MongoData/shard2
mkdir -p /data01/MongoData/shard3
mkdir -p /app/mongodb64/log
启动
mongod --port 10002 --replSet r1 --oplogSize 1000 --dbpath /data01/MongoData/shard1 --logpath /app/mongodb64/log/shard1.log -logappend --rest --httpinterface --fork
mongod --port 10000 --replSet r2 --oplogSize 1000 --dbpath /data01/MongoData/shard2 --logpath /app/mongodb64/log/shard2.log -logappend --rest --httpinterface --fork
mongod --port 10001 --replSet r3 --oplogSize 1000 --dbpath /data01/MongoData/shard3 --logpath /app/mongodb64/log/shard3.log -logappend --rest --httpinterface --fork

172.16.12.89
建立数据目录
mkdir -p /data01/MongoData/shard1
mkdir -p /data01/MongoData/shard2
mkdir -p /data01/MongoData/shard3
mkdir -p /app/mongodb64/log
启动
mongod --port 10001 --replSet r1 --oplogSize 1000 --dbpath /data01/MongoData/shard1 --logpath /app/mongodb64/log/shard1.log -logappend --rest --httpinterface --fork
mongod --port 10002 --replSet r2 --oplogSize 1000 --dbpath /data01/MongoData/shard2 --logpath /app/mongodb64/log/shard2.log -logappend --rest --httpinterface --fork
mongod --port 10000 --replSet r3 --oplogSize 1000 --dbpath /data01/MongoData/shard3 --logpath /app/mongodb64/log/shard3.log -logappend --rest --httpinterface --fork

三、数据配置节点
mkdir -p /app/mongodb64/config
数据配置程序(三台机器都起)
mongod --configsvr --dbpath /app/mongodb64/config --port 40000 --logpath /app/mongodb64/log/config.log -logappend --fork

四、路由节点(选一台即可)
mongos --port 50000 --configdb 172.16.12.83:40000,172.16.12.86:40000,172.16.12.89:40000 --logpath /app/mongodb64/log/mongos.log -logappend --httpinterface --fork

五、复制集配置
登陆172.16.12.83,命令
mongo -port 10000
cfg = { _id:'r1', members:[{_id:0, host:'172.16.12.83:10000' },{_id:1, host:'172.16.12.86:10002' },{_id:2, host:'172.16.12.89:10001' }]};
rs.initiate(cfg)
登陆172.16.12.86,命令
mongo -port 10000
cfg = { _id:'r2', members:[{_id:0, host:'172.16.12.86:10000' },{_id:1, host:'172.16.12.89:10002' },{_id:2, host:'172.16.12.83:10001' }]};
rs.initiate(cfg)
登陆172.16.12.89,命令
mongo -port 10000
cfg = { _id:'r3', members:[{_id:0, host:'172.16.12.89:10000' },{_id:1, host:'172.16.12.83:10002' },{_id:2, host:'172.16.12.86:10001' }]};
rs.initiate(cfg)

六、分片配置

任意一台机器上,命令
mongo --port 50000
sh.addShard( "r1/172.16.12.83:10000,172.16.12.86:10002,172.16.12.89:10001" )
sh.addShard( "r2/172.16.12.83:10001,172.16.12.86:10000,172.16.12.89:10002" )
sh.addShard( "r3/172.16.12.83:10002,172.16.12.86:10001,172.16.12.89:10000" )

补充:查看当前分片信息

查看下当前的sharding信息:

mongos> db.printShardingStatus();

移除已设置的分片:

mongos> db.runCommand( { removeShard :"r3" } );

七、对某个库或者集合进行分片

对某个库进行分片(#激活数据库和集合的分片)
sh.enableSharding("db_test") --对库分片
db.runCommand({shardcollection:"student",key:{_id:1}}) --对集合分片

八、设置均衡器

mongos> sh.setBalancerState(true);
mongos>
mongos> sh.enableBalancing("student");
mongos>

 

--备节点也能查看数据,运行命令
rs.slaveOk();