1.环境
Linux:CentOS 6.5
MongoDB:3.2.7
10.30.44.56 分片1主,分片2从
10.30.44.57 分片2主,分片1从
10.30.44.58 配置、仲裁、路由
2.下载mongodb
https://www.mongodb.com/download-center?jmp=nav#community
[root@VM6-56 ~]$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.7.tgz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 71.6M 0 527k 0 0 25212 0 0:49:40 0:00:21 0:49:19 23015
将下载的mongodb-linux-x86_64-3.2.7.tgz复制到另外两台机器上
[root@VM6-56 ~]$scp mongodb-linux-x86_64-3.2.7.tgz 10.30.44.57:/root
[root@VM6-56 ~]$scp mongodb-linux-x86_64-3.2.7.tgz 10.30.44.58:/root
3.安装mongodb(在三台机器上都执行)
[root@VM6-56 ~]# groupadd mongodb
[root@VM6-56 ~]# useradd -g mongodb mongodb
[root@VM6-56 ~]# passwd mongodb
[root@VM6-56 ~]# mkdir /u01/mongodb -p
[root@VM6-56 ~]# chown mongodb.mongodb /u01/mongodb
[root@VM6-56 ~]# chown mongodb.mongodb mongodb-linux-x86_64-3.2.7.tgz
[root@VM6-56 ~]# mv mongodb-linux-x86_64-3.2.7.tgz /u01/mongodb
[root@VM6-56 ~]# su - mongodb
[mongodb@VM6-56 ~]$ cd /u01/mongodb
[mongodb@VM6-56 mongodb]$ tar -zxvf mongodb-linux-x86_64-3.2.7.tgz
[mongodb@VM6-56 mongodb]$ mv mongodb-linux-x86_64-rhel62-3.2.7 mongodb327
[mongodb@VM6-56 mongodb]$ cd
[mongodb@VM6-56 mongodb]$ vi .bash_profile
export PATH=/u01/mongodb/mongodb327/bin:$PATH:$HOME/bin
3.创建目录
在三台机器上都执行以下命令:
[mongodb@VM6-56 mongodb]$ pwd
/u01/mongodb
[mongodb@VM6-56 mongodb]$ mkdir mongodb #创建mongodb的base目录
[mongodb@VM6-56 mongodb]$ cd mongodb
[mongodb@VM6-56 mongodb]$ mkdir data logs conf #创建数据 日志 配置目录
以下命令在56 57上执行:
[mongodb@VM6-56 mongodb]$ cd data
[mongodb@VM6-56data]$ mkdir shard1 shard2 #创建分片数据目录
以下命令在58上执行:
[mongodb@VM6-56 mongodb]$ cd data
[mongodb@VM6-56 data]$ mkdir shard1_arb shard2_arb config #创建分片1仲裁、分片2仲裁和配置库数据目录
4.配置文件
mongod的启动需要指定各种参数,这些参数可以写在文件里也可以在命令行指定,这里采用写在文件里的方式:
以下两个配置文件在56 57上执行:
[mongodb@VM6-56 mongodb]$ cd conf
[mongodb@VM6-56 conf]$ vi shard1.conf #在56 57上执行
port = 31001 #端口
dbpath = /u01/mongodb/mongodb/data/shard1 #数据目录
logpath = /u01/mongodb/mongodb/logs/shard1.log #日志文件
logappend = true #日志记录方式
pidfilepath = /u01/mongodb/mongodb/logs/shard1.pid #pid文件位置
directoryperdb = true
replSet = rep1 #副本集名
oplogSize = 1024 #操作日志大小,单位为M
fork = true #独立进程运行
storageEngine=wiredTiger #新存储引擎
shardsvr = true #是不是分片
#journal = true #是否记日志
[mongodb@VM6-56 conf]$ vi shard2.conf #在56 57上执行
port = 31002 #端口
dbpath = /u01/mongodb/mongodb/data/shard2 #数据目录
logpath = /u01/mongodb/mongodb/logs/shard2.log #日志文件
logappend = true #日志记录方式
pidfilepath = /u01/mongodb/mongodb/logs/shard2.pid #pid文件位置
directoryperdb = true
replSet = rep2 #副本集名
oplogSize = 1024 #操作日志大小,单位为M
fork = true #独立进程运行
storageEngine=wiredTiger #新存储引擎
shardsvr = true #是不是分片
#journal = true #是否记日志
以下三个配置文件在58上执行:
[mongodb@VM6-58 conf]$ vi shard1_arb.conf
port = 31001
dbpath = /u01/mongodb/mongodb/data/shard1_arb
logpath = /u01/mongodb/mongodb/logs/shard1_arb.log
logappend = true
pidfilepath = /u01/mongodb/mongodb/logs/shard1_arb.pid
directoryperdb = true
replSet = rep1
oplogSize = 1024
fork = true
storageEngine=wiredTiger
shardsvr = true
#journal = true
[mongodb@VM6-58 conf]$ vi shard2_arb.conf
port = 31002
dbpath = /u01/mongodb/mongodb/data/shard2_arb
logpath = /u01/mongodb/mongodb/logs/shard2_arb.log
logappend = true
pidfilepath = /u01/mongodb/mongodb/logs/shard2_arb.pid
directoryperdb = true
replSet = rep2
oplogSize = 1024
fork = true
storageEngine=wiredTiger
shardsvr = true
#journal = true
[mongodb@VM6-58 conf]$ vi config.conf
port = 31003
dbpath = /u01/mongodb/mongodb/data/config
logpath = /u01/mongodb/mongodb/logs/config.log
logappend = true
pidfilepath = /u01/mongodb/mongodb/logs/config.pid
directoryperdb = true
oplogSize = 1024
fork = true
storageEngine=wiredTiger
configsvr = true
#journal = true
[mongodb@VM6-58 conf]$ vi mongos.conf
port = 31010
#这没有数据目录
logpath = /u01/mongodb/mongodb/logs/mongos.loglogappend = true
pidfilepath = /u01/mongodb/mongodb/logs/mongos.pid
fork = true
configdb = 10.30.44.58:31003 #配置服务器
至此为止,一共在三台机器上产生了八个配置文件:
56上:shard1.conf shard2.conf
57上:shard1.conf shard2.conf
58上:shard1_arb.conf shard2_arb.conf config.conf mongos.conf
这些文件的内容大部分一样,只是config.conf里没有repSet项,因为配置服务器存放分片信息,与复本无关。路由服务器不存放数据,只使用内存,所以没有数据文件。这里配置参数只是简单的示例参数,可以使用集群工作,在生产环境上还要配置更多的参数。