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

[经验分享] mongodb主从复制小结

[复制链接]

尚未签到

发表于 2018-10-27 08:47:20 | 显示全部楼层 |阅读模式
  在生产环境中单台数据库一般不能满足业务稳定性的需求,所以数据库主从复制架构在生产环境中很常见,用于主从复制也是Mongodb最常用的一种架构方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等,从而提高数据处理性能和冗余,常用架构模式是一主一从、一主多从、双主。今天我们主要对MONGODB的主从架构做一小结。
  环境说明:
  系统:CentOS6.4_x64
  主(Master):192.168.2.2
  从(Slave):192.168.2.3
  一、安装与基础配置
  #cd /usr/local
  #tar -zxvf  mongodb-linux-x86_64-2.2.6.tgz
  #mv  mongodb-linux-x86_64-2.2.6.tgz mongodb
  mongodb配置文件在  /usr/local/mongodb/conf
  主从数据库目录都在 /usr/local/mongodb/data
  日志目录都在       /usr/local/mongodb/logs
  #mkdir -p /usr/local/mongodb/conf
  #mkdir -p /usr/local/mongodb/data
  #mkdir -p /usr/local/mongodb/logs
  二、一主一从配置
  关键点:
  1)、在数据库集群中要明确的知道谁是主服务器,主服务器只有一台。
  2)、从服务器需要知道自己的数据源,也就是对于自己来说主服务器是谁。
  3)、master用来确定主服务器,slave来控制从服务器, source确定从服务的数据源。
  192.168.2.2  主
  conf下新建一文件mongodb.conf
  添加如下:
  port=27017
  fork=true
  logpath=/usr/local/mongodb/logs/mongodb.log
  logappend=true
  dbpath=/usr/local/mongodb/data
  maxConns=1024
  master=true
  oplogSize=2048
  192.168.2.3  从
  port=27017
  fork=true
  logpath=/usr/local/mongodb/logs/mongodb.log
  logappend=true
  dbpath=/usr/local/mongodb/data
  maxConns=1024
  slave=true
  source=192.168.2.2:27017
  autoresync=true
  三、启动MONGODB
  [root@localhost ~]# echo "PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile
  [root@localhost ~]# source /etc/profile
  [root@localhost ~]# mongod -f /usr/local/mongodb/conf/mongod.conf
  先启主再启从
  观察一下主的日志mongodb.log
DSC0000.jpg

  可以看到主数据库允许192.168.2.3从59172进行连接
  四、测试主从复制
  主:192.168.2.2
  创建一个数据库test,集合名也是test,插入一个字段AGE:18。然后再到从数据库执行show dbs;查看已经同步过去。
  [root@localhost conf]# mongo
  MongoDB shell version: 2.2.6
  connecting to: test
  Welcome to the MongoDB shell.
  For interactive help, type "help".
  For more comprehensive documentation, see
  http://docs.mongodb.org/
  Questions? Try the support group
  http://groups.google.com/group/mongodb-user
  > show dbs;
  local4.013671875GB
  > use test;
  switched to db test
  >  db.test.save({"AGE":18})
  > db.test.find()
  { "_id" : ObjectId("534f592ce7b706845c58740b"), "AGE" : 18 }
  > show dbs
  local4.013671875GB
  test0.203125GB
  从:192.168.2.3
  [root@localhost conf]# mongo
  MongoDB shell version: 2.2.6
  connecting to: test
  Welcome to the MongoDB shell.
  For interactive help, type "help".
  For more comprehensive documentation, see
  http://docs.mongodb.org/
  Questions? Try the support group
  http://groups.google.com/group/mongodb-user
  > show dbs
  local4.013671875GB
  test0.203125GB
  并查看从库上的日志,可以看到同步的行为
DSC0001.jpg

  五、思考与补充:
  1、如何指定要同步的库
  默认是同步所有的库,如果需要指定只同步某个库,可以在从库的配置文件中进行指定
  方法:only=test
  意思就是只同步TEST库
  2、从库上还可设置的其他参数
  slavedelay  从节点设置主数据库同步数据的延迟(单位是秒)
  fastsync    从节点以主数据库的节点快照为节点启动从数据库
  autoresync  如果不同步则自动从新同步数据库
  3、从服务器上查看同步状态
  >db.printReplicationInfo()
  this is a slave, printing slave replication info.
  source:   192.168.2.2:27017
  syncedTo: Thu Apr 17 2014 01:38:02 GMT-0700 (PDT)
  = 10 secs ago (0.04hrs)
  4、备份与恢复
  任何数据库都需要备份与恢复,这个你懂的。
  备份:
  >mongodump -h dbhost -d dbname -o dbdirectory
  -h:MongDB所在服务器地址,例如:192.168.2.2,当然也可以指定端口号:192.168.2.2:27017
  -d:需要备份的数据库实例,例如:test
  -o:备份的数据存放位置,例如:/data/dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
  恢复:
  >mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
  -h:MongoDB所在服务器地址
  -d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
  --directoryperdb:备份数据所在位置,例如:/data/dump/test,这里为什么要多加一个test,而不是备份时候的dump,自己查看提示吧!
  --drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,谨慎使用!
  5、监控
  可以使用mongodb自带28017端口进行图形化监控
DSC0002.jpg



运维网声明 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-626975-1-1.html 上篇帖子: mongodb shard 下篇帖子: Mongodb的副本集Replica Set和分片Sharding
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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