设为首页 收藏本站
查看: 898|回复: 0

[经验分享] NoSQL -- Mongodb 安装 使用 副本集 备份恢复

[复制链接]

尚未签到

发表于 2018-10-25 10:42:12 | 显示全部楼层 |阅读模式
DSC0000.png

  Mongodb 是由c++编写的基于分布式文件存储的开源数据库系统,介于关系数据库和非关系数据库之间,支持查询语言很强大。高负载情况下,添加多个节点保证服务器性能,旨在为web应用提供可扩展的高性能存储;mongodb将数据存储为一个文档,由键值对(key=>value)组成,类似json对象。
  官网:https://www.mongodb.com/
  应用:
  CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB;
  Craiglist,上使用MongoDB的存档数十亿条记录;
  Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求;
  Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据;
DSC0001.png

DSC0002.png

  mongodb 安 装  
  www.apelearn.com/bbs/data/download/mongodb-org-3.0.tar.gz  //rpm包,大家 可以用
  官方提供的源只支持64位系统,安装的epel扩展源,可以安装mongodb2.4版本,此次我们安装3.0版本
  vim /etc/yum.repos.d/mongodb-org-3.0.repo  //加入如下内容
  [mongodb-org-3.0]
  name=MongoDB Repository
  baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
  gpgcheck=0
  enabled=1
  安装:yum install -y mongodb-org
  编辑:vim /etc/mongod.conf
  fork: true
  pidFilePath: /var/run/mongodb/mongod.pid
  bind_ip: 192.168.1.1,192.168.1.2,192.168.1.3  # 留空的话表示监听所有
  注:把这两行后面#开头的注释删掉,否则重启的时候会有问题
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
  echo never > /sys/kernel/mm/transparent_hugepage/defrag
  vim /etc/security/limits.conf //加入
  mongod soft nofile 64000
  mongod hard nofile 64000
  mongod soft nproc 32000
  mongod hard nproc 32000
  启动:service mongod start   # 启动的过程会比较慢,这是它在写数据 /var/lib/mongo
  启动失败的话,可用下面方式启动:mongod -f /etc/mongod.conf
  mongodb 的 使 用  
  mongodb 连接:
  mongo   //直接进入mongo的shell
  mongo --port 27018   //指定监听端口进入
  mongo --host 127.0.0.1   //连接远程mongo
  mongo -uusername -ppasswd   //设置验证时指定用户名密码,和mysql类似
  mongodb 用户管理:
  use admin    //切换到admin库下,admin和test是默认自带的俩库
  use teng12   //切换到teng12库,不存在会自动创建
  show users   //查看当前库下所有的用户
  db.system.users.find()   //列出所有用户,需要切换到admin库
  db.createUser({user:"admin",pwd:"123456",roles:[{role:'dbOwner',db:'userdb'}]})   //创建用户
  db.dropUser('admin') //删除用户
  用户角色:http://bbs.51cto.com/thread-1146654-1.html
  mongodb 库管理:
  db.stats()    //查看当前库的信息
  db.version()   //查看版本
  show teng12  //查看库,该库是空的所以无userdb,创建个集合就可看到
  db.createCollection('clo1')   //创建集合clo1,在当前库下面创建
  db.dropDatabase()   //删除当前库,要想删除某个库,必须切换到那个库下
  db.serverStatus()   //查看mongodb服务器的状态
  mongodb 集合:

  db.createCollection("mycol", { capped : true, autoIndexID : true,>  //语法:db.createCollection(name,options)
  name:集合的名字。options可选,用来配置集合的参数,参数如下
  autoindexID  true/false (可选)如果为true,自动创建索引_id字段的默认值是false;
  capped true/false (可选)如果为true,则启用封顶集合。达其最大值就会覆盖最早条目;
  size (可选)指定最大大小字节封顶集合。封顶如果是 true,那么你还需要指定这个字段。单位B
  max (可选)指定封顶集合允许在文件的最大数量
  mongodb 数据管理:
  db.Account.insert({AccountID:1,UserName:"123",password:"123456"})   //创建集合
  db.Account.update({AccountID:1},{"$set":{"Age":20}})   //更新
  show collections   //查看集合,或者使用show  tables
  db.Account.find()   //查看所有文档
  db.Account.drop()   //删除所有文档,即删除集合
  db.printCollectionStats()  // 然后查看集合状态
  db.Account.find({AccountID:1})   //根据条件查询
  db.Account.remove({AccountID:1})  //根据条件删除
  副 本 集  
  早期版本使用一主一从,类似mysql,但slave在此架构为只读,主宕机后,从无法自动切为换主;
  目前已由主从改为副本集,为一主(primary)多从(secondary,只读),支持以权重切换从为主,此架构中可建立一个仲裁(arbiter)角色,只负责裁决,不存储数据,此架构中读写数据都在主上,若实现负载均衡需要手动指定从库的目标server。
DSC0003.png

primarysecondarysecondary192.168.1.1192.168.1.2192.168.1.3  编辑:vim /etc/mongod.conf   # 之后重启三台机器
replication:  
##oplog大小
  
  oplogSizeMB: 20
  
##复制集名称
  
  replSetName: teng
  连接主,在主上运行命令mongo
  > use admin
  > config={_id:"teng",members:[{_id:0,host:"192.168.1.1:27017"},{_id:1,host:"192.168.1.2:27017"},{_id:2,host:"192.168.1.3:27017"}]}
  > rs.initiate(config)
  > rs.add("192.168.1.2")
  > rs.add("192.168.1.3")
  rs.status() //查看状态
  如果两个从上的状态为"stateStr" : "STARTUP", 则需要进行如下操作
  > var config=config={_id:"teng",members:[{_id:0,host:"192.168.1.1:27017"},{_id:1,host:"192.168.1.2:27017"},{_id:2,host:"192.168.1.3:27017"}]}
  > rs.reconfig(config)
  此时再次查看rs.status()会发现从的状态变为SECONDARY
  主上建库,建集合
  > use mydb
  > db.acc.insert({AccountID:1,UserName:"123",password:"123456"})
  > show dbs
  从上查看
  > show dbs
  若出现错误Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" },需要执行
  > rs.slaveok()
  更改权重模仿主宕机:
  默认三台机器权重都为1,如果任何一个权重设置为比其他的高,则该台机器马上切换为primary角色,所以我们预设三台机器的权重分别为:1:3,2:2,3:1
  在主上执行
  cfg = rs.conf()
  cfg.members[0].priority = 3
  cfg.members[1].priority = 2
  cfg.members[2].priority = 1
  rs.reconfig(cfg)
  这样的话,第二个节点将会成为候选主节点。
  主上执行:iptables -I INPUT -p tcp --dport 27017 -j DROP
  mongodb 备 份 恢 复  
  备份指定库:mongodump -h ip -d dbname -o dir   //-o后指定备份到哪里,它是一个目录
  备份所有库:mongodump -h ip -o dir   //不加数据库dbname,则备份所有库
  备份指定集合:mongodump -d mydb -c testc -o /tmp/testc   //-c指定集合名字
  导出指定集合:mongoexport -d mydb -c testc -o /tmp/testc.json   //-o后面跟的是一个文件名字
  恢复指定库:mongorestore -d mydb dir/   //-d 恢复库的名字,dir就是该库备份时所在的目录
  恢复所有库:mongorestore --drop dir/    //--drop可选,指恢复之前删除之前数据,不建议使用
  恢复集合:mongorestore -d mydb -c testc dir/mydb/testc.bson // -c 集合名,bson文件的路径
  导入集合:mongoimport -d mydb -c testc --file /tmp/testc.json
  -------------------------------------------------------------------------------------------------



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-626252-1-1.html 上篇帖子: mongodb维护常用命令 下篇帖子: mongodb3.X 副本集(集群)添加用户名认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表