MongoDB复制集副本集(Replica Set)搭建

MongoDB复制集副本集(Replica Set)搭建,第1张

mongo副本集/复制集是mongo高可用性特征之一,是有自动故障恢复功能的主要集群。由一个Primary节点和一个或多个Secondary节点组成。

复制是在多台服务器之间同步数据的过程,由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点

Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据

通过上述方式来保持复制集内所有成员存储相同的数据集,提供数据的高可用

Failover (故障转移,故障切换,故障恢复)

Redundancy(数据冗余)

避免单点,用于灾难时恢复,报表处理,提升数据可用性

读写分离,分担读压力

对用户透明的系统维护升级

主节点记录所有的变更到oplog日志

辅助节点(Secondary)复制主节点的oplog日志并且将这些日志在辅助节点进行重放(做)

各个节点之间会定期发送心跳信息,一旦主节点宕机,则触发选举一个新的主节点,剩余的辅助节点指向新的主

10s内各辅助节点无法感知主节点的存在,则开始触发选举

通常1分钟内完成主辅助节点切换,10-30s内感知主节点故障,10-30s内完成选举及切换

用户恢复数据,防止数据丢失,实现灾难恢复

人为误 *** 作导致数据删除,程序Bug导致数据损坏等

首要复制节点,由选举产生,提供读写服务的节点,产生oplog日志

备用(辅助)复制节点,Secondary可以提供读服务,增加Secondary节点可以提供复制集的读服务能力

在故障时,备用节点可以根据设定的优先级别提升为首要节点。提升了复制集的可用性

Arbiter节点只参与投票,不能被选为Primary,并且不从Primary同步数据

Arbiter本身不存储数据,是非常轻量级的服务。

当复制集成员为偶数时,最好加入一个Arbiter节点,以提升复制集可用性
Mongodb版本30以上, 三台服务器均为64位

三台服务器    --------  Primary(Centos7)、 Secondary(Centos7)、 Secondary(Debian8);架设IP分别为 19216811、12、 13

三台服务器关闭防火墙    -------- systemctl  stop firewalldservice

三台服务器修改mongo配置文件    --------  vi  /etc/mongodconf 

        侦听地址除了 localhost 外再加上服务器IP; 设置复制集名字(RepliSetName)。
开启mongod服务: mongod

三台服务器mongo各自初始化: rsinitiate()

Primary上副本集配置:

rsconf(配置名称,可随意取)={_id:"副本集名",member:[{_id:0,host:"IP:port",priority:2},{_id:1,host:"IP:port",priority:1},{_id:2,host:"IP:port",priority:1}]}

在初始化:rsinitiate(变量名,如下面的config)
Secondary上配置:

rsslaveOk()    #承认自己是Secondary

三台服务器上互相添加副本集成员:

rsadd("IP:port"), 如在Primary上 rsadd("19216812:27017"), rsadd("19216813:27017")

查看状态

rsstatus()
3、rs(replication set) 常用命令:

初始化副本集  ----  rsinitiate()

mongo查看状态 ---- rsstatus()

初始化副本集配置
rsconf = {_id: "rs0",

members: [{

_id: 0,

host: ":27017"}]}

rsinitiate( rsconf )

验证副本集配置  ----  rsconfig()

增加副本集成员  ----  rsadd("Ip:port")

移除副本集成员  ----  rsremove("IP:port")    #此步骤在Primary上 *** 作

改变成员变量的优先级
cfg = rsconf()

cfgmembers[0]priority = 3

cfgmembers[1]priority = 1

cfgmembers[2]priority = 2

rsreconfig(cfg)

配置延迟副本集
cfg = rsconf()

cfgmembers[0]priority = 0

cfgmembers[0]hidden = true

cfgmembers[0]slaveDelay = 3600

rsreconfig(cfg)
#  07/03/2017

java *** 作mongodb插入、读取、修改以及删除基础
本文主要讲述如何使用Java *** 作MongoDB以及了解MongoDB如何进行日常的数据库 *** 作。文章内容如下:第一步:安装MongoDB无需太多的繁杂步骤,你只要在MongoDB官方网站查看安装说明,根据自己的 *** 作系统进行选择适应的版本即可。第二步:启动MongoDB服务器这一步也很简单。运行mongodexe文件里的bin文件夹(我使用的是Windows OS系统),并启动MongoDB服务器。在默认的情况下服务器将启动端口27017,你需要在安装过程中创建将数据存储在/data/db目录里。第三步:启动MongoDB shell指令你可以通过运行mongoexe文件来启动MongoBD shell。第四步:利用MongoDB创建数据库利用MongoDB在MongoDB shell中输入以下内容建立一个名为“company”的数据库。use company 记住,除非你在MangoDB里保存了一些东西,否则它不会自动为你保存。使用下面的命令帮你查看可用的数据库,它会显示“company”尚未被创建。show dbs; 第五步:在MongoDB中保存数据使用下面的命令来保存employee 数据代表一个collection,将其命名为employees。employee = {name : "A", no : 1} dbemployeessave(employee) 通过使用下面的命令来查看collection里的数据。dbusersfind(); 如何使用Java *** 作MongoDB?下面是是一段简单的Java代码,你可以在这里获得mongo-java驱动。很简单,只需要使用下面的代码,重复上面的 *** 作即可。package comeviacblogmongo; import javanetUnknownHostException; import commongodbBasicDBObject; import commongodbDB; import commongodbDBCollection; import commongodbDBCursor; import commongodbMongo; import commongodbMongoException; public class MongoDBClient { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongogetDB("company"); DBCollection collection = dbgetCollection("employees"); BasicDBObject employee = new BasicDBObject(); employeeput("name", "Hannah"); employeeput("no", 2); collectioninsert(employee); BasicDBObject searchEmployee = new BasicDBObject(); searchEmployeeput("no", 2); DBCursor cursor = collectionfind(searchEmployee); while (cursorhasNext()) { Systemoutprintln(cursornext()); } Systemoutprintln("The Search Query has Executed!"); } catch (UnknownHostException e) { eprintStackTrace(); } catch (MongoException e) { eprintStackTrace(); } } } 结果如下:{ "_id" : { "$oid" : "4fec74dc907cbe9445fd2d70"} , "name" : "Hannah" , "no" : 2} The Search Query has Executed! 小结:随着互联网Web20网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展也非常迅速。本文浅显的谈及了如何使用Java *** 作MongoDB以及了解MongoDB如何进行日常的数据库 *** 作的问题。如果您是这方面的专家不妨与我们分享下。本文为CSDN编译整理,未经允许不得转载。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13517208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-23
下一篇 2023-08-23

发表评论

登录后才能评论

评论列表(0条)

保存