SlideShare a Scribd company logo
MongoDB 之架构部署 (Replica Sets+Sharding) 分享人:酷酷 http://weibo.com/lidaohang
一、环境 要构建一个  MongoDB Sharding Cluster ,需要三种角色: • Shard Server: mongod  实例,用于存储实际的数据块。 • Config Server: mongod  实例,存储了整个  Cluster Metadata ,其中包括  chunk  信息。 • Route Server: mongos  实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程数据库。
1. 机器部署描述 1. 节点: 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 ,1 0.168.0.109 ,10.168.0.107( arbiter ) 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
2 . 机器各端口描述 主机 端口信息 10.168.0.103 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000 10.168.0.107 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000 10.168.0.108 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000 10.168.0.109 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000
二、安装部署 软件准备及目录 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 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  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 的进程是否启动 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 --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/--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' })  db.runCommand({ listshards:1 }) db.runCommand({ enablesharding:'weibo' })  db.runCommand({ shardcollection:'weibo.test', key:{_id:1} , unique : true })  printShardingStatus() db.test.stats();
三、用户认证 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 用户权限才会生效,第一次配置完成后,没效果就重启下。
一、鸭梨大了怎么办?添加服务器,怎么样添加呢? 添加 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 、添加延时备份机器: r s.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
 

More Related Content

What's hot

ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-callsyushiang fu
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
Guangyao Cheng
 
Talking about exploit writing
Talking about exploit writingTalking about exploit writing
Talking about exploit writing
sbha0909
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
Louis liu
 
Myfox on NodeJS
Myfox on NodeJSMyfox on NodeJS
Myfox on NodeJS
aleafs
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践wubx
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
zhaolinjnu
 
部署並執行以太坊智能合約
部署並執行以太坊智能合約部署並執行以太坊智能合約
部署並執行以太坊智能合約
Nicholas Lin
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
Peter Yi
 
一次详细的渗透Wordpress教程
一次详细的渗透Wordpress教程一次详细的渗透Wordpress教程
一次详细的渗透Wordpress教程WASecurity
 
Monitor is all for ops
Monitor is all for opsMonitor is all for ops
Monitor is all for ops
琛琳 饶
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
Advanced heap exploitaion
Advanced heap exploitaionAdvanced heap exploitaion
Advanced heap exploitaion
Angel Boy
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
paitoubing
 
Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)
Marc Huang
 
Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護
Justin Lin
 

What's hot (18)

ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-calls
 
MySQL aio
MySQL aioMySQL aio
MySQL aio
 
ch7-pv1-modules
ch7-pv1-modulesch7-pv1-modules
ch7-pv1-modules
 
Aisanux安装光盘分析
Aisanux安装光盘分析Aisanux安装光盘分析
Aisanux安装光盘分析
 
Talking about exploit writing
Talking about exploit writingTalking about exploit writing
Talking about exploit writing
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
 
Myfox on NodeJS
Myfox on NodeJSMyfox on NodeJS
Myfox on NodeJS
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
部署並執行以太坊智能合約
部署並執行以太坊智能合約部署並執行以太坊智能合約
部署並執行以太坊智能合約
 
181201_CoAP_coding365
181201_CoAP_coding365181201_CoAP_coding365
181201_CoAP_coding365
 
一次详细的渗透Wordpress教程
一次详细的渗透Wordpress教程一次详细的渗透Wordpress教程
一次详细的渗透Wordpress教程
 
Monitor is all for ops
Monitor is all for opsMonitor is all for ops
Monitor is all for ops
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
Advanced heap exploitaion
Advanced heap exploitaionAdvanced heap exploitaion
Advanced heap exploitaion
 
高性能No sql数据库redis
高性能No sql数据库redis高性能No sql数据库redis
高性能No sql数据库redis
 
Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)Open Street Map安裝指引 (Ubuntu 12.04)
Open Street Map安裝指引 (Ubuntu 12.04)
 
Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護Java Web 程式之效能技巧與安全防護
Java Web 程式之效能技巧與安全防護
 

Viewers also liked

Innovate the Steve Jobs Way
Innovate the Steve Jobs WayInnovate the Steve Jobs Way
Innovate the Steve Jobs Way
EM3
 
Final Conference: Other Projects' Takes - MOVE-ON
Final Conference: Other Projects' Takes - MOVE-ONFinal Conference: Other Projects' Takes - MOVE-ON
Final Conference: Other Projects' Takes - MOVE-ON
Links-up
 
D J Lanska CV
D J Lanska CVD J Lanska CV
D J Lanska CV
davidlanska
 
How to Use Social Media to Make Sales
How to Use Social Media to Make SalesHow to Use Social Media to Make Sales
How to Use Social Media to Make Sales
Benjamin Kepner
 
comScore 2010 US Digital Year in Review
comScore 2010 US Digital Year in ReviewcomScore 2010 US Digital Year in Review
comScore 2010 US Digital Year in Review
EM3
 
Profil společnosti eMan
Profil společnosti eManProfil společnosti eMan
Profil společnosti eManeMan s.r.o.
 
Ubuntu tsahim test(2)
Ubuntu tsahim test(2)Ubuntu tsahim test(2)
Ubuntu tsahim test(2)neegii
 
Changing the community landscape
Changing the community landscapeChanging the community landscape
Changing the community landscape
Colin Campbell
 
Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...
Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...
Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...Błażej Abel
 
Mobile real estate program a
Mobile real estate program aMobile real estate program a
Mobile real estate program a
RSW Technology Guide
 
Prezentacja konkursowa
Prezentacja konkursowaPrezentacja konkursowa
Prezentacja konkursowa
dorotah
 
Mongo快速入门
Mongo快速入门Mongo快速入门
Mongo快速入门Lucien Li
 
Varnish Web Accelerator
Varnish Web AcceleratorVarnish Web Accelerator
Varnish Web Accelerator
Rahul Ghose
 
Spring 2 vega
Spring 2 vegaSpring 2 vega
Spring 2 vega
Simpony
 
Mobile real estate program a
Mobile real estate program aMobile real estate program a
Mobile real estate program a
RSW Technology Guide
 
Case study Schome Park
Case study Schome ParkCase study Schome Park
Case study Schome Park
Links-up
 
PsycINFO in 10steps 042611
PsycINFO in 10steps 042611PsycINFO in 10steps 042611
PsycINFO in 10steps 042611kncarlso
 
comScore 2010 Mobile Year in Review
comScore 2010 Mobile Year in ReviewcomScore 2010 Mobile Year in Review
comScore 2010 Mobile Year in Review
EM3
 
Significant dates
Significant datesSignificant dates
Significant dates
jacobharn
 
Postcrossing Guidelines
Postcrossing GuidelinesPostcrossing Guidelines
Postcrossing Guidelines
Maria Inês de Souza Vitorino Justino
 

Viewers also liked (20)

Innovate the Steve Jobs Way
Innovate the Steve Jobs WayInnovate the Steve Jobs Way
Innovate the Steve Jobs Way
 
Final Conference: Other Projects' Takes - MOVE-ON
Final Conference: Other Projects' Takes - MOVE-ONFinal Conference: Other Projects' Takes - MOVE-ON
Final Conference: Other Projects' Takes - MOVE-ON
 
D J Lanska CV
D J Lanska CVD J Lanska CV
D J Lanska CV
 
How to Use Social Media to Make Sales
How to Use Social Media to Make SalesHow to Use Social Media to Make Sales
How to Use Social Media to Make Sales
 
comScore 2010 US Digital Year in Review
comScore 2010 US Digital Year in ReviewcomScore 2010 US Digital Year in Review
comScore 2010 US Digital Year in Review
 
Profil společnosti eMan
Profil společnosti eManProfil společnosti eMan
Profil společnosti eMan
 
Ubuntu tsahim test(2)
Ubuntu tsahim test(2)Ubuntu tsahim test(2)
Ubuntu tsahim test(2)
 
Changing the community landscape
Changing the community landscapeChanging the community landscape
Changing the community landscape
 
Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...
Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...
Na początku jest Google – reklama w wyszukiwarce. Linki sponsorowane Google A...
 
Mobile real estate program a
Mobile real estate program aMobile real estate program a
Mobile real estate program a
 
Prezentacja konkursowa
Prezentacja konkursowaPrezentacja konkursowa
Prezentacja konkursowa
 
Mongo快速入门
Mongo快速入门Mongo快速入门
Mongo快速入门
 
Varnish Web Accelerator
Varnish Web AcceleratorVarnish Web Accelerator
Varnish Web Accelerator
 
Spring 2 vega
Spring 2 vegaSpring 2 vega
Spring 2 vega
 
Mobile real estate program a
Mobile real estate program aMobile real estate program a
Mobile real estate program a
 
Case study Schome Park
Case study Schome ParkCase study Schome Park
Case study Schome Park
 
PsycINFO in 10steps 042611
PsycINFO in 10steps 042611PsycINFO in 10steps 042611
PsycINFO in 10steps 042611
 
comScore 2010 Mobile Year in Review
comScore 2010 Mobile Year in ReviewcomScore 2010 Mobile Year in Review
comScore 2010 Mobile Year in Review
 
Significant dates
Significant datesSignificant dates
Significant dates
 
Postcrossing Guidelines
Postcrossing GuidelinesPostcrossing Guidelines
Postcrossing Guidelines
 

Similar to Mongo db架构之优先方案

Mongodb
MongodbMongodb
Mongodbbj
 
Oda安装 恢复步骤
Oda安装 恢复步骤Oda安装 恢复步骤
Oda安装 恢复步骤
n-lauren
 
SSDB 入门基础
SSDB 入门基础SSDB 入门基础
SSDB 入门基础ideawu
 
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
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmmYiwei Ma
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
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)
柄宏 陳
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作
FEG
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
xuebao_zx
 
探索 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
YingSiang Geng
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 Lheima911
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
Kenny (netman)
 
智能Dns工作流程及配置
智能Dns工作流程及配置智能Dns工作流程及配置
智能Dns工作流程及配置Yiwei Ma
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发leneli
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
Mongo db技术交流
Mongo db技术交流Mongo db技术交流
Mongo db技术交流
liuts
 

Similar to Mongo db架构之优先方案 (20)

Mongodb
MongodbMongodb
Mongodb
 
Oda安装 恢复步骤
Oda安装 恢复步骤Oda安装 恢复步骤
Oda安装 恢复步骤
 
SSDB 入门基础
SSDB 入门基础SSDB 入门基础
SSDB 入门基础
 
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高可用环境
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmm
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
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)
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
Hadoop+spark實作
Hadoop+spark實作Hadoop+spark實作
Hadoop+spark實作
 
Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档Oraliux+mysql5单机多实例安装文档
Oraliux+mysql5单机多实例安装文档
 
探索 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
 
Asm+aix
Asm+aixAsm+aix
Asm+aix
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 L
 
Linux network monitoring hands-on pratice
Linux network monitoring hands-on praticeLinux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
 
智能Dns工作流程及配置
智能Dns工作流程及配置智能Dns工作流程及配置
智能Dns工作流程及配置
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
Mongo db技术交流
Mongo db技术交流Mongo db技术交流
Mongo db技术交流
 

Mongo db架构之优先方案

  • 1. MongoDB 之架构部署 (Replica Sets+Sharding) 分享人:酷酷 http://weibo.com/lidaohang
  • 2. 一、环境 要构建一个 MongoDB Sharding Cluster ,需要三种角色: • Shard Server: mongod 实例,用于存储实际的数据块。 • Config Server: mongod 实例,存储了整个 Cluster Metadata ,其中包括 chunk 信息。 • Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程数据库。
  • 3. 1. 机器部署描述 1. 节点: 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 ,1 0.168.0.109 ,10.168.0.107( arbiter ) 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
  • 4. 2 . 机器各端口描述 主机 端口信息 10.168.0.103 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000 10.168.0.107 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000 10.168.0.108 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000 10.168.0.109 mongod shard1:27017 mongod shard2:27018 mongod shard3:27019 mongod config:30000 mongs: 4 0000
  • 5. 二、安装部署 软件准备及目录 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 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
  • 6. 配置 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
  • 7. 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
  • 8. 3. 查看 mongod 的进程是否启动 ps aux | grep mongodb | grep -v grep 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()
  • 9. 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
  • 10. 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
  • 11. 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.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()
  • 12. 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
  • 13. 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
  • 14. 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()
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 添加分片 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' }) db.runCommand({ listshards:1 }) db.runCommand({ enablesharding:'weibo' }) db.runCommand({ shardcollection:'weibo.test', key:{_id:1} , unique : true }) printShardingStatus() db.test.stats();
  • 19. 三、用户认证 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 用户权限才会生效,第一次配置完成后,没效果就重启下。
  • 20. 一、鸭梨大了怎么办?添加服务器,怎么样添加呢? 添加 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 、添加延时备份机器: r s.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
  • 21.
  • 22.
  • 23.