概述
MongoDB的环境主要包括StandAlone,Replication和Sharding。
-
- StandAlone:单机环境,一般开发测试的时候用。
-
- Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry。
- Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似。
- Arbitry上面不存数据,只是为了凑数。选举算法要求节点数必须是奇数个,如果Primary+Secondary不是奇数个,就要用Arbitry凑数。
- 写数据只能在Primary,读数据默认也在Primary,可以配置成从Secondary读,可以选最近的节点。
- 数据在Primary上写成功之后,会将操作记录在oplog中,Secondary将oplog拷贝过去,然后照着操作一遍,就有数据了。
- Primary和Secondary上面的数据保证最终一致性,可以为写操作配置write concern,有几个级别:在Primary上写完就认为写成功;写到oplog后认为写成功;写到一个/多个/某个/某几个Secondary之后认为写成功,等等。
- Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry。
-
- Sharding:share nothing的结构,每台机器只存一部分数据。mongod服务器存数据,mongos服务器负责路由读写请求,元数据存在config数据库中。
因为数据量和机器量的原因,项目最终用了一个Primary,一个Secondary,一个Arbitry。我自己的开发环境是Ubuntu,测试环境是CentOS。安装的是64位的MongoDB。
- Sharding:share nothing的结构,每台机器只存一部分数据。mongod服务器存数据,mongos服务器负责路由读写请求,元数据存在config数据库中。
下载、解压
- 下载mongodb-linux-x86_64-rhel62-3.4.10.tgz.gz
- 解压:
#解压命令
tar -xzvf mongodb-linux-x86_64-rhel62-3.4.10.tgz.gz
创建并编辑配置文件
- 进行mongodb的根据目录
- 创建mongod.conf的配置文件,内容如下:
#mongod.conf路径为:mongodb解压目录/mongod.conf
net:
#bindIp: 127.0.0.1
port: 27017
systemLog:
destination: file
path: /app/mongodata/log/mongo.log
logAppend: true
storage:
dbPath: /app/mongodata/data
processManagement:
fork: true
#security:
# authorization: enabled
replication:
oplogSizeMB: 1024
replSetName: rs-test
另外三台也按些配置,然后分别启动
#启动命令
mongod -f mongod.conf
初始化集群
# 1、选择一台mongodb的服务,通过bin/mongo 命令进行控制台
bin/mongo
# 2、切换到 admin库
use admin
# 3、定义初始化配置
config={"_id" : "rs-test", "members" : [ { "_id" : 0, "host" : "mongodb-node1:27017" }, { "_id" : 1, "host" : "mongodb-node2:27017" }, { "_id" : 2, "host" : "mongodb-node3:27017" } ]}
# 4、进行初始化
rs.initiate(config);