#########################################################
mongoDB 数据库安装
#########################################################
1、下载
#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.5.tgz
2、解压
#tar -zxvf mongodb-linux-x86_64-rhel70-4.2.5.tgz
#mv mongodb-linux-x86_64-rhel70-4.2.5 mongodb
3、配置加到环境变量中
#vi /etc/profile
把这条复制到profile配置文件中 注意目录要对应安装的目录
export PATH=/home/mongodb/bin:$PATH
使修改生效
#source /etc/profile
4、创建MongoDB数据存储位置
mkdir /home/mongodb/data
创建MongoDB日志存储位置
mkdir /home/mongodb/log
5、进入mongodb目录下编辑mongodb的配置文件
#cd /home/mongodb/
#vi mongodb.conf
######mongodb 配置文件#####
port=27017 #端口
bind_ip=192.168.106.129 #默认是127.0.0.1
dbpath=/home/mongodb/data #数据库存放
logpath=/home/mongodb/log/mongodb.log #日志文件
fork=true #设置后台运行
#auth=true #开启认证
6、bin目录启动mongod数据库服务,以配置文件的方式启动
mongod -f mongodb.conf
客户端连接MongoDB
#mongo
指定ip和端口
#mongo mongodb://192.168.106.129:27017
7、测试
浏览器输入本机ip地址测试 http://192.168.3.44:27017/
It looks like you are trying to access MongoDB over HTTP on the native driver port.
#########################################################
分片安装配置
###########################################################

#vi /etc/profile
export PATH=/home/mongodb/bin:$PATH
#source /etc/profile
config server配置服务器( configsvr角色)
mongodb3.4以后要求配置服务器也创建副本集,不然集群搭建不成功。
添加配置文件
新建目录
#mkdir -p /home/mongodb/data/configsvr
#vi /home/mongodb/conf/configsvr.conf
systemLog:
destination: file
logAppend: true
path: "/home/mongodb/log/mongodb.log"
storage:
dbPath: "/home/mongodb/data/configsvr"
journal:
enabled: true
processManagement:
fork: true
net:
port: 28017
bindIp: 0.0.0.0
replication:
replSetName: F1008
sharding:
clusterRole: configsvr
配置文件发送到其他两台
#scp -r /home/mongodb/conf 192.168.106.129:/home/mongodb/
#scp -r /home/mongodb/conf 192.168.106.130:/home/mongodb/
启动三台服务器的configsvr角色(三台都要启动)
#mongod -f /home/mongodb/conf/configsvr.conf
about to fork child process, waiting until server is ready for connections.
forked process: 27999
child process started successfully, parent exiting
####################################
登录任意一台配置服务器,初始化配置副本集
***如果配置报错,应该是服务器之前端口不通,确保已停用防火墙和安全配置
#vi /etc/selinux/config
SELINUX=disabled
#chkconfig firewalld off
#service firewalld.service stop
#连接
#mongo --port 28017
#config变量
config={ _id:“F1008”,configsvr: true,members:[{_id:0,host:“192.168.10.3:28017”},{_id:1,host:“192.168.10.4:28017”},{_id:2,host:“192.168.10.5:28017”}]};
#初始化副本集
rs.initiate(config)
{ “ok” : 1 }
#查看状态
rs.status()
其中,"_id" : "configs"应与配置文件中配置的 replicaction.replSetName 一致,“members” 中的 “host” 为三个节点的 ip 和 port
####################################
三台机器分别配置分片副本集( shard角色 )
一、设置三个分片副本集
在每台机器分别配置三个shard1.conf shard2.conf shard3.conf(修改对应配置文件的shard编号和端口)
#vi /home/mongodb/conf/shard1.conf
#配置文件内容
systemLog:
destination: file
logAppend: true
path: /home/mongodb/log/shard1.log
storage:
dbPath: /home/mongodb/data/shard1/data
journal:
enabled: true
processManagement:
fork: true
net:
port: 29017
bindIp: 0.0.0.0
replication:
replSetName: shard1
sharding:
clusterRole: shardsvr
#scp /home/mongodb/conf/shard1.conf 192.168.106.129:/home/mongodb/conf
#scp /home/mongodb/conf/shard1.conf 192.168.106.130:/home/mongodb/conf
【启动三台服务器的shard1 server(三台都要启动)】
#mongod -f /home/mongodb/conf/shard1.conf
登陆任意一台服务器,初始化副本集
#mongo --port 29017
use admin #使用admin数据库
#定义副本集配置
config = {_id:“shard1”,members:[{_id : 0, host : “192.168.106.129:29017” },{_id : 1, host : “192.168.106.130:29017” },{_id : 2, host : “192.168.106.131:29017” }]};
#初始化副本集配置
rs.initiate(config);
{ “ok” : 1 }
【分别启动三台服务器的shard2 server】
#mongod -f /home/mongodb/conf/shard2.conf
登陆任意一台服务器,初始化副本集
#mongo --port 29018
use admin #使用admin数据库
#定义副本集配置
config = {_id:“shard2”,members:[{_id : 0, host : “192.168.106.129:29018” },{_id : 1, host : “192.168.106.130:29018” },{_id : 2, host : “192.168.106.131:29018” }]};
#初始化副本集配置
rs.initiate(config);
{ “ok” : 1 }
【分别启动三台服务器的shard2 server】
#mongod -f /home/mongodb/conf/shard3.conf
登陆任意一台服务器,初始化副本集
#mongo --port 29019
use admin #使用admin数据库
#定义副本集配置
config = {_id:“shard3”,members:[{_id : 0, host : “192.168.106.129:29019” },{_id : 1, host : “192.168.106.130:29019” },{_id : 2, host : “192.168.106.131:29019” }]};
#初始化副本集配置
rs.initiate(config);
{ “ok” : 1 }
二、配置路由服务器mongos(路由角色)
mongodb中的router(mongos)角色只负责提供一个入口,不存储任何的数据,router最重要的配置是指定configsvr的地址,使用副本集ip+端口的方式指定配置多个router,任何一个都能正常的获取数据。
#vi /home/mongodb/conf/mongos.conf
#配置文件内容如下:
systemLog:
destination: file
logAppend: true
path: /home/mongodb/log/mongos.log
processManagement:
fork: true
net:
port: 27017
bindIp: 0.0.0.0
sharding:
configDB: F1008/192.168.106.129:28017,192.168.106.130:28017,192.168.106.131:28017
启动三台服务器的mongos server
#mongos -f /home/mongodb/conf/mongos.conf
至此,以上三种角色的服务都已经创建并启动成功。
三、启用分片
目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到mongos路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。
登陆任意一台mongos,给分片集群添加数据角色,数据角色为副本集的方式。
#mongo --port 27017
mongos> use admin
#串联路由服务器与分配副本集
mongos> sh.addShard("shard1/192.168.106.129:29017,192.168.106.130:29017,192.168.106.131:29017")
mongos> sh.addShard("shard2/192.168.106.129:29018,192.168.106.130:29018,192.168.106.131:29018")
mongos> sh.addShard("shard3/192.168.106.129:29019,192.168.106.130:29019,192.168.106.131:29019")
mongos> sh.status()
四、测试验证
目前配置服务、路由服务、分片服务、副本集服务都已经串联起来了,但我们的目的是希望插入数据,数据能够自动分片。连接在mongos上,准备让指定的数据库、指定的集合分片生效。
#针对某个数据库的某个表使用hash分片存储,分片存储就会同一个colloection分配两个数据角色
mongos> use admin
mongos> db.runCommand( { enablesharding :"F1008"});
#指定数据库里需要分片的集合和片键
mongos> db.runCommand( { shardcollection : "F1008.myuser",key : {_id: "hashed"} } )
mongos> exit
我们设置F1008的 myuser表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。
测试分片配置结果
#mongo --port 27017
#插入测试数据
mongos> use F1008
mongos> for(i=1; i<=500;i++){db.myuser.insert( {name:'mytest'+i, age:i} )}
mongos> db.myuser.count()
500
#我们可以通过路由角色看到插入到了500条记录。
通过mongodb可视化工具 MongoDB Compass
可以查看mongo分片上的数据库信息
本文详细介绍了MongoDB的安装步骤,包括下载、配置环境变量、数据存储与日志设置,以及如何启动单个服务和配置分片、副本集、路由服务器和启用分片的过程。最后展示了如何通过命令行操作进行分片配置和测试验证。
2847

被折叠的 条评论
为什么被折叠?



