mongodb-linux-x86_64-3.4.18.tgz

一、环境准备

准备三台服务器
192.168.0.1
192.168.0.2
192.168.0.3
预计安装的服务及端口
mongos:20000
config:21000
shard1:27001
shard2:27001
shard3:27001
软件:mongodb-linux-x86_64-3.4.18.tgz 

二、安装步骤

1、目录结构,三台都需要

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local


tar -zxvf mongodb-linux-x86_64-3.4.18.tgz 
cp mongodb-linux-x86_64-3.4.18 /data/server/mongodb -Rp
mkdir /data/server/mongodb
cd /data/server/mongodb
mkdir conf 
mkdir mongos/log -p
mkdir config/{data,log} -p
mkdir shard1/{data,log} -p
mkdir shard2/{data,log} -p
mkdir shard3/{data,log} -p

2、环境变量,三台都需要

vim /etc/profile
export MONGODB_HOME=/data/server/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
source /etc/profile

注:请注意安装包中 bin 目录的大小写

3、配置文件修改,三台都需要

vim /data/server/mongodb/conf/config.conf

pidfilepath = /data/server/mongodb/config/log/configsrv.pid
dbpath = /data/server/mongodb/config/data
logpath = /data/server/mongodb/config/log/configsrv.log
logappend = true

bind_ip = 0.0.0.0
port = 21000
fork = true
configsvr = true
replSet = configs
maxConns = 20000

启动服务

mongod f /data/server/mongodb/conf/config.conf

登录服务,初始化配置副本集

mongo --port 21000

#config 变量
config = {
	_id : "configs",
	members : [
		{_id : 0, host : "192.168.0.1:21000"},
		{_id : 1, host : "192.168.0.2:21000"},
		{_id : 2, host : "192.168.0.3:21000"}
	]
}

#初始化副本集
rs.initiate(config)

3、配置分片副本集,三台都需要
第一个

vim /data/server/mongodb/conf/shard1.conf

pidfilepath = /data/server/mongodb/shard1/log/shard1.pid
dbpath = /data/server/mongodb/shard1/data
logpath = /data/server/mongodb/shard1/log/shard1.log
logappend = true

bind_ip = 0.0.0.0
port = 27001
fork = true

httpinterface = true
rest = true
replSet = shard1
shardsvr = true
maxConns = 20000

#启动3台的shard1 server
mongod -f /data/server/mongodb/conf/shard1.conf

登录第一台,进行初始化操作

mongo --port 27001

config = {
	_id : "shard1",
	members : [
		{_id : 0, host : "192.168.0.1:27001"},
		{_id : 1, host : "192.168.0.2:27001"},
		{_id : 2, host : "192.168.0.3:27001", arbiterOnly:true}
	]
}

#初始化副本集
rs.initiate(config)

##如下返回值,及成功
{ "ok" : 1 }

第二个

三台都需要配置文件

vim /data/server/mongodb/conf/shard2.conf

pidfilepath = /data/server/mongodb/shard2/log/shard2.pid
dbpath = /data/server/mongodb/shard2/data
logpath = /data/server/mongodb/shard2/log/shard2.log
logappend = true

bind_ip = 0.0.0.0
port = 27002
fork = true

httpinterface = true
rest = true
replSet = shard2
shardsvr = true
maxConns = 20000

#启动3台的shard2 server
mongod  -f /data/server/mongodb/conf/shard2.conf

登录第一台,进行初始化操作

mongo --port 27002

config = {
	_id : "shard2",
	members : [
		{_id : 0, host : "192.168.0.1:27002"},
		{_id : 1, host : "192.168.0.2:27002", arbiterOnly:true},
		{_id : 2, host : "192.168.0.3:27002"}
	]
}

#初始化副本集
rs.initiate(config)

##如下返回值,及成功
{ "ok" : 1 }

第二个

三台都需要配置文件
 

vim /data/server/mongodb/conf/shard3.conf

pidfilepath = /data/server/mongodb/shard3/log/shard3.pid
dbpath = /data/server/mongodb/shard3/data
logpath = /data/server/mongodb/shard3/log/shard3.log
logappend = true

bind_ip = 0.0.0.0
port = 27003
fork = true

httpinterface = true
rest = true
replSet = shard3
shardsvr = true
maxConns = 20000

#启动3台的shard3 server
mongod -f /data/server/mongodb/conf/shard3.conf

登录第二台,进行初始化操作

mongo --port 27003

config = {
	_id : "shard3",
	members : [
		{_id : 0, host : "192.168.0.1:27003", arbiterOnly:true},
		{_id : 1, host : "192.168.0.2:27003"},
		{_id : 2, host : "192.168.0.3:27003"}
	]
}

#初始化副本集
rs.initiate(config)

##如下返回值,及成功
{ "ok" : 1 }

4、配置路由服务器mongos,三台都需要

vim /data/server/mongodb/conf/mongos.conf
pidfilepath = /data/server/mongodb/mongos/log/mongos.pid
logpath = /data/server/mongodb/mongos/log/mongos.log
logappend = true
bind_ip = 0.0.0.0
port = 20000
fork = true
configdb = configs/192.168.0.1:21000,192.168.0.2:21000,192.168.0.3:21000
maxConns = 20000

###启动
mongos -f /data/server/mongodb/conf/mongos.conf

5、启用分片,任一台服务器操作

user admin

sh.addShard("shard1/192.168.0.1:27001,192.168.0.2:27001,192.168.0.3:27001")
####返回值如下,即成功
{"shardAdded": "ok":"1"}
sh.addShard("shard2/192.168.0.1:27002,192.168.0.2:27002,192.168.0.3:27002")
####返回值如下,即成功
{"shardAdded": "ok":"1"}
sh.addShard("shard3/192.168.0.1:27003,192.168.0.2:27003,192.168.0.3:27003")
####返回值如下,即成功
{"shardAdded": "ok":"1"}

sh.status()

####返回值如下,在3台上都可以执行看结果,ip那项,都必须包含除本机外的另2台ip
事例:

shards:
  { "_id":"shard1","host":"shard1/192.168.0.2:27001,192.168.0.3:27001","state":1}
  { "_id":"shard2","host":"shard2/192.168.0.1:27002,192.168.0.3:27001","state":1}
  { "_id":"shard3","host":"shard3/192.168.0.1:27003,192.168.0.2:27001","state":1}

三、备注

启动顺序
mongod -f /data/server/mongodb/conf/config.conf
mongod -f /data/server/mongodb/conf/shard1.conf
mongod -f /data/server/mongodb/conf/shard2.conf
mongod -f /data/server/mongodb/conf/shard3.conf
mongod -f /data/server/mongodb/conf/mongos.conf

安装过程中会有一些警告 如下 4条


1. WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine

报这个错是因为我的虚拟环境使用的是EXT4文件系统,官方不建议,但不影响使用

在Linux上运行MongoDB时,官方建议使用Linux内核版本2.6.36或更高版本,使用XFS或EXT4文件系统。 如果可能,最好使用XFS,因为它通常与MongoDB表现更好。

使用WiredTiger存储引擎,强烈建议使用XFS,以避免在使用EXT4与WiredTiger时可能发生的性能问题。

使用MMAPv1存储引擎,MongoDB在使用它们之前预先分配其数据库文件,并经常创建大文件。 因此,官方建议使用XFS或EXT4文件系统。 如果可能,请使用XFS,因为它通常与MongoDB表现更好
 

2. WARNING: Access control is not enabled for the database.

报这个错是因为MongoDB需要有一个安全库来开启数据库访问控制

在MongoDB部署上启用访问控制会强制执行身份验证,要求用户识别自己。当访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。


3. WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.
4. WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.

这两个问题是CentOS7特有的,因为从CentOS7版本开始会默认启用Transparent Huge Pages(THP)
Transparent Huge Pages(THP)本意是用来提升内存性能,但某些数据库厂商还是建议直接关闭THP(比如说Oracle、MariaDB、MongoDB等),否则可能会导致性能出现下降

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯飙的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值