mongodb的主从、集群的简单介绍
主从
mongodb可以设置主从数据库,主从之间读写分离。主数据库只写,从数据库只读。最好再设置一个用于仲裁的mongod(arbiter,占用资源很少,不需要独立的服务器),在主数据库宕机的情况下,arbiter会自动将从数据库升级为主数据库。主从服务器更多是为了数据的安全性,虽能提高一点读写性能,但效果不明显。需要注意的是,因为读写分离,在写入的时候,只写入到主数据库,从数据库是异步写入的。所以不能实时读取。
?
集群也叫分片集群,是将很多mongod集成在一起,每个mondod都只保存部分的数据,以提高整个数据库的负载能力,这是mongodb支持高负载的关键所在。
分片集群的构成元素有:
routes:对外暴露的节点,用于客户端访问,为了网络负载均衡,一般都会配置多个,客户端可以选择访问其中的任何一个Configure server:配置服务器,保存所有shard的metadata。如果它工作不正常,那么整个集群就不能用了。所以一般都配置3个configure server(3个的数据是一模一样的)shard:一个shard就是一个Replica set,也就是上面所说的主从数据库。真正的存储数据分片集群的shard肯定不止一个,否则就没有意义。数据分散存储于各shard中。以学生为例,可以根据学号,将学号1-100000的存储于一个shard中,学号100000-200000存储于另一个shard中。于是每个shard存储的数据量都不会太大,必要时候可以增加shard以支持学生数量的增加(这里只是举例,学生不会有太大的数量级)。
?