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

[经验分享] mongodb配置主从(官方已经不建议使用)

[复制链接]

尚未签到

发表于 2018-10-25 11:15:05 | 显示全部楼层 |阅读模式
  官方网站:
  http://www.mongodb.org/
  关于mongodb的主从,官方已经不建议使用,目前建议使用副本集;
  但由于公司现有环境的原因,如果改用副本集,则需要修改数据,受限于现实的种种原因,只能做主从同步配置,所以这里记录一下mongodb的主从;
  mongodb的主从要注意的事项:
  1.主服务器挂掉,从服务器不会自动取代主服务器。
  2.主服务器挂掉后重启,从服务器则会重新同步数据,之前同步过来的数据被初始化。
  3.综合以上两点,mongodb要随时做好数据备份,以免造成无法弥补的数据丢失!!!
  MongoDB 安裝,主从配置
  一 MongoDB 安装
  [root@zabbix_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
  [root@zabbix_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz
  [root@zabbix_server src]# mv mongodb-linux-x86_64-2.0.0 /usr/local/mongodb
  [root@zabbix_server src]# mkdir /usr/local/mongodb/data
  [root@zabbix_server src]# touch /usr/local/mongodb/logs
  [root@zabbix_server bin]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
  [root@zabbix_server bin]#./mongo
  MongoDB shell version: 2.0.0
  connecting to:test
  > use test;
  switched to db test
  > exit
  bye
  [root@zabbix_server bin]# netstat -anlpt | grep mongo
  tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 11504/mongod
  tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 11504/mongod
  注意:
  如果报错
  -bash: /usr/local/mongodb/bin/mongod: cannot execute binary file
  说明你的服务器和mongodb 的版本不对应, 如果服务器是64位,下载x86_64的mongodb ,如果服务器是32位的, 下载i686的mongodb/
  二 MongoDB 主从配置
  1)实验环境
  主:192.168.0.14
  从:192.168.0.64
  2)时间同步
  两台机器做时间同步
  [root@zabbix_server src]# ntpdate time.windows.com
  3)启动服务
  master:192.168.0.14
  启动命令
  /usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
  slave:192.168.0.64
  启动命令
  /usr/local/mongodb/bin/mongod -slave -source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
  4)测试主从
  在主上插入数据
  测试1:
  测试1:
  1 在主库上插入数据
  [root@cacti bin]#./mongo
  MongoDB shell version: 2.0.0
  connecting to:test
  > db.foo.save({"id":123456,"name":'lizonggang'})
  > db.foo.find({"id":123456})
  { "_id": ObjectId("51c3f4b21399022afd992f39"),"id": 123456,"name":"lizonggang" }
  >
  2 在从上查看数据(已有在主上插入的数据,说明主从成功)
  [root@zabbix_server bin]#./mongo
  MongoDB shell version: 2.0.0
  connecting to:test
  > db.foo.find({"id":123456})
  { "_id": ObjectId("51c3f4b21399022afd992f39"),"id": 123456,"name":"lizonggang" }
  >
  测试2:
  1 在主库上插入数据
  > use elaindb
  switched to db elaindb
  > db.test.save({title:"This is a test!"})
  > db.test.find();
  { "_id": ObjectId("51c3f8f11a90c8da157c7f64"),"title":"This is a test!" }
  >
  2 在从库上验证数据
  [root@zabbix_server bin]#./mongo
  MongoDB shell version: 2.0.0
  connecting to:test
  > use elaindb
  switched to db elaindb
  > db.test.find();
  { "_id": ObjectId("51c3f8f11a90c8da157c7f64"),"title":"This is a test!" }
  > db.printReplicationInfo();
  this is a slave, printing slave replication info.
  source: 192.168.0.14:27017
  syncedTo: Fri Jun 21 2013 14:59:10 GMT+0800 (CST)
  = 9 secs ago (0hrs)
  >
  > db.printSlaveReplicationInfo();
  source: 192.168.0.14:27017
  syncedTo: Fri Jun 21 2013 14:59:30 GMT+0800 (CST)
  = 16 secs ago (0hrs)
  >
  测试3:
  在这个状态下,slave 下是不可以插入数据的
  > db.test.save({title:"This is slave test!"})
  not master
  5) 一些查询状态的语句
  1)查询库
  > show dbs;
  elaindb 0.0625GB
  local 0.125GB
  test 0.0625GB
  2)在从库上查询主库的地址
  > use local;
  switched to db local
  > db.sources.find()
  { "_id": ObjectId("51c3f5dd568d10529950b10d"),"host":"192.168.0.14:27017","source":"main","syncedTo": { "t": 1371797300000,"i": 1 } }
  >
  3)查看主从复制状态
  > db.printReplicationInfo();
  configured oplog size: 47.6837158203125MB
  log length start to end: 1375secs (0.38hrs)
  oplog first event time: Fri Jun 21 2013 14:30:35 GMT+0800 (CST)
  oplog last event time: Fri Jun 21 2013 14:53:30 GMT+0800 (CST)
  now: Fri Jun 21 2013 14:53:32 GMT+0800 (CST)
  >
  4)查看Collection状态
  > db.printCollectionStats();
  foo
  {
  "ns":"test.foo",
  "count": 1,
  "size": 56,
  "avgObjSize": 56,
  "storageSize": 4096,
  "numExtents": 1,
  "nindexes": 1,
  "lastExtentSize": 4096,
  "paddingFactor": 1,
  "flags": 1,
  "totalIndexSize": 8176,
  "indexSizes": {
  "_id_": 8176
  },
  "ok": 1
  }
  ---
  system.indexes
  {
  "ns":"test.system.indexes",
  "count": 1,
  "size": 64,
  "avgObjSize": 64,
  "storageSize": 4096,
  "numExtents": 1,
  "nindexes": 0,
  "lastExtentSize": 4096,
  "paddingFactor": 1,
  "flags": 0,
  "totalIndexSize": 0,
  "indexSizes": {
  },
  "ok": 1
  }
  ---
  >
  6)应急
  如果在应用中主挂掉了怎么办?
  这个情况就需要,停止从库, 把从库以主库的启动命令起来就可以了。
  1)停掉从库
  kill -9 进程号
  2)删除locat下文件
  rm mongodb/db/locat.*-rf
  3)启动从库
  /usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
  7) MongoDB 增,删,改,查
  [root@cacti bin]#./mongo
  MongoDB shell version: 2.0.0
  connecting to:test
  > db.test.insert({"Name":"ymind","age": 8 }); #在test数据库里插入数据
  >
  > db.test.find({"Name":"ymind" } ); #查询数据
  { "_id": ObjectId("51c4187090db4e4751a3cd05"),"Name":"ymind","age": 8 }
  > db.test.find({"age": 8} ); #查询数据
  { "_id": ObjectId("51c4187090db4e4751a3cd05"),"Name":"ymind","age": 8 }
  >
  >
  > db.test.update({"Name":"ymind"}, { "$set": { "age":"5" } } ); #修改数据
  > db.test.find({"Name":"ymind" } );
  { "Name":"ymind","_id": ObjectId("51c4187090db4e4751a3cd05"),"age":"5" }
  >
  > db.test.remove({"Name":"ymind" } ); #删除数据
  > db.test.find({"Name":"ymind" } );
  >
  >


运维网声明 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-626283-1-1.html 上篇帖子: 利用python测试mongodb副本集数据同步延迟 下篇帖子: NoSQL -- php应用redis、mongodb
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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