• MongoDB部署


    MongoDB 关系数据库与非关系数据库之间的产品

                                                          MongoDB 关系数据库与非关系数据库之间的产品
    
    • 1

    MongoDB 硬盘存储数据
    Mongodb里面库db文件夹 表叫做集合collection 行叫 document

    mongo 连接服务命令
    mongod 启动服务命令
    mongoexport导出
    mongoimport 导入

    /home/mongodb/home/bin/mongod -f /home/mongodb/home/mongodb.conf //启动mongodb服务
    /home/mongodb/home/bin/mongod -f /home/mongodb/home/mongodb.conf --shutdown //关闭mongodb服务
    cp -r /home/mongodb/home/bin/* /usr/local/sbin



    连接mongodb

    mongo --host 10.10.100.211 -port 27017 -u 用户 -p 密码 //连接mongodb
    mongo 172.25.91.61:27017/gamedb -ubaoxue -pBaoxue.123

    use 库名 创建数据库
    db.库名.insert({“name”:“菜鸟教程”})



    安装MongoDB

    wget  https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz  
    tar -xf mongodb-linux-x86_64-rhel70-4.2.1.tgz  
    cd mongodb-linux-x86_64-rhel70-4.2.1  
    ls    //这里面有一个bin的目录。里面是mongodb的脚本
    mkdir  /home/mongodb 
    cp -r ./bin    /home/mongodb 
    cd /home/mongodb 
    mkdir -p  home  logs   data 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    #修改配置文件
    vim ./home/mongodb.conf

    logpath=/home/mongodb/log/mongodb.log      //日志的路径
    logappend=true                                    //追加的方式记录日志信息
    dbpath=/usr/local/mongodb/data/db      //数据库目录
    fork=true                                    //守护进程方式运行
    bind_ip=10.10.100.211             //绑定IP  和 端口
    port=27017     
    auth=true     //登录验证,创建用户后使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7


    基本命令

    show dbs //查看已有库
    use 库名 //切换库
    db //查看当前库
    show collections 或 show tables //查看库下的已有集合
    db.dropDatabases() // 删除当前库

    db.t1.save({name:“bob”,age:21,school:“China”}) //插入数据 没有表会自动创建表
    db.t1.find()
    查看、统计、添加、删除文档 类似于MySQL 但 json格式
    db.集合名.find() //显示所有行 (默认输出20行)
    db.集合名.count() //显示所有文档个数
    db.集合名.insert({“name”:“jim”})
    db.集合名.find({条件},{定义显示字符}) //定义显示字符也可以不加
    db.集合名.findOne() //返回一条文档
    db.集合名.remove({}) //删除所有文档
    db.集合名.remove({条件}) //删除匹配所有文档
    db.集合名.drop() //删除集合 如果没有这个集合会报false假
    db.集合名.sava(“”,“”) //创建集合,不存在时自动创建 或者insert()也可以
    db.user.update({条件},{$set:{修改的字段}}) //默认只更新与匹配的第一行
    KaTeX parse error: Expected '}', got 'EOF' at end of input: …名.update({条件},{inc:{字段名:数字}})
    db.user.update({bane:“bin”},{$inc:{uid:2}})
    KaTeX parse error: Expected '}', got 'EOF' at end of input: …名.update({条件},{push:{数组:“值”}})
    KaTeX parse error: Expected '}', got 'EOF' at end of input: …名.update({条件},{addToSet:{数组名:“值”}})
    db.t1.sava({姓名:“王五”,存款:“null”}) //空值类型
    ({x:[“a”,“b”,“c”]}) //数据列表或数据集可以表示为数组
    插入数据可以使用以下,但一次只能插入一条数据
    db.t2.sava({_id:3,age:19})
    或 db.t2.insert({_id:3,age:19}) insert插入如果存在则修改数据

    一次插入多条数据可以使用
    db.集合名.insertMany([
    {name:“bob”,school:“China”},
    {name:“AI”,school:“China”},
    {name:“GUG”,school:“China”}
    ])

    显示第一行 db.集合名.findOne()
    db.user.find({_id:0,name:1,shell:1}) //0表示不显示 1表示显示
    db.user.find({_id:0,name:1,shell:1}).limit(3) //只显示显示name和shell且只显示前3行
    db.user.find({shell:“/sbin/nologin”},{_id:0,uid:1,ame:1}).sort({uid:-1}).limit(1)
    db.user.find({shell:“/sbin/nologin”},{_id:0,uid:1,ame:1}).sort({uid:-1}).count //统计行数
    db.user.find({_id:0,name:1,shell:1}).skip(2) //跳过前几行



    备份 与 恢复

                                                                       备份 
    
    • 1

    mongoexport -h 10.14.2.210 --port 27017 -u test -plzkj -d Game -c gameRecord -o /root/gameRecord.json //备份单个表
    mongodump -h 127.0.0.1 --port 27017 -u test -plzkj123 -d ChannelGame -o /home/ //备份整个库

                                                                       恢复
    
    • 1

    mongorestore -h 172.25.90.11 --port 27017 -u test -p 123456 -d Game --drop /opt/mongodb/data/Game // 恢复整个库
    mongorestore -h 172.25.90.11 --port 27017 -u test -p 123456 -d ChannelGame --drop /opt/mongodb/data/ChannelGame

    导出语法格式 1
    /home/mongodb/bin/mongoexport --host 10.10.100.211 --port 27017 -d 库名 -c 集合名 --type=json > 目录名/文件名
    /home/mongodb/bin/mongoexport --host 10.10.100.211 --port 27017 -d db1 -c t1 --type=json >/mdb/t1.json

    导入语法格式 (可以导入到其他库,没有库会自动创建库)
    /home/mongodb/bin/mongoimport --host 10.10.100.211 --port 27017 -d db1 -c t2 --type=json /mdb/t1.json

    备份数据库所有库当前目录下的dump目录下
    /home/mongodb/bin/mongodump --host 10.10.100.211 --port 27017
    备份时指定备份的库和备份目录
    mongodump --host 10.10.100.211 --port 27017 -d 数据库名字 -c 集合名 -o 目录

    查看bson文件内容(备份的文件以bson格式存在)
    bsondump ./D //查看bson文件

    /home/mongodb/bin/mongorestore --host 10.10.100.211 --port 27017 -d db3 -c user /mbak/db3/user.bson //(还原库)



    副本集

    搭建副本集

    1. 三台以上机器安装mongodb
      // 配置文件(都设置成为复制rs1副本集,rs1名字可以随便起,但三个都要一样)
      vim /home/mongodb/home/mongodb.conf
    logpath=/home/mongodb/log/mongodb.log      //日志的路径
    logappend=true                                    //追加的方式记录日志信息
    dbpath=/usr/local/mongodb/data/db      //数据库目录
    fork=true                                    //守护进程方式运行
    bind_ip=10.10.100.211             //绑定IP  和 端口   每台机器不同
    port=27017                              端口可以设置不同端口
    replSet=rs1                        //设置为副本集名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    配置节点信息

    在任意一台主机连接mongodb服务,编写json格式 执行如下操作

    mongo --host 10.10.100.211 --port 27017 //连接上去
    config={
    _id:“rs1”,
    members:[
    {_id:0,host:“ip地址:端口”}, //id为0为最先默认为主库
    {_id:1,host:“ip地址:端口”},
    {_id:2,host:“ip地址:端口”}
    ]
    }

    例如:
    config={
    _id:“bx”,
    members:[
    {_id:0,host:“172.25.91.76:27017”},
    {_id:1,host:“172.25.91.77:27017”},
    {_id:2,host:“172.25.91.78:27017”}
    ]
    }

    删除副本集

    rs.remove(“192.168.17.129:27021”)
    rs.remove (“10.10.100.216:27018”) //在连接到数据库后操作这个可以删除节点

    初始化副本集配置

    rs.initiate(config) //config是自己配置时的名称
    rs.status() //查看状态信息
    rs.isMaster() //查看是否是master库
    rs.conf() //显示副本集配置对象:

    添加完后可以打rs.status() //查看副本集状态

    验证副本集配置
    同步数据验证,允许从库查看数据
    -> db.getMongo().setSlaveOk()
    自动切换主库验证
    ->rs.isMaster()

    db.createUser(
    {
    user: “root”,
    pwd: “Baoxue.123”,
    roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
    }
    )



    配置文件参考

    #数据目录
    #auth=true
    dbpath=/home/mongodb/data
    
    #日志目录
    logpath=/home/mongodb/logs/mongodb.log
    pidfilepath=/home/mongodb/logs/master.pid
    
    #directoryperdb=true
    #日志输出方式
    logappend=true
    
    #副本集名称
    replSet=baidu
    
    #本机IP
    bind_ip=0.0.0.0
    
    #端口号
    port=27017
    
    #以后台方式运行
    fork=true
    
    #不预先分配内存
    noprealloc=true
    
    #操作文件最大值,单位 mb,默认硬盘百分之 5
    oplogSize=10000
    
    ##副本集认证key
    auth=true
    keyFile=/home/mongodb/etc/keyFile.key
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    【ASM】字节码操作 工具类与常用类 LocalVariablesSorter 源码介绍以及原理介绍
    实现数组扁平化
    Django国际化与本地化指南
    事务的四大特性
    DockerFile介绍与使用
    JS服务端技术—Node.js知识点锦集
    科普丨如何让语言芯片保持稳定性能
    Ray+GPU支持高性能计算
    22.12.1打卡 漫步校园 记忆化搜索
    通过自动化单元测试的形式守护系统架构
  • 原文地址:https://blog.csdn.net/weixin_41560737/article/details/126268054