美文网首页
mongo(一)

mongo(一)

作者: Freestyle_0f85 | 来源:发表于2019-12-23 19:35 被阅读0次

    第一章 关系型与非关系型

    NoSQL not only sql
    NoSQL,指的是非关系型的数据库。
    NoSQL有时也称作Not Only SQL的缩写
    是对不同于传统的关系型数据库的数据库管理系统的统称。
    对NoSQL最普遍的解释是”非关联型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的RDBMS。
    NoSQL用于超大规模数据的存储。
    这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

    今天我们可以通过第三方平台可以很容易的访问和抓取数据。
    用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。
    我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了
    NoSQL数据库的发展也却能很好的处理这些大的数据。

    第二章 mongo和mysql数据对比
    mysql mongo
    库 库
    表 集合
    字段 key:value
    行 文档

    name age job
    oldzhang 28 it
    xiaozhang 28 it
    xiaofei 18 student SZ

    {name:'oldzhang',age:'28',job:'it'},
    {name:'xiaozhang',age:'28',job:'it'},
    {name:'xiaozhang',age:'28',job:'it',host:'SZ'}

    第三章 MongoDB特点
    高性能:
    Mongodb提供高性能的数据持久性
    尤其是支持嵌入式数据模型减少数据库系统上的I/O操作
    索引支持能快的查询,并且可以包括来嵌入式文档和数组中的键

    丰富的语言查询:
    Mongodb支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间索引

    高可用性:
    Mongodb的复制工具,成为副本集,提供自动故障转移和数据冗余

    水平可扩展性:
    Mongodb提供了可扩展性,作为其核心功能的一部分,分片是将数据分,在一组计算机上

    支持多种存储引擎:
    WiredTiger存储引擎和、MMAPv1存储引擎和InMemory存储引擎

    第四章 mongo应用场景
    游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

    物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

    社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

    物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析

    视频直播,使用 MongoDB 存储用户信息、礼物信息等,用户评论

    电商场景,使用 MongoDB
    商城上衣和裤子两种商品,除了有共同属性,如产地、价格、材质、颜色等外,还有各自有不同的属性集,如上衣的独有属性是肩宽、胸围、袖长等,裤子的独有属性是臀围、脚口和裤长等

    第一章 安装mongodb
    1.规划目录

    #软件所在目录
    /opt/mongodb
    #单节点目录
    /opt/mongo_27017/{conf,log,pid}
    #数据目录
    /data/mongo_27017
    

    2.下载并解压

    yum install libcurl openssl -y
    上传软件
    tar xf mongodb-linux-x86_64-rhel70-4.0.14.tgz -C /opt/
    cd /opt/
    ln -s mongodb-linux-x86_64-rhel70-4.0.14 mongodb
    

    3.创建文件目录以及数据目录

    mkdir -p /opt/mongo_27017/{conf,log,pid}
    mv /data /data_bak
    mkdir -p /data/mongo_27017 
    

    第二章 配置启动mongo
    1.创建配置文件

    cat >/opt/mongo_27017/conf/mongodb.conf<<EOF
    systemLog:
      destination: file   
      logAppend: true  
      path: /opt/mongo_27017/log/mongodb.log
    
    storage:
      journal:
        enabled: true
      dbPath: /data/mongo_27017
      directoryPerDB: true
      wiredTiger:
         engineConfig:
            cacheSizeGB: 1
            directoryForIndexes: true
         collectionConfig:
            blockCompressor: zlib
         indexConfig:
            prefixCompression: true
    
    processManagement:
      fork: true
      pidFilePath: /opt/mongo_27017/pid/mongod.pid
    
    net:
      port: 27017
      bindIp: 127.0.0.1,10.0.0.51
    EOF
    

    2.启动mongo

    /opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf
    

    3.检查是否启动

    netstat -lntup|grep 27017
    

    第三章 配置登录mongo
    1.写入环境变量

    echo 'export PATH=/opt/mongodb/bin:$PATH' >> /etc/profile
    source /etc/profile
    

    2.登录
    mongo

    3.关闭

    方法1:
    使用localhost登录
    mongo localhost:27017
    use admin
    db.shutdownServer()
    
    方法2:
    mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    

    第三章 优化告警
    1.访问控制

    WARNING: Access control is not enabled for the database.
    Read and write access to data and configuration is unrestricted.
    解决方法:
    开启安全认证功能
    

    2.以root用户运行

    WARNING: You are running this process as the root user, which is not recommended.
    
    解决方法1:创建普通用并切换启动
    mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    useradd mongo
    echo '123456'|passwd --stdin mongo
    chown -R mongo:mongo /opt/
    chown -R mongo:mongo /data/
    su - mongo
    mongod -f /opt/mongo_27017/conf/mongodb.conf
    mongo
    
    
    解决方法2:创建systemcd启动文件
    cat >/lib/systemd/system/mongod.service<<EOF
    [Unit]
    Description=MongoDB Database Server
    Documentation=https://docs.mongodb.org/manual
    After=network.target
    
    [Service]
    User=mongod
    Group=mongod
    Environment="OPTIONS=-f /opt/mongo_27017/conf/mongodb.conf"
    ExecStart=/opt/mongodb/bin/mongod \$OPTIONS
    ExecStartPre=/usr/bin/chown -R mongod:mongod /opt/mongo_27017
    ExecStartPre=/usr/bin/chown -R mongod:mongod /data/mongo_27017
    PermissionsStartOnly=true
    PIDFile=/opt/mongo_27017/pid/mongod.pid
    Type=forking
    # file size
    LimitFSIZE=infinity
    # cpu time
    LimitCPU=infinity
    # virtual memory size
    LimitAS=infinity
    # open files
    LimitNOFILE=64000
    # processes/threads
    LimitNPROC=64000
    # locked memory
    LimitMEMLOCK=infinity
    # total threads (user+kernel)
    TasksMax=infinity
    TasksAccounting=false
    # Recommended limits for for mongod as specified in
    # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    useradd mongod -M -s /sbin/nologin
    systemctl daemon-reload
    systemctl start mongod
    

    3.关闭大内存页技术

    WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
    We suggest setting it to 'never'
    WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
    We suggest setting it to 'never'
    
    解决方法:
    临时解决:
    echo "never" >/sys/kernel/mm/transparent_hugepage/enabled
    echo "never" >/sys/kernel/mm/transparent_hugepage/defrag
    1.写入开机自启动:
    chmod +x /etc/rc.d/rc.local
    vim /etc/rc.d/rc.local
    echo "never" >/sys/kernel/mm/transparent_hugepage/enabled
    echo "never" >/sys/kernel/mm/transparent_hugepage/defrag
    验证:
    mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    mongod -f /opt/mongo_27017/conf/mongodb.conf 
    mongo 
    

    4.解决rlimits太低

    WARNING: soft rlimits too low. rlimits set to 31771 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
    解决方法1:
    vim /etc/profile
    ulimit -f unlimited
    ulimit -t unlimited
    ulimit -v unlimited
    ulimit -n 64000
    ulimit -m unlimited
    ulimit -u 64000
    
    生效配置:
    source /etc/profile
    验证:
    mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
    mongod -f /opt/mongo_27017/conf/mongodb.conf 
    mongo 
    
    解决方法2:创建systemcd启动文件启动
    

    相关文章

      网友评论

          本文标题:mongo(一)

          本文链接:https://www.haomeiwen.com/subject/nqdtoctx.html