mongodb分布式集群架构

发布时间:2018-12-19  栏目:NoSQL  评论:0 Comments

同等、架构简介

目标
单机搭建mongodb分布式集群(副本集 +
分片集群),演示mongodb分布式集群的装置配备、简单操作。

图片 1

说明
以和一个vm启动由简单单分片组成的分布式集群,每个分片都是一个PSS(Primary-Secondary-Secondary)情势的数码称本集;
Config副本集接纳PSS(Primary-Secondary-Secondary)格局。

一、关于mongodb

亚、配置表达

  • 端口通讯
    时下聚众多被存在shard、config、mongos共12个经过节点,端口矩阵编排如下:
编号 实例类型
1 mongos
2 mongos
3 mongos
4 config
5 config
6 config
7 shard1
8 shard1
9 shard1
10 shard2
11 shard2
12 shard2
  • 内鉴权
    节点内鉴权拔取keyfile情势实现鉴权,mongos与分片之间、副本集节点内共享同一效仿keyfile文件。
    官方证实

  • 账户设置
    管理员账户:admin/Admin@01,具有集群和所有库的管理权限
    使账号:appuser/AppUser@01,具有appdb的owner权限

关于初步化权限
keyfile情势默认会开启鉴权,而针对先河化安装的面貌,Mongodb提供了localhost-exception机制
可以以第一次安装时经过本机创造用户、角色,以及副本集先河操作。

  MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当***能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

老三、准备干活

仲、mongodb分布式应用原理

1. 下载安装包

官地址:https://www.mongodb.com/download-center

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.3.tgz
  MongoDB集群包括一定数量的mongod(分片存储数据)、mongos(路由处理)、config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选举某个分片存储数据节点那台为主节点)。

2. 安排目录

解压压缩文件,将bin目录拷贝到目的路径/opt/local/mongo-cluster,参考以下命令:

tar -xzvf mongodb-linux-x86_64-rhel70-3.6.3.tgz
mkdir -p  /opt/local/mongo-cluster
cp -r mongodb-linux-x86_64-rhel70-3.6.3/bin  /opt/local/mongo-cluster

图片 2

3. 创布局文件

cd /opt/local/mongo-cluster
mkdir conf 

A. mongod 配置文件 mongo_node.conf
mongo_node.conf 作为mongod实例共享的布文件,内容如下:

storage:
    engine: wiredTiger
    directoryPerDB: true
    journal:
        enabled: true
systemLog:
    destination: file
    logAppend: true
operationProfiling:
  slowOpThresholdMs: 10000
replication:
    oplogSizeMB: 10240
processManagement:
    fork: true
net:
    http:
      enabled: false
security:
    authorization: "enabled"

挑表明可参照这里

B. mongos 配置文件 mongos.conf

systemLog:
    destination: file
    logAppend: true
processManagement:
    fork: true
net:
    http:
      enabled: false

 

4. 创建keyfile文件

cd /opt/local/mongo-cluster
mkdir keyfile
openssl rand -base64 756 > mongo.key
chmod 400 mongo.key
mv mongo.key keyfile

mongo.key 以擅自算法生成,用作节点内通讯的密钥文件

  1. 1、shards:一个shard为同一组mongod,日常一组也简单宝,主从或相互为主导,这同样组mongod中之数经常一样的,具体可见《mongodb分布式的数复制》。数据分割按有序分割情势,每个分片上的数额也某一样限之数据块,故可协理指定分片的限制查询,那跟google的BigTable 类似。数据片有指定的十分可怜容量,一旦有数据块的容量增长至最好老容量时,这一个数据块会切分成为个别片;当分片的数额了多时,数据块用被搬到系统的其它分片中。其它,新的分片参预时,数据块呢相会迁移。 
  2.   
  3. 2、mongos:可以出差不三个,非凡给一个控制主题,负责路由和协调操作,使得集群像一个一体化的系。mongos可以运行在其它一样玉服务器上,有些采取在shards服务器上,也起位于client 服务器上之。mongos启动时欲从config servers上获取基本信息,然后接受client端的请,路由于到shards服务器上,然后整理再次回到的结果作回为client服务器。 
  4.   
  5. 3、config server:存储集群的音信,包括分片和片数据音讯。重要囤积块数据信息,每个config server上且有一样卖有片数据信息的正片,以保证每令config server上之数额的一致性。 
  6.   
  7. 4、shard key:为了分割数据集,需要制订分片key的格式,类似于用于索引的key格式,日常由一个要么多独字段组成以散发数据,比如: 
  8.   
  9. { name : 1 } 
  10. { _id : 1 } 
  11. { lastname : 1, firstname : 1 } 
  12. { tag : 1, timestamp : -1 } 
  13.   
  14. mongoDB的分片为有序存储(1吗升序,-1吗降序),shard key相邻的数量一般会设有同样台服务
  15. (数据块)上。 

5. 创节点目录

WORK_DIR=/opt/local/mongo-cluster
mkdir -p $WORK_DIR/nodes/config/n1/data
mkdir -p $WORK_DIR/nodes/config/n2/data
mkdir -p $WORK_DIR/nodes/config/n3/data

mkdir -p $WORK_DIR/nodes/shard1/n1/data
mkdir -p $WORK_DIR/nodes/shard1/n2/data
mkdir -p $WORK_DIR/nodes/shard1/n3/data

mkdir -p $WORK_DIR/nodes/shard2/n1/data
mkdir -p $WORK_DIR/nodes/shard2/n2/data
mkdir -p $WORK_DIR/nodes/shard2/n3/data

mkdir -p $WORK_DIR/nodes/mongos/n1
mkdir -p $WORK_DIR/nodes/mongos/n2
mkdir -p $WORK_DIR/nodes/mongos/n3

因为config 节点1
为条例,nodes/config/n1/data是数目录,而pid文件、日志文件还存放于n1目录
坐mongos 节点1 为条例,nodes/mongos/n1 存放了pid文件与日志文件

 三、mongodb分布式部署形式

季、搭建集群

服务器部署得发多种形式。首先,每台config
server、mongos、mongod都可以是单独的服务器,但这么会招致一些服务器的浪费,比如config
server。下图也物理机共享的集群部署,不需要额外加机器。

1. Config副本集

论以下脚论启动3独Config实例

WORK_DIR=/opt/local/mongo-cluster
KEYFILE=$WORK_DIR/keyfile/mongo.key
CONFFILE=$WORK_DIR/conf/mongo_node.conf
MONGOD=$WORK_DIR/bin/mongod

$MONGOD --port 26001 --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/nodes/config/n1/data --pidfilepath $WORK_DIR/nodes/config/n1/db.pid --logpath $WORK_DIR/nodes/config/n1/db.log --config $CONFFILE

$MONGOD --port 26002 --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/nodes/config/n2/data --pidfilepath $WORK_DIR/nodes/config/n2/db.pid --logpath $WORK_DIR/nodes/config/n2/db.log --config $CONFFILE

$MONGOD --port 26003 --configsvr --replSet configReplSet --keyFile $KEYFILE --dbpath $WORK_DIR/nodes/config/n3/data --pidfilepath $WORK_DIR/nodes/config/n3/db.pid --logpath $WORK_DIR/nodes/config/n3/db.log --config $CONFFILE

亟需成启动后,输出日志如下:

about to fork child process, waiting until server is ready for connections.
forked process: 4976
child process started successfully, parent exiting

这会儿通过ps 命令也可视3个启动之进程实例。

连日其中一个Config进程,执行副本集开首化

./bin/mongo --port 26001 --host 127.0.0.1
> MongoDB server version: 3.4.7
> cfg={
    _id:"configReplSet", 
    configsvr: true,
    members:[
        {_id:0, host:'127.0.0.1:26001'},
        {_id:1, host:'127.0.0.1:26002'}, 
        {_id:2, host:'127.0.0.1:26003'}
    ]};
rs.initiate(cfg);

其中configsvr:true指明这是一个用来分片集群的Config副本集。
至于副本集配置可参照这里

 

2. 创建分片

按以下脚论启动Shard1的3独实例

WORK_DIR=/opt/local/mongo-cluster
KEYFILE=$WORK_DIR/keyfile/mongo.key
CONFFILE=$WORK_DIR/conf/mongo_node.conf
MONGOD=$WORK_DIR/bin/mongod

echo "start shard1 replicaset"

$MONGOD --port 27001 --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/nodes/shard1/n1/data --pidfilepath $WORK_DIR/nodes/shard1/n1/db.pid --logpath $WORK_DIR/nodes/shard1/n1/db.log --config $CONFFILE
$MONGOD --port 27002 --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/nodes/shard1/n2/data --pidfilepath $WORK_DIR/nodes/shard1/n2/db.pid --logpath $WORK_DIR/nodes/shard1/n2/db.log --config $CONFFILE
$MONGOD --port 27003 --shardsvr --replSet shard1 --keyFile $KEYFILE --dbpath $WORK_DIR/nodes/shard1/n3/data --pidfilepath $WORK_DIR/nodes/shard1/n3/db.pid --logpath $WORK_DIR/nodes/shard1/n3/db.log --config $CONFFILE

内需成启动后,输出日志如下:

about to fork child process, waiting until server is ready for connections.
forked process: 5976
child process started successfully, parent exiting

这时通过ps 命令也足以看到3独启动之Shard进程实例。

老是其中一个Shard进程,执行副本集起头化

./bin/mongo --port 27001 --host 127.0.0.1
> MongoDB server version: 3.4.7
> cfg={
    _id:"shard1", 
    members:[
        {_id:0, host:'127.0.0.1:27001'},
        {_id:1, host:'127.0.0.1:27002'}, 
        {_id:2, host:'127.0.0.1:27003'}
    ]};
rs.initiate(cfg);

参考以上步骤,启动Shard2的3单实例进程,并先河化副本集。

图片 3

3. 启动mongos路由

施行以下脚论启动3个mongos进程

WORK_DIR=/opt/local/mongo-cluster
KEYFILE=$WORK_DIR/keyfile/mongo.key
CONFFILE=$WORK_DIR/conf/mongos.conf
MONGOS=$WORK_DIR/bin/mongos

echo "start mongos instances"
$MONGOS --port=25001 --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/nodes/mongos/n1/db.pid --logpath $WORK_DIR/nodes/mongos/n1/db.log --config $CONFFILE
$MONGOS --port 25002 --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/nodes/mongos/n2/db.pid --logpath $WORK_DIR/nodes/mongos/n2/db.log --config $CONFFILE
$MONGOS --port 25003 --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile $KEYFILE --pidfilepath $WORK_DIR/nodes/mongos/n3/db.pid --logpath $WORK_DIR/nodes/mongos/n3/db.log --config $CONFFILE

需成启动后,通过ps命令看到mongos进程:

dbuser      7903    1  0 17:49 ?        00:00:00 /opt/local/mongo-cluster/bin/mongos --port=25001 --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile /opt/local/mongo-cluster/keyfile/mongo.key --pidfilepath /opt/local/mongo-cluster/nodes/mongos/n1/db.pid --logpath /opt/local/mongo-cluster/nodes/mongos/n1/db.log --config /opt/local/mongo-cluster/conf/mongos.conf
dbuser      7928    1  0 17:49 ?        00:00:00 /opt/local/mongo-cluster/bin/mongos --port 25002 --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile /opt/local/mongo-cluster/keyfile/mongo.key --pidfilepath /opt/local/mongo-cluster/nodes/mongos/n2/db.pid --logpath /opt/local/mongo-cluster/nodes/mongos/n2/db.log --config /opt/local/mongo-cluster/conf/mongos.conf
dbuser      7954    1  0 17:49 ?        00:00:00 /opt/local/mongo-cluster/bin/mongos --port 25003 --configdb configReplSet/127.0.0.1:26001,127.0.0.1:26002,127.0.0.1:26003 --keyFile /opt/local/mongo-cluster/keyfile/mongo.key --pidfilepath /opt/local/mongo-cluster/nodes/mongos/n3/db.pid --logpath /opt/local/mongo-cluster/nodes/mongos/n3/db.log --config /opt/local/mongo-cluster/conf/mongos.conf

接通间一个mongos实例,执行长分片操作:

./bin/mongo --port 25001 --host 127.0.0.1
mongos> MongoDB server version: 3.4.7
mongos> sh.addShard("shard1/127.0.0.1:27001")
{ "shardAdded" : "shard1", "ok" : 1 }
mongos> sh.addShard("shard2/127.0.0.1:27004")
{ "shardAdded" : "shard2", "ok" : 1 }

由来,分布式集群架构启动了,但越来越操作需要事先上加用户。

    当然也有其他的方案,比如把mongos部署在所有的mongod(server1-6)上,又或者在每个运用服务器(server7)上部署mongos。这样部署有个好处在于,appserver和mongos之间的通信建立在localhost interface上,减少了通信成本。当然,此乃官方说法,但本人有想法,尽管减少了appserver和mongos之间的通信成本,但mongos与mongod之间的通信成本却增加了,而且把mongos部署在appserver上并不是很利于sa管理,mongoDB应该是一个相对独立的系统,与应用的耦合度应该尽量降到最低,万一应用想要换数据库,也能多少减少些工作量。

4. 伊始化用户

连接中一个mongos实例,添加管理员用户

use admin
db.createUser({
    user:'admin',pwd:'Admin@01',
    roles:[
        {role:'clusterAdmin',db:'admin'},
        {role:'userAdminAnyDatabase',db:'admin'},
        {role:'dbAdminAnyDatabase',db:'admin'},
        {role:'readWriteAnyDatabase',db:'admin'}
]})

最近admin用户有集群管理权限、所有数据库的操作权限。
消专注的是,在首先赖创用户之后,localexception不再有效,接下的具备操作要求优先通过鉴权。

use admin
db.auth('admin','Admin@01')

反省集群状态

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("5aa39c3e915210dc501a1dc8")
}
  shards:
    {  "_id" : "shard1",  "host" : "shard1/127.0.0.1:27001,127.0.0.1:27002,127.0.0.1:27003",  "state" : 1 }
    {  "_id" : "shard2",  "host" : "shard2/127.0.0.1:27004,127.0.0.1:27005,127.0.0.1:27006",  "state" : 1 }
  active mongoses:
    "3.4.7" : 3
autosplit:
    Currently enabled: yes

集群用户
分片集众多被的走访都会合经过mongos入口,而鉴权数据是储存在config副本集中的,即config实例中system.users数据库存储了集群用户和角色权限配置。mongos与shard实例则经过中间鉴权(keyfile机制)完成,因此shard实例上可以经过抬高本地用户以福利操作管理。在一个抱本集上,只待以Primary节点上加上用户以及权限,相关数据会自动同步到Secondary节点。
至于集群鉴权
当本案例中,我们为零星只分片副本集都加加了地面admin用户。

通过mongostat工具得显示集群拥有角色:

          host insert query update delete getmore command dirty used flushes mapped vsize  res faults qrw arw net_in net_out conn    set repl                time
127.0.0.1:27001    *0    *0    *0    *0      0    6|0  0.1% 0.1%      0        1.49G 44.0M    n/a 0|0 0|0  429b  56.1k  25 shard1  PRI Mar 10 19:05:13.928
127.0.0.1:27002    *0    *0    *0    *0      0    7|0  0.1% 0.1%      0        1.43G 43.0M    n/a 0|0 0|0  605b  55.9k  15 shard1  SEC Mar 10 19:05:13.942
127.0.0.1:27003    *0    *0    *0    *0      0    7|0  0.1% 0.1%      0        1.43G 43.0M    n/a 0|0 0|0  605b  55.9k  15 shard1  SEC Mar 10 19:05:13.946
127.0.0.1:27004    *0    *0    *0    *0      0    6|0  0.1% 0.1%      0        1.48G 43.0M    n/a 0|0 0|0  546b  55.8k  18 shard2  PRI Mar 10 19:05:13.939
127.0.0.1:27005    *0    *0    *0    *0      0    6|0  0.1% 0.1%      0        1.43G 42.0M    n/a 0|0 0|0  540b  54.9k  15 shard2  SEC Mar 10 19:05:13.944
127.0.0.1:27006    *0    *0    *0    *0      0    6|0  0.1% 0.1%      0        1.46G 44.0M    n/a 0|0 0|0  540b  54.9k  17 shard2  SEC Mar 10 19:05:13.936

季、mongodb分布式的安

五、数据操作

在案例被,创立appuser用户、为数据库实例appdb启动分片。

use appdb
db.createUser({user:'appuser',pwd:'AppUser@01',roles:[{role:'dbOwner',db:'appdb'}]})
sh.enableSharding("appdb")

创设集合book,为该执行分片起先化。

use appdb
db.createCollection("book")
db.device.ensureIndex({createTime:1})
sh.shardCollection("appdb.book", {bookId:"hashed"}, false, { numInitialChunks: 4} )

连续朝device集合写入1000W条记下,观看chunks的遍布情状

use appdb
var cnt = 0;
for(var i=0; i<1000; i++){
    var dl = [];
    for(var j=0; j<100; j++){
        dl.push({
                "bookId" : "BBK-" + i + "-" + j,
                "type" : "Revision",
                "version" : "IricSoneVB0001",
                "title" : "Jackson's Life",
                "subCount" : 10,
                "location" : "China CN Shenzhen Futian District",
                "author" : {
                      "name" : 50,
                      "email" : "RichardFoo@yahoo.com",
                      "gender" : "female"
                },
                "createTime" : new Date()
            });
      }
      cnt += dl.length;
      db.book.insertMany(dl);
      print("insert ", cnt);
}

执行db.book.getShardDistribution(),输出如下:

Shard shard1 at shard1/127.0.0.1:27001,127.0.0.1:27002,127.0.0.1:27003
data : 13.41MiB docs : 49905 chunks : 2
estimated data per chunk : 6.7MiB
estimated docs per chunk : 24952

Shard shard2 at shard2/127.0.0.1:27004,127.0.0.1:27005,127.0.0.1:27006
data : 13.46MiB docs : 50095 chunks : 2
estimated data per chunk : 6.73MiB
estimated docs per chunk : 25047

Totals
data : 26.87MiB docs : 100000 chunks : 4
Shard shard1 contains 49.9% data, 49.9% docs in cluster, avg obj size on shard : 281B
Shard shard2 contains 50.09% data, 50.09% docs in cluster, avg obj size on shard : 281B

1、下载

总结

  • Mongodb集群架构由Mongos、Config副本集和多独分片组成;
    安装过程遭到优先先河化Config副本集、分片副本集,最后通过Mongos添加分片
  • Config副本集存储了集群访问的用户和角色权限,为了方便管理,可以让分片副本集添加本地用户
  • Mongodb提供了LocalException机制,首不成安装数据库时可在本机直接抬高用户
  1. wget http://fastdl.mongodb.org/linux/mongodb-linux-x86\_64-2.0.4.tgz 

2、安装

  1. tar zxvf mongodb-linux-2.0.4.tgz 
  2. cp -fr mongodb-linux-*2.0.4/* /data/mongodb/ 
  3. mkdir -p /data/mongodb/data/                                     #创数量存储目录 
  4. mkdir -p /data/mongodb/log/                                      #始建日志存储目录 
  5. mkdir -p /data/mongodb/config/                                   #成立布局存储目录 
  6. mkdir -p /data/mongodb/arbiter/                                  #开创仲裁节点存储目录 

3、单机格局和个参数表明

  1. mongod –fork –bind_ip 127.0.0.1 –port 11811 –dbpath /data0/mongodb/data –directoryperdb –logpath /data0/mongodb/log/db1.log –logappend  –nohttpinterface 
  2. netstat -ntlp|grep mongod 

 

  1.  简单的参数表明: 
  2. –logpath 日志文件路径 
  3. –master 指定为主机器 
  4. –slave 指定为自机器 
  5. –source 指定主机器的IP地址 
  6. –pologSize 指定日志文件大小不越64M.因为resync是不行操作量大且耗时,最好通过设置一个足足大的oplogSize来制止resync(默认的 oplog大小是闲磁盘大小的5%)。 
  7. –logappend 日志文件末尾添加 
  8. –port 启用端口号 
  9. –fork 以后台运行 
  10. –only 指定只复制哪一个数额库 
  11. –slavedelay 指从复制检测的年月间隔 
  12. –auth 是否用证实权限登录(用户称以及密码) 
  13. –noauth 不需表达权限登录(用户称及密码) 

五、集群形式mongos,mongod,configsvr

  1. 1.Shard分片– 
  2. 率先组分片  
  3. 192.168.200.226:     
  4. /data/mongodb/bin/mongod –replSet rep1 –fork –port 11813 –maxConns 65535 –dbpath /data/mongodb/data –directoryperdb –logpath /data/mongodb/log/db.log –logappend –nohttpinterface 
  5. #启动rep1分片的一个数节点
  6. /data/mongodb/bin/mongos –configdb 192.168.201.226:11812 –port 11811 –fork –chunkSize 256 –logpath /data/mongodb/log/ms.log  #开行路由于节点,读取201.226达成之配备节点的布文件,(在配备节点启动后启动)
  7. /data/mongodb/bin/mongod –replSet rep1 –fork –port 11814 –dbpath /data/mongodb/arbiter –directoryperdb –logpath /data/mongodb/log/arbiter.log –logappend –nohttpinterface 
  8. #启航分片的决定节点
  9.   
  10. 192.168.201.226:     
  11. /data/mongodb/bin/mongod –replSet rep1 –fork –port 11813 –maxConns 65535 –dbpath /data/mongodb/data –directoryperdb –logpath /data/mongodb/log/db.log –logappend –nohttpinterface
  12.  #开行rep1分片的亚独数据节点
  13. /data/mongodb/bin/mongos –configdb 192.168.201.226:11812 –port 11811 –fork –chunkSize 256 –logpath /data/mongodb/log/ms.log 
  14. #先导第二单行程由于节点 (在配备节点启动后启动)
  15.   
  16. 2.ConfigServer— 
  17.     #启动config server  
  18.     192.168.201.226:     
  19.         /data/mongodb/bin/mongod –configsvr –dbpath /data/mongodb/config –port 11812 –fork –logpath /data/mongodb/log/mc.log 
  20.    #起步配置节点,注意安排节点应该事先启动,不然路由于节点读取不至布置节点音信则会启动失利。
  21. 3.Mongos路由— 
  22.     #启动mongos,指定config server, chunkSize 256M 
  23.     192.168.201.226: 
  24.         /data/mongodb/bin/mongos –configdb 192.168.201.226:11812 –port 11811 –fork –chunkSize 256 –logpath /data/mongodb/log/ms.log 
  25. #开行路由于节点

由机械有限,只布置了一个shard分片,该分片里发2个节点,新添分片只需要对应改replSet
名称即可。

  1. 4.安排replSet: 连接任一mongod members 
  2.  
  3. mongo 192.168.201.226:11813 
  4. config = {_id: ‘rep1’, members: [ 
  5. {_id: 0, host: ‘192.168.200.226:11813’, priority: 2},                     #priority 为定义优先级,默认为1,高优先级会吃认为是主节点优先启用。 
  6. {_id: 1, host: ‘192.168.201.226:11813’}, 
  7. {_id: 2, host: ‘192.168.200.226:11814’, arbiterOnly: true}] 
  8.     rs.initiate(config); 
  9.     rs.status() 

 

  1. 5.连接mongos增加shard 80G 
  2.  
  3.     mongo 192.168.201.226:11811/admin 
  4.     show dbs 
  5.     use admin 
  6.     db.runCommand({addshard:’rep1/192.168.201.226:11813,192.168.200.226:11813′,maxsize:81920}) 
  7.     db.runCommand({listshards:1}) 

 

  1. 6.老是mongos扩充创制test库和c1集合,并测试 
  2.  
  3.     mongo 192.168.201.226:11811/admin 
  4.     db.runCommand({enablesharding:’test’}) 
  5.     printShardingStatus() 
  6.     db.runCommand({shardcollection:’test.auto_increment_id’, key:{_id:1}, unique : true}) 
  7.     db.runCommand({shardcollection:’test.c1′, key:{_id:1}, unique : true}) 
  8.     for (var i = 1; i <= 100; i++)db.c1.save({id:i,value1:”1234567890″,value2:”1234567890″,value3:”1234567890″,value4:”1234567890″}) 
  9.     db.c1.stats() 
  10.   
  11. db.createCollection(“cap_coll”, {capped:true, size:100000, max:100}); 
  12. db.mycoll.validate(); 
  13.  
  14. 7.检查: db.printCollectionStats()
  15.  
  16. 8.管理: mongo 127.0.0.1:11811
  17. show dbs
  18. use admin
  19. show collections
  20. db.serverStatus()
  21. db.shutdownServer()
  22. exit

 

  1. 9.索引: 
  2. db.product_data.ensureIndex({data_id: 1}, {unique: true,dropDups: true}); #创设索引   
  3. db.product_data.dropIndexes();  #抹索引
 至此,mongodb的分布式架构就架起来了,并且通过测试和log的分析,可看服务是否正常,下面就需要php客户端的支持,和程序的运行,之后加到监控里,就可以在线上部署使用了。

博客推荐著作

留下评论

网站地图xml地图