0、配置文件

  1. systemLog:
  2. destination: file
  3. logAppend: true
  4. path: /var/log/mongodb/mongod1.log
  5. storage:
  6. dbPath: /data/mongod1
  7. journal:
  8. enabled: true
  9. wiredTiger:
  10. engineConfig:
  11. directoryForIndexes: true
  12. processManagement:
  13. fork: true # fork and run in background
  14. pidFilePath: /var/run/mongodb/mongod1.pid # location of pidfile
  15. timeZoneInfo: /usr/share/zoneinfo
  16. net:
  17. port: 27019
  18. bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  19. bindIpAll: true
  20. maxIncomingConnections: 500
  21. unixDomainSocket:
  22. enabled: true
  23. pathPrefix: /tmp/mongod1
  24. filePermissions: 0700
  25. security:
  26. keyFile: /etc/mongo/mongo.key //所有副本集中的keyfile需要一样
  27. authorization: enabled
  28. replication:
  29. replSetName: BigBoss //副本集需要配
  30. sharding: //分片集群需要配
  31. clusterRole: configsvr //配置服务器 shardsvr:数据服务器

1、单机版

1.1、windows

1.1.1、下载

下载地址
win32/mongodb-win32-x86_64-2008plus-ssl-4.0.0-signed.msi
win32/mongodb-win32-x86_64-2008plus-ssl-4.0.0.zip

1.1.2、启动

.\mongod --dbpath="" --logpath=""
不指定dapath默认C:\data\db\,logpath可以不指定,输出到控制台。

.\mongod -f mongod.conf
以配置文件启动

1.2、Linux

1.2.1、tar包安装

绿色版:下载地址
linux/mongodb-linux-x86_64-4.0.0.tgz

1.2.2、rpm安装

rpm包安装:阿里云镜像:https://mirrors.aliyun.com/mongodb/yum/redhat/
下载:
mongodb-org-tools-4.0.0-1.el6.x86_64.rpm 导入导出mongodump mongoexport …等等工具包
mongodb-org-shell-4.0.0-1.el6.x86_64.rpm 客户端mongo连接工具包
mongodb-org-server-4.0.0-1.el6.x86_64.rpm 服务端mongod程序包
mongodb-org-mongos-4.0.0-1.el6.x86_64.rpm 部署集群需要得包

1.安装
rpm -ivh mongodb*.rpm

2.修改配置
vim /etc/mongod.conf

  1. net:
  2. port: 27117
  3. bindIp: 0.0.0.0

1.2.3、启动

systemctl start mongod

**mongod -f /etc/mongod.conf**

1.3、连接

mongo --host 192.168.189.100 --port 27017


2、副本集

三个节点的副本

2.1、安装

每个节点上安装上mongodb,不要启动

2.2、配置

修改配置文件mongod.conf

  1. replication: # 这行解除屏蔽
  2. replSetName: rs0 # 这行加上,代表集合名字为tcl,其余的保持默认配置就好 (同一个副本集名字一样)

2.3、启动三台服务器

  1. mongo --host 192.168.189.100 --port 27017
  2. >cfg = {
  3. _id: "rs0",
  4. protocolVersion: 1, //协议版本,默认为0
  5. members: [
  6. {_id: 0, host: "192.168.56.102:27017"},
  7. {_id: 1, host: "192.168.56.104:27017"},
  8. {_id: 2, host: "192.168.56.101:27017"}
  9. ]
  10. }
  11. rs.initiate(cfg) 初始化副本集 // 定义配置文件初始化
  12. rs.status() 查看状态
  13. rs.status().members
  14. rs.conf() 查看副本集配置
  15. rs.isMaster() 是否为主
  16. db.isMaster()
  17. rs.slaveOk() allow queries on secondary nodes,从节点可以读,但不能写(默认不能读写) 在从客户端操作,重启失效
  18. db.getMongo().setSlaveOk() rs.slaveOk()效果类似
  19. rs.reconfig(cfg) 重新配置 只能在主服务器上执行,但状态被删除,可以使用
  20. rs.reconfig(cfg,{"force":true}) 强制重新配置,4.0.0不支持版本0,需要协议版本为1
  1. rs.initiate() //使用默认配置初始化,后加入副本集
  2. rs.status()
  3. rs.add( "192.168.56.102:27017" )
  4. rs.add( "192.168.56.102:27018" )

注意:默认secondary不能读写,
rs.slaveOk()可以读,但不能写
rs.reconfig(cfg):重新配置副本集名字要一样

  1. cfg = {
  2. _id: "rs0",
  3. members: [
  4. {_id: 0, host: "192.168.189.100:27017"},
  5. {_id: 1, host: "192.168.189.101:27017"},
  6. {_id: 2, host: "192.168.189.102:27017"}
  7. ]
  8. }

3、分片集群

集群架构:
mongos:数据库请求路由。负责接收所有客户端应用程序的连接查询请求,并将请求路由到集群内部对应的分片上。”mongos”可以有1个或多个。
config server: 配置服务,负责保存集群的元数据信息,比如集群的分片信息、用户信息。
MongoDB 3.4 版本以后,“config server” 必须是副本集
shard: 分片存储。将数据分片存储在多个服务器上。
有点类似关系数据库”分区表”的概念,只不过分区表是将数据分散存储在多个文件中,而sharding将数据分散存储在多个服务器上。一个集群可以有一个或多个分片。
MongoDB 3.6以后,每个分片都必须是副本集

  1. mongos
  2. 192.168.189.100:4000
  3. configServer:
  4. 192.168.189.100:27019
  5. 192.168.189.101:27019
  6. 192.168.189.102:27019
  7. shard1:
  8. 192.168.189.100:27017
  9. 192.168.189.101:27017
  10. 192.168.189.102:27017
  11. shard2:
  12. 192.168.189.100:27018
  13. 192.168.189.101:27018
  14. 192.168.189.102:27018

3.1、configServer副本集搭建

1.先把data和log目录建好
2.配置mongod.conf,其他服务器配置文件一样,端口改为27018、27019 。
注意:config服务器需要—configsvr

  1. systemLog:
  2. destination: file
  3. logAppend: true
  4. path: /usr/local/mongodb/log/mongod.log
  5. storage:
  6. dbPath: /usr/local/mongodb/data
  7. journal:
  8. enabled: true
  9. processManagement:
  10. fork: true # fork and run in background
  11. pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
  12. timeZoneInfo: /usr/share/zoneinfo
  13. net:
  14. port: 27017
  15. bindIp: 0.0.0.0
  16. replication:
  17. replSetName: rsConfig
  18. sharding:
  19. clusterRole: configsvr

3.启动三台mongod
mongod -f mongod.conf

4.连接任一台mongod,配置副本集

  1. mongo --host 192.168.189.100 --port 27017
  2. >cfg = {
  3. _id: "rsConfig",
  4. members: [
  5. {_id: 0, host: "192.168.189.100:27019"},
  6. {_id: 1, host: "192.168.189.101:27019"},
  7. {_id: 2, host: "192.168.189.102:27019"}
  8. ]
  9. }
  10. >rs.initiate(cfg)
  11. >rs.status()

3.2、shard1、shard2副本集搭建

1.建好相应目录
2.配置mongod.conf,其他的端口改下即可,shard2配置一样

  1. systemLog:
  2. destination: file
  3. logAppend: true
  4. path: /usr/local/mongodb/log/mongod.log
  5. storage:
  6. dbPath: /usr/local/mongodb/data
  7. journal:
  8. enabled: true
  9. processManagement:
  10. fork: true # fork and run in background
  11. pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
  12. timeZoneInfo: /usr/share/zoneinfo
  13. net:
  14. port: 27017
  15. bindIp: 0.0.0.0
  16. replication:
  17. replSetName: rsConfig
  18. sharding:
  19. clusterRole: shardsvr

3.启动三台mongod
mongod -f mongod.conf

4.连接任一台mongod,配置副本集

  1. mongo --host 192.168.189.100 --port 27017
  2. >cfg = {
  3. _id: "rs1",
  4. members: [
  5. {_id: 0, host: "192.168.189.100:27018"},
  6. {_id: 1, host: "192.168.189.101:27018"},
  7. {_id: 2, host: "192.168.189.102:27018"}
  8. ]
  9. }
  10. >rs.initiate(cfg)
  11. >rs.status()

3.3、搭建mongos

1.建好相应目录,mongos没有data目录
2.配置route.conf,没有dbpath属性

  1. systemLog:
  2. destination: file
  3. logAppend: true
  4. path: /usr/local/mongodb/log/route.log
  5. processManagement:
  6. fork: true # fork and run in background
  7. pidFilePath: /var/run/mongodb/route.pid # location of pidfile
  8. timeZoneInfo: /usr/share/zoneinfo
  9. net:
  10. port: 40000
  11. bindIp: 0.0.0.0
  12. sharding:
  13. configDB: rsConfig/192.168.189.100:27017,192.168.189.100:27018,192.168.189.100:27019

3.启动mongos
mongos -f route.conf

4.连接并添加分片

  1. >mongo --port 40000
  2. >sh.addShard("shard1/192.168.189.100:27018,192.168.189.101:27018,192.168.189.102:27018")
  3. >sh.addShard("shard1/192.168.189.100:27019,192.168.189.101:27019,192.168.189.102:27019")
  4. >sh.status()

5.为test数据库开启分片,选择一个片键age并指定一个集合mycoll对其进行分片

  1. >sh.enableSharding("test")
  2. >sh.shardCollection("test.mycoll", {"age": 1})
  3. sh.status()