mongodb linux版本的安装和启动以及搭建 mongodb的分布式环境

tar -zxvf mongodb-linux-x86_64-rhel70-3.6.4.tar.gz      先解压  mongodb的客户端

cd mongodb-linux-x86_64-rhel70-3.6.4

mkdir Data     新建一个Data文件夹用于文件的存储操作

mkdir logs      新建一个记录  mongodb的log文件的文件夹

cd bin

./mongod --help   查看帮助文档(使用这个命令可以在启动mongodb的时候查看其帮助文档)


./mongod --dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/Data --bind_ip=192.168.159.136 --logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/logs/mongod.log --logappend --fork


--bind_ip   有这个属性之后才能被外界计算机访问 mongodb这个数据库,因为默认是  127.0.0.1,其他的计算机访问不到

--logpath   设置日志文件路径

---logappend   添加日志文件

--fork   默认是后台启动


也可以使用指定配置文件的方式启动,到  /usr/local/mongodb-linux-x86_64-rhel70-3.6.4   这个目录下:

vi mongodb.cfg

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/Data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.136
port=27017

cd bin

./mongod -f ../mongodb.cfg

这样也可以启动mongodb


使用其它计算机连接到远程的 mongodb的命令:

./mongo --host 192.168.159.136

-------------------------------------------------------------------------------------------------------------

接下来介绍 mongodb集群环境的搭建:

集群机器环境:

master机器:  192.168.159.136

slaver机器: 192.168.159.136

arbiter机器: 192.168.159.136

首先来到mongodb的根路径下( /usr/local/mongodb-linux-x86_64-rhel70-3.6.4)创建几个文件夹

mkdir -p replset/master/data
mkdir -p replset/master/logs
mkdir -p replset/slaver/data
mkdir -p replset/slaver/logs
mkdir -p replset/arbiter/data

mkdir -p replset/arbiter/logs

然后在刚刚创建的  replset/master/ 这个目录下 创建一个文件,文件如下:

vi mongodb.cfg

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/master/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/master/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.136
port=27017
replSet=shard002

然后在刚刚创建的  replset/slaver/  这个目录下创建一个文件,文件如下(注意dbpath、logpath和bind_ip参数的变化):

vi mongodb.cfg

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/slaver/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/slaver/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.135
port=27017
replSet=shard002

然后在刚刚创建的  replset/arbiter/  这个目录下创建一个文件,文件如下(注意dbpath、logpath和bind_ip参数的变化):

vi mongodb.cfg

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/arbiter/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/arbiter/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.137
port=27017
replSet=shard002

然后执行下面的命令将 刚刚配置的  slaver和arbiter 节点转移到下面的路径上,在/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset目录下执行:

scp -r ./slaver root@192.168.159.135:/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/slaver

scp -r ./arbiter root@192.168.159.137:/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/replset/arbiter

然后分别在 master、slaver、arbiter 三台机器的 mongodb的bin目录下分别执行下面的开启命令

192.168.159.136上: 

./mongod -f ../replset/master/mongodb.cfg

192.168.159.135上:

./mongod -f ../replset/slaver/mongodb.cfg

192.168.159.137上:

./mongod -f ../replset/arbiter/mongodb.cfg


这个时候需要加上一个配置让集群的环境真正搭建成功:

配置 mongodb 主、备、仲裁  节点,也可以直接在三个节点中选择一个连接 mongodb

先连接上一个 mongodb的数据库

./mongo --host 192.168.159.136

执行下面的命令

cfg={_id:"shard002",members:[

{ _id:0,host:'192.168.159.136:27017',priority:9},

{ _id:1,host:'192.168.159.135:27017',priority:1},

{ _id:2,host:'192.168.159.137:27017',arbiterOnly:true}

]};

arbiterOnly:这个属性的含义是它是一个仲裁节点

注意里面的_id:"shard002"  要和刚刚配置文件    replSet=shard002  的参数相同

执行完命令之后出现下面的信息则说明执行正确:


然后再执行:

rs.initiate(cfg);      这句命令的作用是使得配置生效,出现下面的状态则说明已经配置成功。




使用  rs.status()  这个命令可以查看三个节点的状态,可以看到三个members状态分别是  PRIMARY、SECONDARY、ARBITER

可以在集群中的主机器执行下面的添加指令

db.t_member.insert({name:'lxh',age:15})

然后来连接一台从机,执行  ./mongo --host 192.168.159.135

连接上之后执行    rs.slaveOk();

然后即可看到在主节点上插入的数据  db.t_member.find();

三台机器的状态如下图所示:


因为仲裁节点在集群当中不存储数据,也不做任何操纵等,所以不推荐使用这样的集群策略。


-------------------------------------------------------------------------------------------------------------

接下来再玩一个伪分布式:

在  /usr/local/mongodb-linux-x86_64-rhel70-3.6.4  路径下执行下面的命令新建一些文件夹:

mkdir -p shard/replset/replica1/data
mkdir -p shard/replset/replica1/logs
mkdir -p shard/replset/replica2/data
mkdir -p shard/replset/replica2/logs
mkdir -p shard/replset/replica3/data

mkdir -p shard/replset/replica3/logs

然后再在  shard/replset/replica1 、 shard/replset/replica2 、shard/replset/replica3  这三个目录下创建mongodb.cfg文件,内容如下:

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/replset/replica1/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/replset/replica1/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.239.144
port=27001
replSet=shard001
dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/replset/replica2/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/replset/replica2/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.239.144
port=27002
replSet=shard001
dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/replset/replica3/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/replset/replica3/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.239.144
port=27003
replSet=shard001

结构如下:

设置一个变量

cfg={_id:"shard001",members:[

{ _id:0,host:'192.168.159.136:27001'},

{ _id:1,host:'192.168.159.136:27002'},

{ _id:2,host:'192.168.159.136:27003'}

]};

注意 _id 变成了和前面一样的   shard001

rs.initiate(cfg);

可以测试吧 27001端口的停掉,这个时候会冲洗选举出新的 mongodb 的主机,注意登录其他从机的时候需要执行这个指令  rs.slaveOk();


-------------------------------------------------------------------------------------------------------------

到现在为止有了一组伪分布式的数据库(M-S-S)和另外一组真分布式的数据库(M-S-A)


mongodb


接下来我们搭建 路由服务器  Route Server 和  config服务器  Config Server

先配置config服务器,创建一个目录

mkdir -p shard/configsvr/config1/data
mkdir -p shard/configsvr/config1/logs
mkdir -p shard/configsvr/config2/data
mkdir -p shard/configsvr/config2/logs
mkdir -p shard/configsvr/config3/data
mkdir -p shard/configsvr/config3/logs

vi ./shard/configsvr/config1/mongodb.cfg

进行config的配置

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/configsvr/config1/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/configsvr/config1/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.136
port=28001
replSet=configrs
configsvr=true

注意配置里的端口号改成了 28001 还有 replSet的设置变成了  configrs  还有一个  configsvr这个属性是true,表示的含义是当前这个 mongodb的配置是一台 mongodb的配置服务器

vi ./shard/configsvr/config2/mongodb.cfg

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/configsvr/config2/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/configsvr/config2/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.136
port=28002
replSet=configrs
configsvr=true

vi ./shard/configsvr/config3/mongodb.cfg

dbpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/configsvr/config3/data
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/configsvr/config3/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.159.136
port=28003
replSet=configrs
configsvr=true

然后再把 三个配置节点的mongodb启动。来到  mongodb的 bin 目录下:

./mongod -f ../shard/configsvr/config1/mongodb.cfg

./mongod -f ../shard/configsvr/config2/mongodb.cfg

./mongod -f ../shard/configsvr/config3/mongodb.cfg

执行这个命令即可启动mongodb的三台配置服务器


可以开启另外一台shell终端,然后在mongodb的终端执行下面的指令:

./mongo --host 192.168.159.136:28001

进来之后初始化一下:

cfg={_id:"configrs",members:[

{ _id:0,host:'192.168.159.136:28001'},

{ _id:1,host:'192.168.159.136:28002'},

{ _id:2,host:'192.168.159.136:28003'}

]};

rs.initiate(cfg);

rs.status();     可以查看节点的配置信息


接下来来配置路由服务器,来到mongodb的根目录中:

mkdir -p shard/routesvr/data
mkdir -p shard/routesvr/logs

vi  shard/routesvr/mongodb.cfg

configdb=configrs/192.168.159.136:28001,192.168.159.136:28002,192.168.159.136:28003
port=30000
fork=true
logpath=/usr/local/mongodb-linux-x86_64-rhel70-3.6.4/shard/routesvr/logs/mongodb.log
logappend=true
bind_ip=192.168.159.136

注意这里添加了 configdb这个属性,其中属性值开头 configrs是取自 配置服务器中的 replSet这个属性,还要注意路由服务器去掉了  dbpath、replSet、configsvr 这三个属性。

其中configdb属性的值里面跟上了三台配置服务器的地址和端口号

来到mongodb的bin目录下

然后在mongodb的根目录的bin路径下执行下面的语句

./mongos -f ../shard/routesvr/mongodb.cfg

这样就启动了配置路由服务器


然后再使用下面的命令连接上mongodb的服务

./mongo 192.168.159.136:30000

连接成功会看到下面的信息:


小知识: 

   mongodb当中的bin目录下的三个 文件有什么区别(mongo、mongod、mongos)

答:mongos是路由,mongod是连接副本集的数据库,mongo是客户端


-------------------------------------------------------------------------------------------------------------


接下来的内容是mongodb的数据切片如何来做,mongodb的最大亮点就在于数据切片上。

使用 ./mongo 192.168.159.136:30000 命令连接到路由服务器上.

show dbs可以看到下面的信息:

db.shards.find()
 db.chunks.find()

 db.mongos.find()

怎么把切片和路由服务器关联上:

shard001和 shard002的配置我们知道  shard001是一个 伪分布式,shard002是一个真分布式

使用下面的命令把其中一个切片添加到路由当中去:

sh.addShard("shard001/192.168.159.136:27001");      返回的 ok值等于1表示添加成功

执行 use config、show collections、  

db.shards.find()   这个时候可以看到三个节点已经被都有了


在配置路由以前,所有的副本集是可以相互通信的,也就是彼此知道对方是谁,而且他们之间都是能够通信的。

只要找到其中一台,就能把副本集集群添加进来。

可以在执行

sh.addShard("shard002/192.168.159.136:27017"); 

然后再执行  db.shards.find()  这个命令把两个副本集都添加进来。





mongodb集群环境当中一个副本集是由多个副本组成,一个副本是由多个块组成,多个副本集组成了一个mongodb的集群

块和副本的关系如下所示:


mongodb集群当中的几个名词:

RouteServer(路由服务器)、

ConfigServer(配置服务器)、

Replica Set (副本集)

Shard(切块)

Chunk(分块)


在   ./mongo 192.168.159.136:30000   连接的端口上执行下面的命令。

使用testdb库

use testdb

使用testdb这个分片

sh.enableSharding("testdb");

把集合切开

sh.shardCollection("testdb.testcon",{name:"hashed"});

给testdb当中添加数据

for(var i=0;i<100;i++) db.testcon.insert({name:"tom",age:i});
















 


-------------------------------------------------------------------------------------------------------------
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值