[[400571]]
MongoDB 是可用当前比较流行的文档型数据库,其拥有易使用、主制易扩展、从复功能丰富、可用性能卓越等特性。主制
主节点会记录写有关的从复操作,读操作不记录。这些操作记录在local数据库中的oplog.admin和slave两个集合。slave记录从节点信息。
从节点会定时去连接主节点,获取主节点的操作日志从而执行主节点一样的操作,从而达到数据同步。从节点的local数据库会有 source、me两个集合。source记录主节点信息,me记录从节点标识。
下面看一下怎么一步步搭建MongoDB的主从复制节点:
准备两台机器 10.43.159.56 和 10.43.159.58。10.43.159.56当作主节点, 10.43.159.58作为从节点。
分别下载MongoDB安装程序包。在10.43.159.56上建立文件夹/data/MongoDBtest/master,10.43.159.58建立文件夹/data/MongoDBtest/slave。
在10.43.159.56启动MongoDB主节点程序。注意后面的这个 “ –master ”参数,标示主节点:
mongod –dbpath /data/MongoDBtest/master–master
输出日志如下,成功:
[initandlisten] MongoDB starting :pid=18285 port=27017 dbpath=/data/MongoDBtest/master master=1
在10.43.159.58启动MongoDB从节点程序。关键配置:指定主节点ip地址和端口 –source 10.43.159.56:27017 和标示从节点 –slave参数:
mongod –dbpath /data/MongoDBtest/slave–slave –source 10.43.159.56:27017
输出日志如下,成功:
[initandlisten] MongoDB starting : pid=17888port=27017 dbpath=/data/MongoDBtest/slave slave=1
日志显示从节点从主节点同步复制数据 :
[replslave] repl: from host: 10.43.159.56:27017
这样,主从结构的MongoDB集群就搭建好了,是不是很简单?
下面我们来看看这个集群能做什么?先登录到从节点shell上,执行插入数据:
mongo 127.0.0.1:27017
> db.testdb.insert({ "test3":"testval3"});
not master
可以看到 MongoDB的从节点是只能读,不能执行写操作的。
那么如果主服务器挂掉,从服务器可以接替工作吗?
可以试一下,强制关掉主节点上的MongoDB进程,登录在从节点上,再次执行插入数据:
> db.testdb.insert({ "test3":"testval3"});
not master
看来从节点并没有自动接替主节点的工作,那就只有人工处理了,停止从节点,再以master的方式启动从节点,由于从节点上数据跟主节点一样,此时从节点是可以替代主节点工作的,这属于人工切换。
此外,我们可以搭建多个从节点,实现数据库的读写分离,比如主节点负责写,多个从节点负责读,对于移动APP,绝大部分操作都是读操作,可以实现负荷分担。
责任编辑:武晓燕 来源: 后端Q MongoDB高可用数据库(责任编辑:时尚)
节能元件(08231.HK)年度由亏转盈64.6万美元 每股盈利0.04美仙
四川省资阳市1—4月新签约项目41个 协议投资额247.86亿元
兴达国际(01899.HK)发布公告:预期2020年纯利同比减少50%
塔牌集团(002233.SZ):回购期满 已累计回购股份2871.3526万股