mongodb配置主从模式

  Mongodb的replication主要有两种:主从和副本集(replica set)。主从的原理和mysql类似,主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。 
   现在mongodb官方建议用副本集替代主从复制,但是这不妨碍我们从主从复制入门,了解mongdob的replication。

什么是oplog:

  MongoDB 的Replication是通过一个日志来存储写操作的,这个日志就叫做oplog。 在默认情况下,oplog分配的是5%的空闲磁盘空间。通常而言,这是一种合理的设置。可以通过mongod --oplogSize来改变oplog的日志大小。 oplog是capped collection,因为oplog的特点(不能太多把磁盘填满了,固定大小)需要,MongoDB才发明了capped collection(the oplog is actually the reason capped collections were invented)。

  oplog的位置 oplog在local库: master/slave 架构下 local.oplog.$main。

 

主数据库配置(master.conf )

# 数据库文件存储位置
dbpath  = /data/db/master
# log文件存储位置
logpath = /data/log/mongodb/master/mongodb.log
# 使用追加的方式写日志
logappend = true
# 是否以守护进程方式运行
fork    = true
# 端口号
port    = 27017
# 是否启用认证
auth  = true
# 集群的私钥的完整路径,只对于Replica Set 架构有效(noauth = true时不用配置此项)
keyFile = /usr/local/mongodb/mongodb-keyfile
# diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
#diaglog        = 0
# 设置主从服务器
master = true
# 设置oplog的大小(MB)
oplogSize=2048

 

从数据库配置(slave1.conf) 

# 数据库文件存储位置
dbpath    = /data/db/slave1

# log文件存储位置
logpath    = /data/log/mongodb/slave1/mongodb.log

# 使用追加的方式写日志
logappend = true

# 是否以守护进程方式运行
fork    = true

# 端口号
port    = 27027

# 是否启用认证
auth    = true

# 集群的私钥的完整路径,只对于Replica Set 架构有效(noauth = true时不用配置此项)
keyFile = /usr/local/mongodb/mongodb-keyfile
# diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
#diaglog    = 0

# 设置主从服务器
slave = true

# 用于从节点,指定从节点的复制来源(主节点的IP+端口),格式为:<host><:port>
source =    127.0.0.1:27017    

 

注意:

  如果使用认证的方式启动服务(auth = true),那么要在主从服务器配置私钥。

//    在一台服务器上生成私钥
openssl rand -base64 745 > mongodb-keyfile

//    修改私钥的权限为可读写
chmod 600 mongodb-keyfile

//    将私钥拷贝到其余的服务器上
scp mongodb-keyfile root@xxx.xxx.xxx.xxx:/usr/local/mongodb/

  然后配置私钥路径,启动服务。

 

启动数据库:

/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/master.conf
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/slave1.conf

 

当启动slave后,slave端会自动进行初始化resync同步,可以在日志查看到同步信息:

2018-01-03T11:39:46.396+0800 I NETWORK  [thread1] waiting for connections on port 27027
2018-01-03T11:39:47.415+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:47.458+0800 I REPL     [replslave] resync: dropping database admin
2018-01-03T11:39:47.458+0800 I REPL     [replslave] resync: cloning database admin to get an initial copy
2018-01-03T11:39:47.481+0800 I COMMAND  [replslave] setting featureCompatibilityVersion to 3.4
2018-01-03T11:39:47.482+0800 I STORAGE  [replslave] copying indexes for: { name: "system.version", type: "collection", options: {}, info: { readOnly: false }, idIndex: { v: 1, key: { _id: 1 }, name: "_id_", ns: "admin.system.version" } }
2018-01-03T11:39:47.500+0800 I INDEX    [replslave] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
2018-01-03T11:39:47.500+0800 I INDEX    [replslave]      building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2018-01-03T11:39:47.504+0800 I INDEX    [replslave] build index done.  scanned 1 total records. 0 secs
2018-01-03T11:39:47.504+0800 I REPL     [replslave] resync: done with initial clone for db: admin
2018-01-03T11:39:47.505+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:48.506+0800 I REPL     [replslave] sleep 1 sec before next pass
2018-01-03T11:39:49.506+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:50.507+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:51.507+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:52.508+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:53.509+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:54.509+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:55.510+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:56.510+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:58.493+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:39:59.494+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:40:00.495+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:40:01.495+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017
2018-01-03T11:40:02.496+0800 I REPL     [replslave] syncing from host:127.0.0.1:27017

 

resync:

  当slave端落后过多的时候需要进行resync。resync会在master上加一个全局的写锁,会阻塞其它的写操作,直到resync结束。可以使用数据库命令进行resync:

use admin
db.runCommand({"resync":1})

 

转载于:https://www.cnblogs.com/shenshangzz/p/8183889.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值