首页 > 数据库 >centos7 mongodb4.4分片集群部署

centos7 mongodb4.4分片集群部署

时间:2023-04-07 17:55:54浏览次数:47  
标签:mongodb4.4 mongo mongodb app 192.168 centos7 conf 分片 data


#创建mongo相应的目录

mkdir -pv /data/app/mongodb/conf
mkdir -pv /data/app/mongodb/{configset,shared1,shared2,shared3}/log
mkdir -pv /data/mongodb/{configset,shared1,shared2,shared3}/data

 

#创建于用户,给权限

useradd -s /sbin/nologin -M mongod
chown -R mongod.mongod /data/mongodb/
chown -R mongod.mongod /data/app/mongodb/

 

#创建证书,将这个证书copy到另外2个节点

openssl rand -base64 753 > /data/app/mongodb/conf/keyFile.key
chmod 0600 /data/app/mongodb/conf/keyFile.key
chown mongod.mongod /data/app/mongodb/conf/keyFile.key

 

#设置mongo环境变量

echo "export PATH=$PATH:/data/app/mongodb/bin" > /etc/profile.d/mongodb.sh
source /etc/profile.d/mongodb.sh

 


#秘钥分发

scp /data/app/mongodb/conf/keyFile.key [email protected]:/data/app/mongodb/conf/keyFile.key
scp /data/app/mongodb/conf/keyFile.key [email protected]:/data/app/mongodb/conf/keyFile.key
scp /data/app/mongodb/conf/keyFile.key [email protected]:/data/app/mongodb/conf/keyFile.key
mv mongodb /data/app/mongodb/
yum install -y numactl

 

 


#创建config节点的服务

cat /etc/systemd/system/mongo-configset.service
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongod
Type=forking
ExecStart=/usr/bin/numactl --interleave=all /data/app/mongodb/bin/mongod --config /data/app/mongodb/conf/configset.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/data/app/mongodb/bin/mongod --shutdown --config /data/app/mongodb/conf/configset.conf
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start mongo-configset
chown -R mongod.mongod /data/

 

#配置config节点配置文件

cat  /etc/systemd/system/mongo-configset.service
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongod
Type=forking
ExecStart=/usr/bin/numactl --interleave=all /data/app/mongodb/bin/mongod --config /data/app/mongodb/conf/configset.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/data/app/mongodb/bin/mongod --shutdown --config /data/app/mongodb/conf/configset.conf
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target


systemctl daemon-reload 
systemctl start mongo-configset
chown -R mongod.mongod /data/

 

#检查端口是否启动

ss -tnl | grep 2100

 

#添加config节点

mongo 192.168.1.101:21000
rs.add("192.168.1.102:21000")
rs.add("192.168.1.103:21000")
rs.status()

 

#添加用户

mongo 192.168.1.101:21000
use admin
db.createUser({user:"root",pwd:'密码',roles:["root","clusterAdmin","userAdminAnyDatabase","readWriteAnyDatabase"]})
db.auth("root","密码")

 


#用户创建完毕后修改config节点配置文件,放开认证部分

systemctl restart mongo-configset

#下次登录使用户用户名密码登录

mongo -u root -p root 192.168.1.101:21000/admin

配置shard配置文件,mongodb1,mongodb2,mongodb3都要配置shard1.conf,shard2.conf,shard3.conf,注意修改名称和端口号

[root@mongodb1 ~]# cat /data/app/mongodb/conf/shared1.conf 
storage:
    dbPath: /data/mongodb/shared1/data
    journal:
        enabled: true
    wiredTiger:
        engineConfig:
            cacheSizeGB: 4
systemLog:
    destination: file
    logAppend: true
    path: /data/app/mongodb/shared1/log/shared1.log
replication:
    replSetName: shared1
processManagement:
    fork: true
    pidFilePath: /data/app/mongodb/shared1/log/shared1.pid
net:
    port: 27001
    bindIp: 0.0.0.0
security:
    keyFile: /data/app/mongodb/conf/keyFile.key
    authorization: enabled
sharding:
    # 分片集群中当前实例的角色(configsvr:配置中心实例,shardsvr:分片实例)
    clusterRole: shardsvr

 

 

#配置shard服务 mongo-27001,mongo-27002,mongo-27003

[root@mongodb1 ~]# cat /etc/systemd/system/mongo-27001.service 
[Unit]
Description=High-performance,schema-free document-oriented database
After=network.target

[Service]
User=mongod
Type=forking
ExecStart=/usr/bin/numactl --interleave=all /data/app/mongodb/bin/mongod --config /data/app/mongodb/conf/shared1.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/data/app/mongodb/bin/mongod --shutdown --config /data/app/mongodb/conf/shared1.conf
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

 

 


#shard1初始化,并添加其他两个节点

mongo 192.168.1.101:27001
rs.initiate()
rs.add("192.168.1.102:27001")
rs.add("192.168.1.103:27001")
rs.status()

 

#shard2初始化,并添加其他两个节点

mongo 192.168.1.102:27002
rs.initiate()
rs.add("192.168.1.101:27002")
rs.add("192.168.1.103:27002")
rs.status()

 

#shard3初始化,并添加其他两个节点

mongo 192.168.1.103:27003
rs.initiate()
rs.add("192.168.1.101:27003")
rs.add("192.168.1.102:27003")
rs.status()

 

use admin
db.createUser({user:"root",pwd:'密码',roles:["root","clusterAdmin","userAdminAnyDatabase","readWriteAnyDatabase"]})
db.auth("root","密码")

 

#用户创建完毕后所有节点配置文件开启认证

systemctl restart mongo-27001 mongo-27002 mongo-27003
mongo -u root -p "密码" 192.168.1.101:27001/admin

#配置路由服务

mkdir -pv /data/app/mongodb/mongos/log
chown -R mongod.mongod /data/app/mongodb

 

#配置mongos路由配置文件

[root@mongodb1 ~]# cat /data/app/mongodb/conf/mongos.conf 
systemLog:
    destination: file
    logAppend: true
    path: /data/app/mongodb/mongos/log/mongos.log
processManagement:
    fork: true
    pidFilePath: /data/app/mongodb/mongos/log/mongos.pid
net:
    port: 20000
    bindIp: 0.0.0.0
sharding:
    configDB: configset/192.168.1.101:21000,192.168.1.102:21000,192.168.1.103:21000
security:
    keyFile: /data/app/mongodb/conf/keyFile.key

#配置mongos服务

[root@mongodb1 ~]# cat /etc/systemd/system/mongos.service
[Unit]
Description=High-performance, shcema-free document-oriented database
After=network.target

[Service]
User=mongod
Type=forking
ExecStart=/usr/bin/numactl --interleave=all /data/app/mongodb/bin/mongos --config /data/app/mongodb/conf/mongos.conf
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

 

#mongos添加shard成员

sh.addShard("shard1/192.168.1.101:27001")
sh.addShard("shard1/192.168.1.102:27001")
sh.addShard("shard1/192.168.1.103:27001")


sh.addShard("shard1/192.168.1.101:27002")
sh.addShard("shard1/192.168.1.102:27002")
sh.addShard("shard1/192.168.1.103:27002")

 

sh.addShard("shard1/192.168.1.101:27003")
sh.addShard("shard1/192.168.1.102:27003")
sh.addShard("shard1/192.168.1.103:27003")
sh.status()

 


#测试分片

mongo -u root -p "密码" 192.168.1.101:20000/admin

 

#查看分片节点

db.getSiblingDB("config").shards.find()

 

#查看那些数据库开启了分片

db.getSiblingDB("config").databases.find()

 


#创建并进入testdb库

use testdb

 

#开启test01库的分片

sh.enableSharding("testkdb")

 

#根据id建进行hash分片

sh.shardCollection("testdb.test01",{"id":"hashed"})

 


#模拟插入9999条数据

use testdb
for(i=1;i<10000;i++){db.test01.insert({"id":i,"name":"aaa"})}

 


#查看分片的片建

use config
db.collections.find().pretty()

 


#hash分片数据验证,hashed分片会尽可能均匀分布在每个primary节点上

shard1:
mongo -u root -p "密码" 192.168.1.101:27001/admin
use testdb
db.test01.count()

shard2:
mongo -u root -p "密码" 192.168.1.102:27002/admin
use testdb
db.test01.count()

shard3:
mongo -u root -p "密码" 192.168.1.103:27003/admin
use testdb
db.test01.count()

 

标签:mongodb4.4,mongo,mongodb,app,192.168,centos7,conf,分片,data
From: https://www.cnblogs.com/fengzi7314/p/17296981.html

相关文章

  • Centos7 安装 maven3.6.3
    1.下载maven3.6.3安装包wgethttps://mirrors.ocf.berkeley.edu/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz--no-check-certificate2.创建一个安装maven的目录mkdir/usr/local/maven3.解压下载的软件包tar-zxvfapache-maven-3.6.3-bi......
  • CentOS7安装zabbix-agent
    一:系统要求1.centos72.zabbix服务器端5.0版本 二:安转和配置zabbix1.安装zabbix存储库#rpm-Uvhhttps://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm#yumcleanall2.安装zabbix代理#yuminstallzabbix-agent3.启动zabb......
  • Centos7 安装配置FTP服务
    1、FTP简介ftp(FileTransferProtocol文件传输协议)是基于TCP/IP协议的应用层协议,用于文件的传输,包括ftp服务器(或服务端)和ftp客户端2、关闭防火墙设置selinuxsystemcltstopfirewalld.service&&systemcltdisablefirewalld.serviceSELINUX=disabledsetenforce0使修改立......
  • Centos7使用systemctl管理mysql8服务开机启动
    centos7下开机默认不执行原来配置启动命令的/etc/rc.local文件,建议使用systemctl管理自启动服务,如果要使用/etc/rc.local进行自启动,需要给文件/etc/rc.d/rc.local添加可执行权限。    systemctl常用命令如下:1.列出所有启动项命令systemctllist-unit-files开启的和未开启的......
  • Linux(CentOS7) c语言编程, 多线程入栈出栈,错误:expected ‘while’ before ‘int’
    在Centos7里,编写多线程的入栈出栈时,出现这样错误提示:图片版: 文字版:[root@CentOs705-xitongbiancheng]#gcc05-24-01.pthread-cancel-pop-push.c-pthread05-24-01.pthread-cancel-pop-push.c:在函数‘func’中:05-24-01.pthread-cancel-pop-push.c:47:1:错误:expected......
  • JavaScript超大文件上传解决方案:分片断点上传(一)
    ​ 前段时间做视频上传业务,通过网页上传视频到服务器。视频大小小则几十M,大则1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制;2,请求时间过长,请求超时;3,传输中断,必须重新上传导致前功尽弃; 解决方案:1,修改服务端上传的限制配置;Nginx以......
  • 求PHP超大文件上传解决方案:分片断点上传(一)
    ​ PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间,超过这个时间就会报错3.memory_limit=50M 设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此......
  • Centos7安装docker
    1、查看系统版本,系统内核3.10以上并卸载旧版本。yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine 2、docker安装安装yum-utils......
  • Linux centos7虚拟机安装Oracle11g完全教程
                      Linuxcentos7虚拟机安装Oracle11g完全教程Linux下安装Oracle相比windows安装Oracle要显得繁琐很多,繁琐在前期准备工作很多,Oracle有两次安装前的检查,前期的准备工作其实也就是围绕这两次检查来做的。第一次检查:Oracle安装程......
  • Linux运维实战:Centos7.6部署wingftpserver
    一、WingFTPServer介绍WingFTPServer是一款优秀且高速的跨平台FTP服务器软件,对比Windows中自带的FTP服务器,它支持可伸缩的处理器架构并采用异步IO,在速度和效率方面遥遥领先于其他同类产品,稳定可靠,高负载的同时也能持续地正常运行,在网络运维中它契合企业和学校的文件传输,除......