Mongo 常用部署模式简单总结

MongoDB的部署模式

1.单机模式

(1)概述:单机模式一般用于测试或者本地实验,即启动一个单实例的Mongod进程,针对数据库进行增删改查操作。实例数据都是一个,一旦挂掉服务即停掉,数据丢失无法恢复。单机模式是不能用来部署生产的。

(2)部署方式:

mongod --dbpath [db path] --port [port num] --logpath [log path] --logappend --directoryperdb --fork 

ps:下载mongo包直接解压,然后启动Monod进程,然后通过mongo shell即可针对数据库进行CRUD。
mongod各个参数的含义参见:http://docs.mongodb.org/manual/reference/program/mongod/#bin.mongod
mongo各个参数的含义参见:http://docs.mongodb.org/manual/reference/program/mongo/#bin.mongo

2.主从模式

(1)概述:比单机的部署模式稍微健壮一点的主从(master-slave)的部署模式。slave结点从master结点全量的同步数据,是数据容错的一种方式,并且从结点可以提供读服务,从结点之间互相不通讯,主结点主要用来提供写服务,但是一旦主结点挂掉,集群则不会重新选举结点,集群将不能提供写服务。

(2)部署方式:

mongod --fork --master --oplogSize=[oplogsize] --port [port num] --dbpath [db path] --logpath [log path]

添加一个--master 参数声明结点为 Master 结点。

mongod --fork --slave --source [master host ip/port] --port [port num] --dbpath [db path] --logpath [log path]

添加一个--slave 参数声明为 Slave 结点。

3.副本集模式

(1)概述:副本集模式是必Master-slave更为健壮的一种部署模式,不仅主从结点之间可以通讯,而且从结点之间也可以通讯。从节点从主节点全量的备份数据,但与简单的 master-slave 部署模式不同的是,一旦主结点挂掉,从结点可以重新选举出新的结点,保障集群提供读写服务的稳定性。数据规模以及访问规模不大的集群可以采用这种部署模式。

(2)部署方式:

a.启动mongod实例:

mongod --port [port num] --dbpath [db path] --logpath [log path] --replSet [relSetname]

可以在集群的每台机器上按照上面指令启动 mongod 实例。

b.初始化副本集:

任选一台机器登陆后,执行 use admin 切换到admin用户,然后执行以下命令:

config = { _id:[relSetname], members:[
    {_id:0,host:[ip:portnum]},
    {_id:1,host:[ip:portnum]},
    {_id:2,host:[ip:portnum]}]
}

执行完毕以上命令之后,集群就实现了副本集模式。刚才登陆的这台机器就是默认的Master机器,其他的是Slave机器。
当主结点挂掉,从结点之间会重新进行选举,参考官网的一张示意图如下:

具体的配置可以参考这篇博客:http://blog.csdn.net/lantian0802/article/details/38663687

4.分片模式

(1)当随着数据量和访问增大之后,单机版的Mongo数据库可能已经不能支撑业务的发展,包括上面2种master-slave的部署模式,其实都是数据的在主备结点之间的一种全量同步,对于小量数据还行,但是真的到了海量数据的级别,单机的存储和CPU是不能承受住的,这个就是开启MongoDB的分布式数据库的特性,即数据的Sharding方式的部署。
抛张官网的示意图: 
数据sharding以collection为单位,提供了Range sharding 和 hash sharding 两种方式。同一份collection按照指定的策略将数据分布到多台机器上,并且将请求导向到数据存在的机器上,达到分布式数据的效果。部署结构如下:
 sharding的部署模式,每个结点都是一个mongod实例,其中有3中角色,Shards、Query Routers、Config servers。Shards是具体存储数据的结点,其实每个Shard结点为了保障稳定性又可以是一个副本集模式的Master-slave集群。Query Routers 将读写请求按照数据的Sharding策略从 Config Server获取目标Shard机器的信息,然后将读写请求导向到Shard机器。Config Servers 存储了机器的元数据。其包含了集群数据到 Shard的映射关系,以便 为 Query Routers 提供机器信息参考。

具体原理可以参考官网:http://docs.mongodb.org/manual/core/sharding-introduction/

(2)部署方式: a.配置config机器:

mongod --configsvr --dbpath [db path] --port [port num] --logpath [log path] --fork --directoryperdb

b.启动路由机器:

mongos --configdb [ip:port,ip:port...] --port [port num] --logpath [log path] --fork

c.配置shard的分片数据集:

mongod --shardsvr --replSet shard1 --port [port num] --dbpath [db path] --logpath [log path] --directoryperdb --fork

详情参考文章:http://blog.csdn.net/lantian0802/article/details/42709453

ps:以上参考官网和博客大致总结了一下Mongo的集中部署模式,官网文档比较丰富,披露了很多基础细节有待研究,以上仅作简单汇总和知识扫描,后续针对技术细节做单个点的官网文档的翻译和理解总结。

你可能感兴趣的:(mongodb)