复制集概念
Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary 节点,Secondary 节点从 Primary 节点同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用。
Primary 节点配置
配置 Primary 节点其实不复杂,配置服务的时候要加上--replSet setname
参数,其中setname
是复制集的名字,同一个组复制集应拥有相同的名字。然后再登录服务器,并运行以下命令:
rs.initiate()
Secondary 节点配置
配置 Secondary 节点也不复杂,配置服务器的时候也加上--replSet setname
参数,其中setname
要与主节点的名字保持一致。服务器启动以后,需要登录刚 Primary 节点,并运行以下命令:
rs.add('host:port')
** 注意:** 如果主服务器和从服务器部署在同一台机器上,那个这里的 host 的 ip 是不允许和主服务器的 ip 相同。主服务器的地址为 127.0.0.1 ,那么从服务器的地址使用 其实际 ip 地址就行了。
从 Secondary 节点读取数据
上面步骤完成后,一个复制集就配置好了,两边应该可以同步数据了。但 Secondary 节点是不允许读取数据。如果想要在 Secondary 节点读取数据,可以登录 Secondary 节点,并运行如下命令:
rs.slaveOk()
结语
通过上面的步骤,一个 MongoDb 复制集就配置好了。Primary 节点可以读写数据 ,Secondary 节点只能读取数据。需要注意的是,Secondary 节点的数据是从 Primary 节点的数据更新过来的,更新数据需要一定的时间。新写入的数据最好不要通过Secondary 节点读取。