首页 > 数据库 >linux安装mongodb并做分片集群

linux安装mongodb并做分片集群

时间:2022-12-15 16:33:59浏览次数:64  
标签:log mongodb linux db 分片 服务器 config

linux安装mongodb并做分片集群

安装mongodb

我们先去官网下载对应的版本,我这里选择的是4.0.0 tgz版本

在linux下解压打开


sudo tar -zxvf mongodb-linux-x86_64-4.0.0.tgz -C /usr/local/  # 解压至指定文件目录

sudo mv /usr/local/mongodb-linux-x86_64-4.0.0 /usr/local/mongodb # 改名字

编写环境变量

打开自己prfile文件(我这里是zsh,所以我这里直接对.zshrc修改)

vim .zshrc

# 在后面添加变量
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin

source .zshrc # 这里看你的profile文件是什么

mongodb设置

我这里设置了三个分片服务器(没有集群)
两个config服务器(官方要求必须是集群模式)
一个router服务器

具体信息如下

名字 port 集群
shard0 27100 Nan
shard1 27101 Nan
shard2 27102 Nan
config1 27200 config
config2 27201 config
r2 8848 Nan

新建db和log文件夹

# 创建响应的db
mkdir -p ~/db/s0 
mkdir -p ~/db/s1
mkdir -p ~/db/s2
mkdir -p ~/db/c0
mkdir -p ~/db/c1

# 创建log 文件夹
mkdir ~/log

创建log日志

touch ~/log/s0.log
touch ~/log/s1.log
touch ~/log/s2.log
touch ~/log/c0.log
touch ~/log/c1.log
touch ~/log/r.log

编写conf文件

shard config文件编写

# 这边三个分片服务器仅仅是 这三个配置看着改
port= 27100 
logpath= /home/kali/log/s0.log
dbpath=/home/kali/db/s0/

logappend=true
maxConns=100
storageEngine=wiredTiger
bind_ip = 0.0.0.0

shardsvr=true # 这个是标记它为分片服务器

config 文件编写

port= 27200
logpath= /home/kali/log/c1.log
dbpath=/home/kali/db/c1/
logappend=true
# fork=true
maxConns=100
# auth=true
storageEngine=wiredTiger
bind_ip = 0.0.0.0
replSet = config # 标记它为复制集
# keyFile = /home/kali/mongodb/keyfile

configsvr = true # 这个是标记它为配置服务器

配置路由服务器

# shard 1
port= 8848
logpath= /home/kali/log/r.log
logappend=true

configdb =config/192.168.17.17:27200,192.168.17.17:27201
maxConns=100
# auth=true
bind_ip = 0.0.0.0

mongodb 启动

启动三个分片服务器

mongod -f ./mongdb_s{0/1/2}.conf --fork

启动两个配置服务器

mongod -f ./mongdb_c{0/1}.conf --fork # 启动服务

mongo --port 27200 # 进入某一个线程内部

use admin # 准备配置服务器集群设置

rs.initiate({_id:"config",members:[{_id:0,host:"192.168.17.17:27200"},{_id:1,host:"192.168.17.17:27201"}]})
# 看到mongo>界面编程子节点表示初始化成功

rs.status() # 查看复制群是否成功

启动路由服务器


mongos -f ./mongdb_r.conf --fork

#进入该线程内部

mongo --port 8848

use admin

sh.addShard("192.168.17.17:27100")
sh.addShard("192.168.17.17:27101")
sh.addShard("192.168.17.17:27102")

实现分片功能

还在路由服务器内部

设置chunk

use config
db.setting.save({"_id":"chunksize","value":1}) # 设置块大小为1M是方便实验,不然需要插入海量数据
  • 这里我们设置test数据库里面的user表来分片
use test

sh.enableSharding("test")

db.user.createIndex({"id":1}) # 以"id"作为索引

sh.shardCollection("test.user",{"id":"hashed"}) # hash分片

往数据库中插数据 测试50k条


for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"jack"+i})} #模拟往calon数据库的user表写入5万数据

标签:log,mongodb,linux,db,分片,服务器,config
From: https://www.cnblogs.com/adroitwolf/p/16985376.html

相关文章

  • Linux常用命令与shell脚本学习
    Linux常用命令1、关机/重启/注销常用命令作用shutdown-hnow即刻关机shutdown-h1010分钟后关机shutdown-h11:0011:00关机shutdown-h+10预......
  • brew报错:....linuxbrew/bin/systemctl --user daemon-reload` exited with 1
    报错内容Failedtoconnecttobus:NosuchfileordirectoryError:Failurewhileexecuting;`/home/linuxbrew/.linuxbrew/bin/systemctl--userdaemon-reload`ex......
  • Linux inode详解
    1、inode和block概述block:操作系统在读取硬盘的时候,会一次性读取一“块”(block),这种块是文件存取的最小的单位,block的大小常见的是4KB,即八个扇区构成。(硬盘的最小存储单位......
  • 解决双网卡虚拟机linux无法上外网的问题
    之前添加了一块网卡后,archlinux无法上外网了。也就是说只有一块NAT网卡时可以连接因特网,添加了另一块仅主机网卡后就无法上网了。一通查询之后才发现,是因为两块网卡都有......
  • linux扩容磁盘
    某天腾讯云的某台机器不能访问了,后面发现是磁盘满了写不了日志了,马上进行扩容。在扩容之后,发现磁盘空间还是没变。使用fdisk-l  发现磁盘空间有了,但是没有分......
  • Linux 查看CPU负载信息
    mpstat是MultiprocessorStatistics的缩写,是实时系统监控工具。mpstat最大的特点是:可以查看多核cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。......
  • Linux系统网络相关知识点
    云计算底层技术-虚拟网络设备(Bridge,VLAN,VxLan)https://www.cnblogs.com/janeysj/articles/10755246.html盘点Linux系统网络相关知识点https://zhuanlan.zhihu.com/p/5......
  • Linux服务器发包部署问题排查流程
    1IDEA中配置文件lineseparator分隔符格式CRLF、LF和CR这三种东西,CR是MAC老版本的做法,就是回车,但是后来的MAC系统统一换成LF了,LF是Linux下的做法,就是换行,这个做法比较自......
  • 【Linux】之如何卸载干净zabbix服务
    1、停止zabbix-serverzabbix-agenthttpdrh-php72-php-fpmsystemctlstopzabbix-serverzabbix-agenthttpdrh-php72-php-fpm 2、卸载zabbix服务2.1、查找zabbix......
  • 在linux下使用CMake构建应用程序
    本文介绍了一个跨平台的自动化构建系统CMake在linux上的使用方法。CMake是一个比automake更加容易使用的工具,能够使程序员从复杂的编译连接过程中解脱出来。文中通......