yum 安装 阿里镜像库 , 注意不要用阿里自带的系统 , 要用centos镜像
- # 创建一个 .repo 文件
- vi /etc/yum.repos.d/mongodb-org.repo
-
- # 添加内容
-
- [mongodb-org]
- name = MongoDB Repository
- baseurl = https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
- gpgcheck = 1
- enabled = 1
- gpgkey = https://www.mongodb.org/static/pgp/server-4.4.asc
-
- # 根据镜像版本进行选择对应的mongo版本
-
- 安装:
- yum install -y mongodb-org
下载方式二
从官网下载 社区版的 tgz文件
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
// 移动到usr/local/mongodb下
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
key文件生成(整个集群或者副本之间通信用,所有服务该文件要一致):
openssl rand -base64 128 > /opt/mongodb/keyFile
文件设置权限,权限太大报错:
chmod 400 mongod.key
mongod.conf
- systemLog:
- #MongoDB发送所有日志输出的目标指定为文件
- destination: file
- #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
- path: /file//server/mongodb/conf_27020/logs/mongod.log
- #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
- logAppend: true
- storage:
- #mongod实例存储其数据的目录,storage.dbPath设置仅适用于mongod。
- dbPath: /file//server/mongodb/conf_27020/data
- journal:
- #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
- enabled: true
- processManagement:
- #启用在后台运行mongos或mongod进程的守护进程模式
- fork: true
- #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
- pidFilePath: /file//server/mongodb/conf_27018/mongod.pid
- security:
- authorization: 'enabled'
- keyFile: /usr/local/mongodb/mongod.key
- clusterAuthMode: "keyFile"
- net:
- #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
- #服务实例绑定的IP
- bindIp: localhost,172.2.1.1
- #绑定的端口
- port: 27017
- replication:
- #副本集的名称
- replSetName: shard01
- sharding:
- #分片角色 shardsvr 数据副本 configsvr 配置副本
- clusterRole: shardsvr
一般集群3台服务起: 每台服务都部署 一主一从一配置(仲裁),如果只配置主从方案,当前文档的一个服务配置方式就是主从方案
每台服务的配置除了服务和集群副本名称基本一样,同一个服务器的集群副本一致,也可以都一样, conf文件夹我创建在bin同级目录 , 日志和数据(logs/data)文件夹自行创建


mongodb 分片集群
配置文件略有不同。配置副本使用
sharding:
#分片角色
clusterRole: configsvr一台服务器上部署一主一从一副本,副本集之间名称一致
两台主从配置一台配置服务,配置服务配置文件下面都一样
replication:
#副本集的名称
replSetName: config
sharding:
#分片角色 shardsvr 数据副本 configsvr 配置副本
clusterRole: configsvr
创建完成之后操作数据库进行主从/配置关联
./mongod -f ../conf/conf_27018/mongod.conf 主库
./mongod -f ../conf/conf_27019/mongod.conf 从库
./mongod -f ../conf/conf_27020/mongod.conf 配置服务 clusterRole值为configsvr主: 27018 (哪个执行rs.initiate() 哪个是主库)
从: 27019
配置: 27020
- 在bin目录下执行:
-
- # ./mongo --port 27018
-
- 初始化(执行该命令的端口mongo服务将会是主服务):
- # rs.initiate()
-
- 确定好主服务后:
- 切换到admin , 创建用户
- # use admin
-
- # db.createUser({
- user: "root",
- pwd: "123456",
- roles: [{ role: "root", db: "root" }]
- })
- 认证
- # db.auth("root","123456")
-
- 添加副本:
- # rs.add("localhost:27019")
- 添加仲裁
- # rs.addArb("localhost:27020")
-
- 进入从节点,标记为从库,注意:rs.slaveOk() 当前版本已经无效
- # rs.secondaryOk()
-
- 完成之后执行查看副本状态:
- # rs.status()
-
启动服务:
./mongod -f ../conf/conf_27018/mongod.conf
./mongod -f ../conf/conf_27019/mongod.conf
./mongod -f ../conf/conf_27020/mongod.conf
关闭服务
./mongod -f ../conf/conf_27018/mongod.conf -shutdown
./mongod -f ../conf/conf_27019/mongod.conf -shutdown
./mongod -f ../conf/conf_27020/mongod.conf -shutdown
搭建路由mongos配置mongos.conf:
- systemLog:
- #MongoDB发送所有日志输出的目标指定为文件
- destination: file
- #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
- path: /server/mongodb/mongos/logs/mongod.log
- #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
- logAppend: true
- processManagement:
- #启用在后台运行mongos或mongod进程的守护进程模式
- fork: true
- #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
- pidFilePath: /server/mongodb/mongos/mongod.pid
- security:
- keyFile: /usr/local/mongodb/mongod.key
- net:
- #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
- #bindIpAll:true
- #服务实例绑定的IP
- bindIp: localhost,127.0.0.1
- #bindIp
- #绑定的端口
- port: 27017
- sharding:
- #指定配置节点副本集 , 配置服务的一住二从
- configDB: hzxcConfg/localhost:27018,localhost.16:27019,localhost.16:27020
创建完成启动mongos
./mongos -f ../conf/mongos/mongos.conf
进入mongos中
./mongo --host 127.0.0.1 --port 27017
添加分片集,如果提示权限问题,先登录db.auth("username","password")
分片集名称/ip+端口号
- sh.addShard("shard02/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020")
- sh.addShard("shard01/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020")
开启分片:
- # 数据库开启分片
- sh.enableSharding("table_name")
hash分片 如: sh.shardCollection("table_name.test",{"id":"hashed"})
分片前先创建索引:
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
db.collection.createIndex(keys, options)

路由集
所有路由集的配置文件基本一致 , 启动后不需要配置 , 配置集会同步相关的表结构/分片信息 \
springboot配置集群链接
- spring:
- data:
- mongodb
- uri: mongodb://username:password@127.0.0.1:27017,127.0.0.2:27017,127.0.0.3:27017/test?authSource=admin&authMechanism=SCRAM-SHA-1