MongoDB是目前流行的文档型数据库,具有易用、易扩展、功能丰富、性能优异等特点。主节点会记录写相关的操作,但不会记录读操作。这些操作记录在本地数据库的oplog.admin和slave集合中。slave记录slave节点信息。从节点会定时连接主节点,获取主节点的操作日志并执行与主节点相同的操作,从而实现数据同步。从节点的本地数据库会有source和me两套。source记录主节点信息,me记录从节点ID。下面我们一步一步看如何搭建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”参数,表示master节点:mongod–dbpath/data/MongoDBtest/master–master输出日志如下,success:[initandlisten]MongoDBstarting:pid=18285port=27017dbpath=/data/MongoDBtest/mastermaster=1在10.43.159.58启动MongoDB从节点程序。关键配置:指定主节点ip地址和端口–source10.43.159.56:27017标记从节点–slave参数:mongod–dbpath/data/MongoDBtest/slave–slave–source10.43.159.56:27017输出日志如下如下,success:[initandlisten]MongoDBstarting:pid=17888port=27017dbpath=/data/MongoDBtest/slaveslave=1日志显示从节点从主节点同步复制数据:[replslave]repl:fromhost:10.43.159.56:27017这样,主从结构的MongoDB集群就搭建好了,是不是很简单?让我们看看这个集群能做什么。首先登录从节点shell,插入数据:mongo127.0.0.1:27017>db.testdb.insert({"test3":"testval3"});notmaster可以看到MongoDB的slave节点只能读不能写操作。那么如果主服务器挂掉了,从服务器能接管工作吗?可以试试,强行关闭主节点上的MongoDB进程,登录从节点,再次执行插入数据:>db.testdb.insert({"test3":"testval3"});notmaster好像slave节点不会自动接管master节点的工作,所以只能手动处理,停止slave节点,然后启动slave节点作为master,因为slave节点上的数据与主节点不同的是,此时从节点可以代替主节点,这是一种手动切换。另外,我们可以搭建多个从节点,实现数据库的读写分离。比如主节点负责写,多个从节点负责读。对于移动应用来说,大部分操作都是读操作,可以实现负载分担。
