MongoDB5.0.5集群

一、Windows 平台安装 MongoDB

1.1、下载MongoDB

下载地址:https://www.mongodb.com/try/download/community

1.2、安装MongoDB

双击"mongodb-windows-x86_64-5.0.5-signed.msi",单击“Next”
在这里插入图片描述
同意安装协议,单击“Next”
在这里插入图片描述
点击 “Custom(自定义)” 设置安装目录
在这里插入图片描述
选择安装位置,单击“Next”
在这里插入图片描述
修改服务配置,单击“Next”
在这里插入图片描述
不勾选 “install mongoDB compass” (当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装,下载地址:https://www.mongodb.com/download-center/compass,单击“Next”。
在这里插入图片描述
单击“Install”开始安装。
在这里插入图片描述
测试是否成功,打开cmd窗口,输入命令mongo
在这里插入图片描述

1.3、添加环境变量

右键"计算机",然后选择"属性",选择"高级系统设置",选择环境变量,在环境变量"系统变量"窗口下面的"Path"中添加环境变量,内容为安装位置下的bin目录的路径,这里我的路径是D:\Java\MongoDB\Server\5.0\bin
在这里插入图片描述
重新打开新的cmd窗口,输入命令mongo,安装成功。
在这里插入图片描述

1.4、服务启动/关闭命令

以管理员身份运行cmd,启动/关闭mongodb服务

# 启动mongodb服务
net start mongodb

# 关闭mongodb服务
net stop mongodb

二、Linux传统方式安装MongoDB

下载地址:https://www.mongodb.com/try/download/community,根据服务器的版本进行选择相应的MongoDB版本,这里以CentOS8为例。
在这里插入图片描述

2.1、5.0.5版本

## 下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-5.0.5.tgz

## 解压
tar -zxvf mongodb-linux-x86_64-rhel80-5.0.5.tgz

## 重命名
mv mongodb-linux-x86_64-rhel80-5.0.5 mongodb5.0.5

## 进入mongodb
cd mongodb5.0.5

## 修改数据日志文件路径
mkdir -p /opt/home/mongodb5.0.5/data
mkdir -p /opt/home/mongodb5.0.5/log
touch /opt/home/mongodb5.0.5/log/mongod.log

## 设置权限
chmod -R 777 /opt/home/mongodb5.0.5/data
chmod -R 777 /opt/home/mongodb5.0.5/log
chmod -R 777 /opt/home/mongodb5.0.5/log/mongod.log

## 进入mongodb安装的bin目录下
cd /opt/home/mongodb5.0.5/bin


## 创建mongodb.conf文件
vim mongodb.conf

## 添加下面的文件
#数据文件存放目录
dbpath = /opt/home/mongodb5.0.5/data
#日志文件存放地址
logpath =/opt/home/mongodb5.0.5/log/mongod.log
#端口
port = 27017 
#以守护程序的方式启用,即在后台运行
fork = true 
#需要认证。如果放开注释,就必须创建MongoDB的账号,使用账号与密码才可>远程访问,第一次安装建议注释
#auth=true 
#允许远程访问,或者直接注释,127.0.0.1是只允许本地访问
bind_ip=0.0.0.0 

## 配置环境变量
vim /etc/profile

## mongodb
export PATH=/opt/home/mongodb5.0.5/bin:$PATH

## 使配置文件生效
source /etc/profile

## 启动
./mongod --config ./mongodb.conf

## 测试
./mongo
> 1+2
3

2.2、4.4.10版本

## 下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.10.tgz

## 解压
tar -zxvf mongodb-linux-x86_64-rhel80-4.4.10.tgz

## 重命名
mv mongodb-linux-x86_64-rhel80-4.4.10 mongodb4.4.10

## 配置环境变量
vim /etc/profile

# mongodb
export PATH=/opt/home/mongodb4.4.10/bin:$PATH

## 使配置文件生效
source /etc/profile

## 修改数据日志文件路径
mkdir -p /opt/home/mongodb4.4.10/data
mkdir -p /opt/home/mongodb4.4.10/log
touch /opt/home/mongodb4.4.10/log/mongod.log

## 设置权限
chmod -R 777 /opt/home/mongodb4.4.10/data
chmod -R 777 /opt/home/mongodb4.4.10/log
chmod -R 777 /opt/home/mongodb4.4.10/log/mongod.log

## 进入mongodb安装的bin目录下
cd /opt/home/mongodb4.4.10/bin

## 创建mongodb.conf文件
vim mongodb.conf

#数据文件存放目录
dbpath = /opt/home/mongodb4.4.10/data
#日志文件存放地址
logpath =/opt/home/mongodb4.4.10/log/mongod.log
#端口
port = 27017 
#以守护程序的方式启用,即在后台运行
fork = true 
#需要认证。如果放开注释,就必须创建MongoDB的账号,使用账号与密码才可>远程访问,第一次安装建议注释
#auth=true 
#允许远程访问,或者直接注释,127.0.0.1是只允许本地访问
bind_ip=0.0.0.0 

## 启动
./mongod --config ./mongodb.conf

三、Docker方式安装MongoDB

## 搜索镜像
docker search mongodb
 
## 拉取镜像
docker pull mongo
 
## 查看本地所有镜像 
docker iamges 
 
## 创建并运行nginx容器
#  -p 标识来指定容器端口绑定到主机端口。
#  -v 参数挂载数据卷
docker run -itd --name mymongo -p 27017:27017 -v /data/mongo:/data/db mongo

## 查看正在运行的容器
docker ps

## 查看端口
netstat -lnp | grep 27017

## 进入容器
docker exec -it mymongo bin/bash

## 进入mongo
mongo

## 输出3
1+2

四、搭建副本集

## 检查端口运行情况 如果正在运行 关闭服务
netstat -lnp | grep 27017

## 切换到 /opt/home目录下
cd /opt/home/
 
## 将mongodb5.0.5复制三份
cp -r mongodb5.0.5/ mongodb1
cp -r mongodb5.0.5/ mongodb2
cp -r mongodb5.0.5/ mongodb3

## 创建数据目录
mkdir -p /data/mongodb/data1
mkdir -p /data/mongodb/data2
mkdir -p /data/mongodb/data3


## 进入mongodb1的bin目录
cd mongodb1/bin/

## 修改mongodb.conf配置文件
vim mongodb.conf 

## 修改内容如下 修改datapath、logpath目录和port端口号
#数据文件存放目录
dbpath = /data/mongodb/data1
#日志文件存放地址
logpath =/data/mongodb/log1.log
#端口
port = 27018
#以守护程序的方式启用,即在后台运行
fork = true
#需要认证。如果放开注释,就必须创建MongoDB的账号,使用账号与密码才可>远程访问,第一次安装建议注释
#auth=true 
#允许远程访问,或者直接注释,127.0.0.1是只允许本地访问
bind_ip=0.0.0.0
replSet=myreplace/[192.168.200.128:27019,192.168.200.128:27020]

## 其余两个同上 端口分别为 27018 27019 27020

分别连接三台MongoDB

./mongo --port 27018
./mongo --port 27019
./mongo --port 27020

配置副本集,连接任意节点

var config = { 
		_id:"myreplace", 
		members:[
		{_id:0,host:"192.168.200.128:27018"},
		{_id:1,host:"192.168.200.128:27019"},
		{_id:2,host:"192.168.200.128:27020"}]
}
## 初始化配置 
rs.initiate(config);

## 在主节点添加一条数据
use test;
db.test.insert({_id:1, name:'java'});
db.test.find();

## 设置客户端临时可以访问 分别在从节点执行查询命令db.test.find();
# 方式一
rs.slaveOk();
# 方式二
rs.secondaryOk();

# 查询
db.test.find();

## 手动摸拟异常 关闭主节点 查看从节点是否从新选举
# 结果 从节点会从新选举主节点 主节点再次启动后会自动变更为从节点

五、分片集群

为了方便操作,我在这里取消配置文件,更改为启动时添加参数。

5.1、集群规划

- Shard Server 1:27017
- Shard Repl   1:27018

- Shard Server 2:27019
- Shard Repl   2:27020

- Shard Server 3:27021
- Shard Repl   3:27022

- Config Server :27023
- Config Server :27024
- Config Server :27025

- Route Process :27026

5.2、创建数据目录

## s0
mkdir -p /data/mongodb/shard/s0
mkdir -p /data/mongodb/shard/s0-repl

## s1
mkdir -p /data/mongodb/shard/s1
mkdir -p /data/mongodb/shard/s1-repl

## s2
mkdir -p /data/mongodb/shard/s2
mkdir -p /data/mongodb/shard/s2-repl

## config
mkdir -p /data/mongodb/shard/config1
mkdir -p /data/mongodb/shard/config2
mkdir -p /data/mongodb/shard/config3

mkdir -p /data/mongodb/shard/config

5.3、启动6个 shard服务

## 启动 s0、r0
./mongod --port 27017 --dbpath /data/mongodb/shard/s0 --bind_ip 0.0.0.0 --shardsvr --replSet r0/123.57.80.91:27018 --fork --logpath /data/mongodb/shard/s0/s0.log

./mongod --port 27018 --dbpath /data/mongodb/shard/s0-repl --bind_ip 0.0.0.0 --shardsvr --replSet r0/123.57.80.91:27017 --fork --logpath /data/mongodb/shard/s0-repl/s0-repl.log

# 登录任意节点
./mongo --port 27017

# 选择admin库
use admin

# 在admin中执行
config = { 
	_id:"r0", members:[
      {_id:0,host:"123.57.80.91:27017"},
      {_id:1,host:"123.57.80.91:27018"}
    ]
}

# 初始化
rs.initiate(config);

## 启动 s1、r1
./mongod --port 27019 --dbpath /data/mongodb/shard/s1 --bind_ip 0.0.0.0 --shardsvr --replSet r1/123.57.80.91:27020 --fork --logpath /data/mongodb/shard/s1/s1.log

./mongod --port 27020 --dbpath /data/mongodb/shard/s1-repl --bind_ip 0.0.0.0 --shardsvr --replSet r1/123.57.80.91:27019 --fork --logpath /data/mongodb/shard/s1-repl/s1-repl.log

# 登录任意节点
./mongo --port 27019

# 在admin中执行
use admin

# 执行
config = { 
	_id:"r1", members:[
      {_id:0,host:"123.57.80.91:27019"},
      {_id:1,host:"123.57.80.91:27020"}
    ]
}

# 初始化
rs.initiate(config);

## 启动 s2、r2
./mongod --port 27021 --dbpath /data/mongodb/shard/s2 --bind_ip 0.0.0.0 --shardsvr --replSet r2/123.57.80.91:27022 --fork --logpath /data/mongodb/shard/s2/s2.log

./mongod --port 27022 --dbpath /data/mongodb/shard/s2-repl --bind_ip 0.0.0.0 --shardsvr --replSet r2/123.57.80.91:27021 --fork --logpath /data/mongodb/shard/s2-repl/s2-repl.log

# 登录任意节点
./mongo --port 27017

# 选择admin库
use admin

# 在admin中执行
config = { 
	_id:"r2", members:[
      {_id:0,host:"123.57.80.91:27021"},
      {_id:1,host:"123.57.80.91:27022"}
    ]
}

# 初始化
rs.initiate(config);

5.4、启动3个config服务

./mongod --port 27023 --dbpath /data/mongodb/shard/config1 --bind_ip 0.0.0.0 --replSet  config/[123.57.80.91:27024,123.57.80.91:27025] --configsvr --fork --logpath /data/mongodb/shard/config1/config.log

./mongod --port 27024 --dbpath /data/mongodb/shard/config2 --bind_ip 0.0.0.0 --replSet  config/[123.57.80.91:27023,123.57.80.91:27025] --configsvr --fork --logpath /data/mongodb/shard/config2/config.log

./mongod --port 27025 --dbpath /data/mongodb/shard/config3 --bind_ip 0.0.0.0 --replSet  config/[123.57.80.91:27023,123.57.80.91:27024] --configsvr --fork --logpath /data/mongodb/shard/config3/config.log

5.5、初始化 config server 副本集

`登录任意节点 congfig server`

./mongo --port 27023

# 选择数据库
use admin 

# 在admin中执行
config = { 
    _id:"config", 
    configsvr: true,
    members:[
    	{_id:0,host:"123.57.80.91:27023"},
    	{_id:1,host:"123.57.80.91:27024"},
    	{_id:2,host:"123.57.80.91:27025"}
    ]
}
# 初始化副本集配置 
rs.initiate(config);

5.6、启动 mongos 路由服务

./mongos --port 27026 --configdb config/123.57.80.91:27023,123.57.80.91:27024,123.57.80.91:27025 --bind_ip 0.0.0.0 --fork --logpath /data/mongodb/shard/config/config.log

5.7、登录 mongos 服务

# 1.登录 
./mongo --port 27026

# 2.选择数据库
use admin

# 3.添加分片信息
db.runCommand({ addshard:"r0/123.57.80.91:27017,123.57.80.91:27018","allowLocal":true });
db.runCommand({ addshard:"r1/123.57.80.91:27019,123.57.80.91:27020","allowLocal":true });
db.runCommand({ addshard:"r2/123.57.80.91:27021,123.57.80.91:27022","allowLocal":true });

# 4.指定分片的数据库
db.runCommand({ enablesharding:"users" });

# 5.设置库的片键信息
db.runCommand({ shardcollection: "users.user", key: { _id:1}});
db.runCommand({ shardcollection: "users.emp", key: { _id: "hashed"}})

5.8、测试

测试user集合

# 1.登陆27026节点
./mongo --port 27026

# 2.选择数据库
use users;

# 3.插入数据
for(let i=0;i<1000;i++){
 	db.user.insert({_id:i, name:"java_"+i, age: i});
}

# 4.验证27017
./mongo --port 27017
use users;
db.user.count();

# 5.验证27019
./mongo --port 27019
use users;
db.user.count();

# 6.验证27021
./mongo --port 27021
use users;
db.user.count();

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
测试emp集合

# 1.登陆27026节点
./mongo --port 27026

# 2.选择数据库
use users;

# 3.插入数据
for(let i=0;i<1000;i++){
 	db.emp.insert({_id:i, name:"java_"+i, age: i});
}

# 4.验证27017
./mongo --port 27017
use users;
db.emp.count();


# 5.验证27019
./mongo --port 27019
use users;
db.emp.count();

# 6.验证27021
./mongo --port 27021
use users;
db.emp.count();

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值