SlideShare uma empresa Scribd logo
1 de 9
2011/9/16 制作人:酷酷   http://weibo.com/lidaohang




Mongo 之架构部署 (Replica Sets+Sharding)




1、环境




要构建一个 MongoDB Sharding Cluster,需要三种角色:
•Shard Server: mongod 实例,用于存储实际的数据块。
•Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk 信息。
•Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程
数据库。



10.168.0.103        10.168.0.107                10.168.0.108   10.168.0.109
Shard1              Shard2                      Shard3         Shard1
Shard2              Shard1                      Shard2         Shard3
Shard3              Shard3                      Shard1         Shard2



1.节点:

2011/9/16 制作人:酷酷   http://weibo.com/lidaohang
2011/9/16 制作人:酷酷       http://weibo.com/lidaohang



S1: 10.168.0.103,10.168.0.107,10.168.0.109,10.168.0.108(arbiter)
S2: 10.168.0.107,10.168.0.103,10.168.0.108,10.168.0.109(arbiter)
S3: 10.168.0.108,10.168.0.103,10.168.0.109,10.168.0.107(arbiter)




主机                               端口信息
10.168.0.103                     mongod shard1:27017
                                 mongod shard2:27018
                                 mongod shard3:27019
                                 mongod config:30000
                                 mongs:40000
10.168.0.107                     mongod shard1:27017
                                 mongod shard2:27018
                                 mongod shard3:27019
                                 mongod config:30000
                                 mongs:40000
10.168.0.108                     mongod shard1:27017
                                 mongod shard2:27018
                                 mongod shard3:27019
                                 mongod config:30000
                                 mongs:40000
10.168.0.109                     mongod shard1:27017
                                 mongod shard2:27018
                                 mongod shard3:27019
                                 mongod config:30000
                                 mongs:40000




2、安装部署


软件准备及目录
1.下载 mongodb 程序
 curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
2.解压 mongodb-linux-x86_64-2.0.0.tgz

2011/9/16 制作人:酷酷       http://weibo.com/lidaohang
2011/9/16 制作人:酷酷       http://weibo.com/lidaohang



 tar zxvf mongodb-linux-x86_64-2.0.0.tgz
3.重命名 mongodb-linux-x86_64-2.0.0.tgz 为 mongodb
 mv mongodb-linux-x86_64-2.0.0 mongodb
4.进入 mongodb 目录
 cd mongodb
5.新建文件夹 data
 mkdir data




配置 Replica Sets,Config Server

10.168.0.103
1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名)
mkdir                 -p               /home/testadmin/mongodb/data/shard1
mkdir                 -p               /home/testadmin/mongodb/data/shard2
mkdir                 -p               /home/testadmin/mongodb/data/shard3
mkdir -p /home/testadmin/mongodb/data/config
mkdir                 -p               /home/testadmin/mongodb/logs/shard1
mkdir                 -p               /home/testadmin/mongodb/logs/shard2
mkdir                 -p               /home/testadmin/mongodb/logs/shard3
mkdir -p /home/testadmin/mongodb/logs/config
mkdir -p /home/testadmin/mongodb/logs/mongos

2.配置 mongod
/testadmin/mongodb/bin/mongod --fork --shardsvr --port 27017 --dbpath
/home/testadmin/mongodb/data/shard1/--logpath/home/testadmin/mongodb/logs/shard1/log.log
--logappend --replSet s1 --auth --rest

/testadmin/mongodb/bin/mongod          --fork          --shardsvr         --port          27018
--dbpath                                              /home/testadmin/mongodb/data/shard2/--
logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet s2 --auth --rest

/testadmin/mongodb/bin/mongod--fork--shardsvr--port                                       27019
--dbpath                                              /home/testadmin/mongodb/data/shard3/--
logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest

/testadmin/mongodb/bin/mongod         --fork          --configsvr         --port      30000
--dbpath                                               /home/testadmin/mongodb/data/config/--
logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest

3.查看 mongod 的进程是否启动
ps aux | grep mongodb | grep -v grep



2011/9/16 制作人:酷酷       http://weibo.com/lidaohang
2011/9/16 制作人:酷酷       http://weibo.com/lidaohang



4.初始化 replica sets
/testadmin/mongodb/bin/mongo --port 27017

                       config            =        {_id:        's1',      members:        [
                                              {_id:     0,     host:    '10.168.0.103:27017'},
    {_id: 1, host: '10.168.0.107:27017'},

                                              {_id:    2,     host:       '10.168.0.109:27017'},
                          {_id:     3,       host: '10.168.0.108:27017', arbiterOnly: true}
                                                                                 ]}
                                                                   rs.initiate(config)
  rs.status()



10.168.0.107
1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名)
mkdir                 -p               /home/testadmin/mongodb/data/shard1
mkdir                 -p               /home/testadmin/mongodb/data/shard2
mkdir                 -p               /home/testadmin/mongodb/data/shard3
mkdir -p /home/testadmin/mongodb/data/config
mkdir                 -p               /home/testadmin/mongodb/logs/shard1
mkdir                 -p               /home/testadmin/mongodb/logs/shard2
mkdir                 -p               /home/testadmin/mongodb/logs/shard3
mkdir -p /home/testadmin/mongodb/logs/config
mkdir -p /home/testadmin/mongodb/logs/mongos

2.配置 mongod
/testadmin/mongodb/bin/mongod          --fork          --shardsvr        --port          27017
--dbpath                                              /home/testadmin/mongodb/data/shard1/--
logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest

/testadmin/mongodb/bin/mongod         --fork          --shardsvr        --port         27018--
dbpath                                                /home/testadmin/mongodb/data/shard2/--
logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet shard2 --auth --rest

/testadmin/mongodb/bin/mongod          --fork          --shardsvr        --port           27019
--dbpath                                              /home/testadmin/mongodb/data/shard3/--
logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest

/testadmin/mongodb/bin/mongod         --fork          --configsvr         --port      30000
--dbpath                                               /home/testadmin/mongodb/data/config/--
logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest

3.查看 mongod 的进程是否启动

2011/9/16 制作人:酷酷       http://weibo.com/lidaohang
2011/9/16 制作人:酷酷       http://weibo.com/lidaohang



ps aux | grep mongodb | grep -v grep

4.初始化 replica sets

/testadmin/mongodb/bin/mongo --port 27018

                 config           =          {_id:       's2',          members:         [
                                            {_id:     0,     host:      '10.168.0.107:27018'},
    {_id: 1, host: '10.168.0.103:27018'},

                                            {_id:    1,     host:       '10.168.0.108:27018'},
                          {_id:       2,   host: '10.168.0.109:27018', arbiterOnly: true}
                                                                               ]}
                                                                 rs.initiate(config)
  rs.status()




10.168.0.108
1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名)
mkdir                 -p               /home/testadmin/mongodb/data/shard1
mkdir                 -p               /home/testadmin/mongodb/data/shard2
mkdir                 -p               /home/testadmin/mongodb/data/shard3
mkdir -p /home/testadmin/mongodb/data/config
mkdir                 -p               /home/testadmin/mongodb/logs/shard1
mkdir                 -p               /home/testadmin/mongodb/logs/shard2
mkdir                 -p               /home/testadmin/mongodb/logs/shard3
mkdir -p /home/testadmin/mongodb/logs/config
mkdir -p /home/testadmin/mongodb/logs/mongos

2.配置 mongod
/testadmin/mongodb/bin/mongod          --fork          --shardsvr        --port          27017
--dbpath                                              /home/testadmin/mongodb/data/shard1/--
logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest

/testadmin/mongodb/bin/mongod         --fork          --shardsvr        --port         27018--
dbpath                                                /home/testadmin/mongodb/data/shard2/--
logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet shard2 --auth --rest

/testadmin/mongodb/bin/mongod          --fork          --shardsvr        --port           27019
--dbpath                                              /home/testadmin/mongodb/data/shard3/--
logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest

/testadmin/mongodb/bin/mongod               --fork        --configsvr          --port        30000

2011/9/16 制作人:酷酷       http://weibo.com/lidaohang
2011/9/16 制作人:酷酷       http://weibo.com/lidaohang



--dbpath                                               /home/testadmin/mongodb/data/config/--
logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest

3.查看 mongod 的进程是否启动
ps aux | grep mongodb | grep -v grep

4.初始化 replica sets

/testadmin/mongodb/bin/mongo --port 27018

                 config           =          {_id:       's2',        members:         [
                                            {_id:     0,     host:    '10.168.0.108:27019'},
    {_id: 1, host: '10.168.0.103:27019'},

                                            {_id:    1,     host:       '10.168.0.109:27019'},
                          {_id:       2,   host: '10.168.0.107:27019', arbiterOnly: true}
                                                                               ]}
                                                                 rs.initiate(config)
  rs.status()



10.168.0.109
1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名)
mkdir                 -p               /home/testadmin/mongodb/data/shard1
mkdir                 -p               /home/testadmin/mongodb/data/shard2
mkdir                 -p               /home/testadmin/mongodb/data/shard3
mkdir -p /home/testadmin/mongodb/data/config
mkdir                 -p               /home/testadmin/mongodb/logs/shard1
mkdir                 -p               /home/testadmin/mongodb/logs/shard2
mkdir                 -p               /home/testadmin/mongodb/logs/shard3
mkdir -p /home/testadmin/mongodb/logs/config
mkdir -p /home/testadmin/mongodb/logs/mongos

2.配置 mongod
/testadmin/mongodb/bin/mongod          --fork          --shardsvr        --port          27017
--dbpath                                              /home/testadmin/mongodb/data/shard1/--
logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest

/testadmin/mongodb/bin/mongod         --fork          --shardsvr        --port         27018--
dbpath                                                /home/testadmin/mongodb/data/shard2/--
logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet shard2 --auth --rest

/testadmin/mongodb/bin/mongod               --fork         --shardsvr       --port        27019
--dbpath                                                  /home/testadmin/mongodb/data/shard3/--

2011/9/16 制作人:酷酷       http://weibo.com/lidaohang
2011/9/16 制作人:酷酷       http://weibo.com/lidaohang



logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest

/testadmin/mongodb/bin/mongod         --fork          --configsvr         --port      30000
--dbpath                                               /home/testadmin/mongodb/data/config/--
logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest

3.查看 mongod 的进程是否启动
ps aux | grep mongodb | grep -v grep


配置 Mongos(在每一台机子上建立路由)

/testadmin/mongodb/bin/mongos --fork --port 40000

--logpath/home/testadmin/logs/mongos/log.log --configdb

10.168.0.103:30000,10.168.0.107:30000,10.168.0.108:30000,10.168.0.109




添加分片
1 连接任意一台,其他无需这样操作:


/home/testadmin/bin/mongo                     --port               40000
use                                        admin
db.runCommand({addshard:'s1/10.168.0.103:27017,10.168.0.107:27017,

10.168.0.109:27017'})
db.runCommand({addshard:'s2/10.168.0.107:27018,10.168.0.103:27018,

10.168.0.108:27018'                                 })
db.runCommand({addshard:'s3/10.168.0.108:27019,10.168.0.103:27017,

10.168.0.109:27019'                                       })



2011/9/16 制作人:酷酷       http://weibo.com/lidaohang
2011/9/16 制作人:酷酷      http://weibo.com/lidaohang




db.runCommand({ listshards:1 })

db.runCommand({                enablesharding:'weibo'             })
db.runCommand({ shardcollection:'weibo.test', key:{_id:1}   ,   unique   :   true   })
printShardingStatus()

db.data.stats();




3、用户认证


1.注意 1.9.1 之前复制集不支持用户认证,只能通过 keyFile 密匙文件,幸好这几天 2.0 正式
版出来了,很多功能问题都已解决。呵呵

注意:用户验证,启动 mongod 必须添加--auth
#设置用户名和密码
>use test
>db.addUser('mongo','456123');
>db.auth('mongo','456123')
>db.system.users.find() --查看该用户是否添加成功
>db.system.users.remove('mongo','456123')
>mongo 数据库 -u mongo -p


注意:启动时必须添加--auth 用户权限才会生效,第一次配置完成后,没效果就重启下。




2011/9/16 制作人:酷酷      http://weibo.com/lidaohang
2011/9/16 制作人:酷酷   http://weibo.com/lidaohang




4、鸭梨大了怎么办?添加服务器,怎么样添加呢?



添加 slave 节点
1、利用另外一台 secondary 机器传送数据
2、在新机器上中配置文件中添加 fastsync=true 配置(当需要从有数据中启动节点,那么必
须加上 fastsync=true ,否则启动会报错,如果是从主库直接同步所有数据,那么就不需要
添加这个参数)
3、启动后,在 primary 节点中添加节点
如:rs.add("10.73.24.171:9005") 当我们看到变为 secondary 后,就一切正常,可以正常提供
线上服务了
4、通过 rs.conf()命令查看现在的节点信息(需要 admin 库密码权限)
5、rs.remove()删除节点
6、添加 arbiter 节点:rs.addArb("10.73.24.171:19003")
7、添加延时备份机器:rs.add({_id:4,host:"10.55.22.176:9004",priority:0,slaveDelay:3600});
8、当出现这个错误时:replSet error RS102 too stale to catch up,我们可以
db.printReplicationInfo()查看主库、从库的 oplog 信息;
添加 sharding 节点

1.重复上面的操作添加 sharding




2011/9/16 制作人:酷酷   http://weibo.com/lidaohang

Mais conteúdo relacionado

Mais procurados

Dog svr
Dog svrDog svr
Dog svryxcwf
 
恶意网页分析实战
恶意网页分析实战恶意网页分析实战
恶意网页分析实战Huang Toby
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享晓锋 陈
 
D2 如何发现前端性能问题
D2 如何发现前端性能问题D2 如何发现前端性能问题
D2 如何发现前端性能问题aoao
 
MongoDB Basic
MongoDB BasicMongoDB Basic
MongoDB Basicsimplels
 
Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试kaerseng
 
Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護Justin Lin
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newYiwei Ma
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析Guangyao Cheng
 
Advanced heap exploitaion
Advanced heap exploitaionAdvanced heap exploitaion
Advanced heap exploitaionAngel Boy
 
缓存技术浅谈
缓存技术浅谈缓存技术浅谈
缓存技术浅谈Robbin Fan
 
Mongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosqlMongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosqltaocheng1989
 
Koa 正在等一個人
Koa 正在等一個人Koa 正在等一個人
Koa 正在等一個人Fred Chien
 
Myfox on NodeJS
Myfox on NodeJSMyfox on NodeJS
Myfox on NodeJSaleafs
 
ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-callsyushiang fu
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事Ben Lue
 
基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性babyyellow li
 
以太坊智能合約撰寫簡單教學
以太坊智能合約撰寫簡單教學以太坊智能合約撰寫簡單教學
以太坊智能合約撰寫簡單教學Nicholas Lin
 
Introduction to pig&zookeeper
Introduction to pig&zookeeperIntroduction to pig&zookeeper
Introduction to pig&zookeeperGuangyao Cheng
 

Mais procurados (19)

Dog svr
Dog svrDog svr
Dog svr
 
恶意网页分析实战
恶意网页分析实战恶意网页分析实战
恶意网页分析实战
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
 
D2 如何发现前端性能问题
D2 如何发现前端性能问题D2 如何发现前端性能问题
D2 如何发现前端性能问题
 
MongoDB Basic
MongoDB BasicMongoDB Basic
MongoDB Basic
 
Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试
 
Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
 
Advanced heap exploitaion
Advanced heap exploitaionAdvanced heap exploitaion
Advanced heap exploitaion
 
缓存技术浅谈
缓存技术浅谈缓存技术浅谈
缓存技术浅谈
 
Mongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosqlMongo db &lamp;redis,nosql
Mongo db &lamp;redis,nosql
 
Koa 正在等一個人
Koa 正在等一個人Koa 正在等一個人
Koa 正在等一個人
 
Myfox on NodeJS
Myfox on NodeJSMyfox on NodeJS
Myfox on NodeJS
 
ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-calls
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事
 
基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性基于linux-HA 的PG高可用性
基于linux-HA 的PG高可用性
 
以太坊智能合約撰寫簡單教學
以太坊智能合約撰寫簡單教學以太坊智能合約撰寫簡單教學
以太坊智能合約撰寫簡單教學
 
Introduction to pig&zookeeper
Introduction to pig&zookeeperIntroduction to pig&zookeeper
Introduction to pig&zookeeper
 

Destaque

Case study EduCoRe
Case study EduCoReCase study EduCoRe
Case study EduCoReLinks-up
 
Fabulares iv growing up
Fabulares iv growing upFabulares iv growing up
Fabulares iv growing upSimpony
 
Challenges of a mother
Challenges of a motherChallenges of a mother
Challenges of a motherSimpony
 
Why I should be on your team
Why I should be on your teamWhy I should be on your team
Why I should be on your teamdavidlanska
 
цахим тест
цахим тестцахим тест
цахим тестneegii
 
Spring 2 vega
Spring 2 vegaSpring 2 vega
Spring 2 vegaSimpony
 
The Global Social Media Check-up 2011
The Global Social Media Check-up 2011The Global Social Media Check-up 2011
The Global Social Media Check-up 2011EM3
 
Nathan’s nutrients
Nathan’s nutrientsNathan’s nutrients
Nathan’s nutrientstahniemonique
 
Social capital & Lifelong Learning
Social capital & Lifelong LearningSocial capital & Lifelong Learning
Social capital & Lifelong LearningColin Campbell
 
Develop and Program Computer Games Easily Training Courses
Develop and Program Computer Games Easily Training CoursesDevelop and Program Computer Games Easily Training Courses
Develop and Program Computer Games Easily Training CoursesRichard Sneyd
 
Case study FreqOUT
Case study FreqOUTCase study FreqOUT
Case study FreqOUTLinks-up
 
Case study Savvy Chavvy
Case study Savvy ChavvyCase study Savvy Chavvy
Case study Savvy ChavvyLinks-up
 

Destaque (20)

Case study EduCoRe
Case study EduCoReCase study EduCoRe
Case study EduCoRe
 
Fabulares iv growing up
Fabulares iv growing upFabulares iv growing up
Fabulares iv growing up
 
Jeni Jenkins Oral History
Jeni Jenkins Oral HistoryJeni Jenkins Oral History
Jeni Jenkins Oral History
 
Sena a
Sena aSena a
Sena a
 
Lidkurping 06.07.11
Lidkurping   06.07.11Lidkurping   06.07.11
Lidkurping 06.07.11
 
Challenges of a mother
Challenges of a motherChallenges of a mother
Challenges of a mother
 
Why I should be on your team
Why I should be on your teamWhy I should be on your team
Why I should be on your team
 
цахим тест
цахим тестцахим тест
цахим тест
 
Spring 2 vega
Spring 2 vegaSpring 2 vega
Spring 2 vega
 
The Global Social Media Check-up 2011
The Global Social Media Check-up 2011The Global Social Media Check-up 2011
The Global Social Media Check-up 2011
 
Nathan’s nutrients
Nathan’s nutrientsNathan’s nutrients
Nathan’s nutrients
 
Social capital & Lifelong Learning
Social capital & Lifelong LearningSocial capital & Lifelong Learning
Social capital & Lifelong Learning
 
Internet tarihi
Internet tarihiInternet tarihi
Internet tarihi
 
Mobile real estate program a
Mobile real estate program aMobile real estate program a
Mobile real estate program a
 
Develop and Program Computer Games Easily Training Courses
Develop and Program Computer Games Easily Training CoursesDevelop and Program Computer Games Easily Training Courses
Develop and Program Computer Games Easily Training Courses
 
Mobile real estate program a
Mobile real estate program aMobile real estate program a
Mobile real estate program a
 
Case study FreqOUT
Case study FreqOUTCase study FreqOUT
Case study FreqOUT
 
Q2 Evaluation
Q2 EvaluationQ2 Evaluation
Q2 Evaluation
 
03,04,05,06,07MARCO.pdf
03,04,05,06,07MARCO.pdf03,04,05,06,07MARCO.pdf
03,04,05,06,07MARCO.pdf
 
Case study Savvy Chavvy
Case study Savvy ChavvyCase study Savvy Chavvy
Case study Savvy Chavvy
 

Semelhante a Mongo db部署架构之优先方案

Mongodb
MongodbMongodb
Mongodbbj
 
Oda安装 恢复步骤
Oda安装 恢复步骤Oda安装 恢复步骤
Oda安装 恢复步骤n-lauren
 
Spark on Yarn & Mongodb(Big Data Platform)
Spark on Yarn & Mongodb(Big Data Platform)Spark on Yarn & Mongodb(Big Data Platform)
Spark on Yarn & Mongodb(Big Data Platform)柄宏 陳
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmmYiwei Ma
 
Mongo简介
Mongo简介Mongo简介
Mongo简介wuda0112
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境dbabc
 
SSDB 入门基础
SSDB 入门基础SSDB 入门基础
SSDB 入门基础ideawu
 
Mongo db技术交流
Mongo db技术交流Mongo db技术交流
Mongo db技术交流liuts
 
Android系统移植技术详解
Android系统移植技术详解Android系统移植技术详解
Android系统移植技术详解zzc89522
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365Peter Yi
 
Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)Yiwei Ma
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作FEG
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on praticeKenny (netman)
 
Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的mickchen
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式Stanley Ho
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and TutorialHo Kim
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档xuebao_zx
 

Semelhante a Mongo db部署架构之优先方案 (20)

Mongodb
MongodbMongodb
Mongodb
 
Oda安装 恢复步骤
Oda安装 恢复步骤Oda安装 恢复步骤
Oda安装 恢复步骤
 
Spark on Yarn & Mongodb(Big Data Platform)
Spark on Yarn & Mongodb(Big Data Platform)Spark on Yarn & Mongodb(Big Data Platform)
Spark on Yarn & Mongodb(Big Data Platform)
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmm
 
Mongo简介
Mongo简介Mongo简介
Mongo简介
 
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
 
SSDB 入门基础
SSDB 入门基础SSDB 入门基础
SSDB 入门基础
 
Mongo db技术交流
Mongo db技术交流Mongo db技术交流
Mongo db技术交流
 
Android系统移植技术详解
Android系统移植技术详解Android系统移植技术详解
Android系统移植技术详解
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)Mysql mmm安装指南(翻译)
Mysql mmm安装指南(翻译)
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的Juniper ScreenOS 基于Policy的
Juniper ScreenOS 基于Policy的
 
用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式用Raspberry PI學Linux驅動程式
用Raspberry PI學Linux驅動程式
 
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and Tutorial
 
Asm+aix
Asm+aixAsm+aix
Asm+aix
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 

Mais de Lucien Li

Nginx共享内存
Nginx共享内存Nginx共享内存
Nginx共享内存Lucien Li
 
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo dbLucien Li
 
iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门Lucien Li
 
iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门Lucien Li
 
Mongo快速入门
Mongo快速入门Mongo快速入门
Mongo快速入门Lucien Li
 

Mais de Lucien Li (6)

Nginx共享内存
Nginx共享内存Nginx共享内存
Nginx共享内存
 
ios分享
ios分享ios分享
ios分享
 
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo db
 
iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门iPhone,ios,Object-c基础入门
iPhone,ios,Object-c基础入门
 
iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门iPhone,ios,Object-C基础入门
iPhone,ios,Object-C基础入门
 
Mongo快速入门
Mongo快速入门Mongo快速入门
Mongo快速入门
 

Mongo db部署架构之优先方案

  • 1. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang Mongo 之架构部署 (Replica Sets+Sharding) 1、环境 要构建一个 MongoDB Sharding Cluster,需要三种角色: •Shard Server: mongod 实例,用于存储实际的数据块。 •Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk 信息。 •Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程 数据库。 10.168.0.103 10.168.0.107 10.168.0.108 10.168.0.109 Shard1 Shard2 Shard3 Shard1 Shard2 Shard1 Shard2 Shard3 Shard3 Shard3 Shard1 Shard2 1.节点: 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 2. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang S1: 10.168.0.103,10.168.0.107,10.168.0.109,10.168.0.108(arbiter) S2: 10.168.0.107,10.168.0.103,10.168.0.108,10.168.0.109(arbiter) S3: 10.168.0.108,10.168.0.103,10.168.0.109,10.168.0.107(arbiter) 主机 端口信息 10.168.0.103 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs:40000 10.168.0.107 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs:40000 10.168.0.108 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs:40000 10.168.0.109 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs:40000 2、安装部署 软件准备及目录 1.下载 mongodb 程序 curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz 2.解压 mongodb-linux-x86_64-2.0.0.tgz 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 3. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang tar zxvf mongodb-linux-x86_64-2.0.0.tgz 3.重命名 mongodb-linux-x86_64-2.0.0.tgz 为 mongodb mv mongodb-linux-x86_64-2.0.0 mongodb 4.进入 mongodb 目录 cd mongodb 5.新建文件夹 data mkdir data 配置 Replica Sets,Config Server 10.168.0.103 1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名) mkdir -p /home/testadmin/mongodb/data/shard1 mkdir -p /home/testadmin/mongodb/data/shard2 mkdir -p /home/testadmin/mongodb/data/shard3 mkdir -p /home/testadmin/mongodb/data/config mkdir -p /home/testadmin/mongodb/logs/shard1 mkdir -p /home/testadmin/mongodb/logs/shard2 mkdir -p /home/testadmin/mongodb/logs/shard3 mkdir -p /home/testadmin/mongodb/logs/config mkdir -p /home/testadmin/mongodb/logs/mongos 2.配置 mongod /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27017 --dbpath /home/testadmin/mongodb/data/shard1/--logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27018 --dbpath /home/testadmin/mongodb/data/shard2/-- logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet s2 --auth --rest /testadmin/mongodb/bin/mongod--fork--shardsvr--port 27019 --dbpath /home/testadmin/mongodb/data/shard3/-- logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest /testadmin/mongodb/bin/mongod --fork --configsvr --port 30000 --dbpath /home/testadmin/mongodb/data/config/-- logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest 3.查看 mongod 的进程是否启动 ps aux | grep mongodb | grep -v grep 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 4. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang 4.初始化 replica sets /testadmin/mongodb/bin/mongo --port 27017 config = {_id: 's1', members: [ {_id: 0, host: '10.168.0.103:27017'}, {_id: 1, host: '10.168.0.107:27017'}, {_id: 2, host: '10.168.0.109:27017'}, {_id: 3, host: '10.168.0.108:27017', arbiterOnly: true} ]} rs.initiate(config) rs.status() 10.168.0.107 1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名) mkdir -p /home/testadmin/mongodb/data/shard1 mkdir -p /home/testadmin/mongodb/data/shard2 mkdir -p /home/testadmin/mongodb/data/shard3 mkdir -p /home/testadmin/mongodb/data/config mkdir -p /home/testadmin/mongodb/logs/shard1 mkdir -p /home/testadmin/mongodb/logs/shard2 mkdir -p /home/testadmin/mongodb/logs/shard3 mkdir -p /home/testadmin/mongodb/logs/config mkdir -p /home/testadmin/mongodb/logs/mongos 2.配置 mongod /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27017 --dbpath /home/testadmin/mongodb/data/shard1/-- logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27018-- dbpath /home/testadmin/mongodb/data/shard2/-- logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet shard2 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27019 --dbpath /home/testadmin/mongodb/data/shard3/-- logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest /testadmin/mongodb/bin/mongod --fork --configsvr --port 30000 --dbpath /home/testadmin/mongodb/data/config/-- logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest 3.查看 mongod 的进程是否启动 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 5. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang ps aux | grep mongodb | grep -v grep 4.初始化 replica sets /testadmin/mongodb/bin/mongo --port 27018 config = {_id: 's2', members: [ {_id: 0, host: '10.168.0.107:27018'}, {_id: 1, host: '10.168.0.103:27018'}, {_id: 1, host: '10.168.0.108:27018'}, {_id: 2, host: '10.168.0.109:27018', arbiterOnly: true} ]} rs.initiate(config) rs.status() 10.168.0.108 1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名) mkdir -p /home/testadmin/mongodb/data/shard1 mkdir -p /home/testadmin/mongodb/data/shard2 mkdir -p /home/testadmin/mongodb/data/shard3 mkdir -p /home/testadmin/mongodb/data/config mkdir -p /home/testadmin/mongodb/logs/shard1 mkdir -p /home/testadmin/mongodb/logs/shard2 mkdir -p /home/testadmin/mongodb/logs/shard3 mkdir -p /home/testadmin/mongodb/logs/config mkdir -p /home/testadmin/mongodb/logs/mongos 2.配置 mongod /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27017 --dbpath /home/testadmin/mongodb/data/shard1/-- logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27018-- dbpath /home/testadmin/mongodb/data/shard2/-- logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet shard2 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27019 --dbpath /home/testadmin/mongodb/data/shard3/-- logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest /testadmin/mongodb/bin/mongod --fork --configsvr --port 30000 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 6. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang --dbpath /home/testadmin/mongodb/data/config/-- logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest 3.查看 mongod 的进程是否启动 ps aux | grep mongodb | grep -v grep 4.初始化 replica sets /testadmin/mongodb/bin/mongo --port 27018 config = {_id: 's2', members: [ {_id: 0, host: '10.168.0.108:27019'}, {_id: 1, host: '10.168.0.103:27019'}, {_id: 1, host: '10.168.0.109:27019'}, {_id: 2, host: '10.168.0.107:27019', arbiterOnly: true} ]} rs.initiate(config) rs.status() 10.168.0.109 1.创建相应的文件夹(注意此处的 testadmin 是客户端登陆名) mkdir -p /home/testadmin/mongodb/data/shard1 mkdir -p /home/testadmin/mongodb/data/shard2 mkdir -p /home/testadmin/mongodb/data/shard3 mkdir -p /home/testadmin/mongodb/data/config mkdir -p /home/testadmin/mongodb/logs/shard1 mkdir -p /home/testadmin/mongodb/logs/shard2 mkdir -p /home/testadmin/mongodb/logs/shard3 mkdir -p /home/testadmin/mongodb/logs/config mkdir -p /home/testadmin/mongodb/logs/mongos 2.配置 mongod /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27017 --dbpath /home/testadmin/mongodb/data/shard1/-- logpath/home/testadmin/mongodb/logs/shard1/log.log --logappend --replSet s1 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27018-- dbpath /home/testadmin/mongodb/data/shard2/-- logpath/home/testadmin/mongodb/logs/shard2/log.log --logappend --replSet shard2 --auth --rest /testadmin/mongodb/bin/mongod --fork --shardsvr --port 27019 --dbpath /home/testadmin/mongodb/data/shard3/-- 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 7. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang logpath/home/testadmin/mongodb/logs/shard3/log.log --logappend --replSet s3 --auth --rest /testadmin/mongodb/bin/mongod --fork --configsvr --port 30000 --dbpath /home/testadmin/mongodb/data/config/-- logpath/home/testadmin/mongodb/logs/config/log.log --logappend --auth --rest 3.查看 mongod 的进程是否启动 ps aux | grep mongodb | grep -v grep 配置 Mongos(在每一台机子上建立路由) /testadmin/mongodb/bin/mongos --fork --port 40000 --logpath/home/testadmin/logs/mongos/log.log --configdb 10.168.0.103:30000,10.168.0.107:30000,10.168.0.108:30000,10.168.0.109 添加分片 1 连接任意一台,其他无需这样操作: /home/testadmin/bin/mongo --port 40000 use admin db.runCommand({addshard:'s1/10.168.0.103:27017,10.168.0.107:27017, 10.168.0.109:27017'}) db.runCommand({addshard:'s2/10.168.0.107:27018,10.168.0.103:27018, 10.168.0.108:27018' }) db.runCommand({addshard:'s3/10.168.0.108:27019,10.168.0.103:27017, 10.168.0.109:27019' }) 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 8. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang db.runCommand({ listshards:1 }) db.runCommand({ enablesharding:'weibo' }) db.runCommand({ shardcollection:'weibo.test', key:{_id:1} , unique : true }) printShardingStatus() db.data.stats(); 3、用户认证 1.注意 1.9.1 之前复制集不支持用户认证,只能通过 keyFile 密匙文件,幸好这几天 2.0 正式 版出来了,很多功能问题都已解决。呵呵 注意:用户验证,启动 mongod 必须添加--auth #设置用户名和密码 >use test >db.addUser('mongo','456123'); >db.auth('mongo','456123') >db.system.users.find() --查看该用户是否添加成功 >db.system.users.remove('mongo','456123') >mongo 数据库 -u mongo -p 注意:启动时必须添加--auth 用户权限才会生效,第一次配置完成后,没效果就重启下。 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang
  • 9. 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang 4、鸭梨大了怎么办?添加服务器,怎么样添加呢? 添加 slave 节点 1、利用另外一台 secondary 机器传送数据 2、在新机器上中配置文件中添加 fastsync=true 配置(当需要从有数据中启动节点,那么必 须加上 fastsync=true ,否则启动会报错,如果是从主库直接同步所有数据,那么就不需要 添加这个参数) 3、启动后,在 primary 节点中添加节点 如:rs.add("10.73.24.171:9005") 当我们看到变为 secondary 后,就一切正常,可以正常提供 线上服务了 4、通过 rs.conf()命令查看现在的节点信息(需要 admin 库密码权限) 5、rs.remove()删除节点 6、添加 arbiter 节点:rs.addArb("10.73.24.171:19003") 7、添加延时备份机器:rs.add({_id:4,host:"10.55.22.176:9004",priority:0,slaveDelay:3600}); 8、当出现这个错误时:replSet error RS102 too stale to catch up,我们可以 db.printReplicationInfo()查看主库、从库的 oplog 信息; 添加 sharding 节点 1.重复上面的操作添加 sharding 2011/9/16 制作人:酷酷 http://weibo.com/lidaohang