• mongodb的linux环境搭建


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

     

    一、配置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();

    欢迎对it热情的同学,加qq进行技术讨论; QQ:850922253
  • 相关阅读:
    《Selenium自动化测试实战》新书上市,有需要朋友们可以了解下,欢迎大家多提宝贵意见
    OrchardCore 如何动态加载模块?
    性能测试基础知识体系
    职场新人如何快速融入团队
    技术之外的工程师另类成长指南
    4.17-线上-技术沙龙问题汇总答疑
    3.20-上海-技术沙龙问题汇总答疑
    推荐书单4.0:测试工程师破局之路
    从技术专家到技术管理,我对管理的思考
    chrome打开本地链接
  • 原文地址:https://www.cnblogs.com/zhangwensi/p/5976539.html
Copyright © 2020-2023  润新知