mongodb主从的主从复制,在自己测试的过程中从服务器无法同步主服务器,这是什么原因?求大佬帮忙,谢谢

主从模式下当主节点发生异常的時候从节点不能升级为主节点继续提供服务(即故障转移),并且需要显示的指定主节点和从节点但是当数据量不是特别大,并且数據的重要性并不是那么强的情况下也可以使用单机或者主从模式。不如我们之前的项目使用mongodb主从存储用户行为日志数据。而日志数据並非全量的数据全量数据放在阿里云的OSS上,可以使用定时任务安装时间随时获取指定时间段内的数据。这时候就可以使用单节点或者主从模式

    1)、副本集有一个限制就是当集群节点数限制不能超过11个,所以当需要副本集的数量超过限制的时候可以使用主从模式当然這样的话说明数据量或者访问量是相当大的了,则不应该继续使用副本集而是分片

    由于最近服务器资源短缺,所以在一台服务器上模拟搭建三个节点的mongodb主从副本集需要在为每个mongodb主从创建mongo.conf配置文件,可参考之前写具体更多的mongo.config的更多配置信息可以参加./mongod --help。每个版本可能会有些许差异并且后面的版本会支持yml的配置方式(个人不是很喜欢使用yml的方式,确实配置一目了然但是不好查找问题)。

 

  我创建副本集的時候配置了如下信息:

  fork=true # 以守护程序的方式启用,即在后台运行 replSet=kevinDemo # 设置副本集名称以及关联的其他节点(只设置一个形成集群后会连接其怹节点) # 副本集配置文件 节点2 没有使用yml方式 fork=true # 以守护程序的方式启用,即在后台运行 # 副本集配置文件 节点3 没有使用yml方式 fork=true # 以守护程序的方式启鼡即在后台运行 

   分别使用mongod启动三台服务器的,启动后需要副本集中的各个成员都不知道彼此的存在需要使用全局变量rs(类似于db的全局變量),在有一个节点上进行配置并通过该节点告知其他节点配置信息。

 



则需要切换为admin数据库如下图所示:

由于设置了优先级,所以節点三自动成为主节点(master)其他节点为secondary节点,如上图在创建副本集的时候其实是可以使用rs全局变量进行设置的。并且在设置节点信息嘚时候还有很多选项将在后面的副本集配置细节中说明。当节点配置成功后可以允许rs.status() 查看副本集的明细信息:
 
 

  很多时候副本集需要动態的进行调整,比如增加rs.add和删除rs.remove节点、或者可以直接重新配置rs.reconfig副本集只是需要注意,只能在主节点上添加、删除、重配置节点信息
 



需偠链接到主节点后才能进行操作:
 




 





}

本文将介绍下mongodb主从主从配置及备份


mongodb主从 是一个基于分布式文件存储的数据库由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案
mongodb主从 是一个介于关系数据庫和非关系数据库之间的产品,是非关系数据库当中功能最丰富最像关系数据库的。

首先,主节点会把本服务的与写有关的操作记录下来,讀操来不记录,这些操作就记录在local数据库中的oplog.$admin这个集合中,这是一个固定集合,大小是可以配置的,主要是通过配置oplogSize这个参数来实现,单位是M,大小一般为磁盘剩余空间的5%左右.因为是固定集合所以当固定集合放满日志的时候,新进来的日志就会把最旧的日志覆盖掉,如果这个值设置的不合理,導致数据很快的被覆盖,而从节点没有来得及更新,这样就会产生数据不同步的情况.设置为主节点的local数据库有会有oplog.$admin与slave这两个集合.slave记录的是从节點的信息.
从节点与主节点的数据同步主要是从节点定时的会去连接主节点,请求主节点的操作日志,从而对自己的数据副表进行同样的操作来達到数据的同步.从节点的local数据库中会多了source与me这两个集合,source是记录主节点的信息,me是记录从节点的标识


我这里准备了2台机器作为演示机
# 设置数据攵件的存放目录
# 设置日志文件的存放目录及其日志文件名
# 设置端口号(默认的端口号是 27017)
# 设置为以守护进程的方式运行即在后台运行
部署包从主库上拷贝过来
# 设置数据文件的存放目录
# 设置日志文件的存放目录及其日志文件名
# 设置为以守护进程的方式运行,即在后台运行
到這里基本主从就配置完了,你可以查看主节点的local数据库里有没有slave,oplog.$admin,从节点中有没有source,me这几个集合 接下来你可以主节点创建数据库插入数据看看从節点是否同步过去了.这些都可以通过查看日志来查看的
salve节点默认是无法读写的如果非要解决,方法如下:

-d: 需要备份的数据库实例例洳:test -o: 备份的数据存放位置,例如:/home/mongodump/当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据 -d: 需要恢复的数据库实例,例如:test当然这个名称也可以和备份时候的不一样,比如test2 --dir: 备份数据所在位置例如:/opt --drop: 恢复的时候,先删除当前数据然后恢复备份嘚数据。就是说恢复后,备份后添加修改的数据都会被删除
}

*由于使用的centos的系统版本原因安裝的mongodb主从是旧版2.4版本的*


添加仲裁节点,主节点挂了从节点自动变成主节点
配置文件修改,重启集群

这里就是配置文件replSet生效

配置成员在任意的节点执行rs.inicate(cfg),首先配置中间变量cfg


在仲裁节点启动查看状态

接下来就是添加auth认证,首先在primary节点添加用户

接下来,生成keyfile攵件

将keyfile文件拷贝到其他两个节点的相同目录下此时重启mongodb主从,就需要认证用户才能使用数据库

}

我要回帖

更多关于 mongodb主从 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信