主从复制是MongoDB最常用的复制方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等。
最基本的设置方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址。运行mongod --master就启动了主服务器。运行mongod --slave --source master_address 则启动了从服务器,其中master_address就是上面主节点的地址。
MongoDB的复制至少需要两个服务器或者节点。其中一个是主节点,负责处理客户端请求,其它的都是从节点,负责映射主节点的数据。
主节点记录在其上执行的所有操作。从节点定期轮询主节点获得这些操作,然后对自己的数据副本执行这些操作。由于和主节点执行了
相同的操作,从节点就能保持与主节点的数据同步。
主节点的操作记录成为oplog(operation log)。oplog存储在一个特殊的数据库中,叫做local。oplog就在其中的oplog.$main集合
里面。oplog中的每个文档都代表主节点上执行的一个操作。需要重点强调的是oplog只记录改变数据库状态的操作。比如,查询就
不再存储在oplog中。这是因为oplog只是作为从节点与主节点保持数据同步的机制。
为了方便演示,可以在一台计算机上来模拟主节点和从节点。在D盘创建两个目录master和slave,master目录作为主节点的数据文件的目录,slave目录作为从节点的数据文件的目录。
注意:主节点和从节点要指定不同的端口。
启动主节点:mongod --dbpath d:\master --port 10000 --master
启动从节点:mongod --dbpath d:\slave --port 10001 --slave --source localhost:10000
启动成功后就可以连接主节点进行操作了,而这些操作会同步到从节点。
注意:主节点可以进行增删改查所有操作,而从节点只能进行查询的操作