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
Mongo db架构之优先方案
Mongo db架构之优先方案
 

More Related Content

DOC
Mongo db部署架构之优先方案
DOC
Mongo db部署架构之优先方案
PDF
Showinnodbstatus公开
PDF
Mysql体系结构及原理(innodb)公开版
DOC
康盛创想项目部Linux 服务器部署标准(最新版)
PPTX
【第一季第四期】JavaScript Optimization
PDF
Strace debug
DOC
X64服务器 lamp服务器部署标准 new
Mongo db部署架构之优先方案
Mongo db部署架构之优先方案
Showinnodbstatus公开
Mysql体系结构及原理(innodb)公开版
康盛创想项目部Linux 服务器部署标准(最新版)
【第一季第四期】JavaScript Optimization
Strace debug
X64服务器 lamp服务器部署标准 new

What's hot (18)

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

Viewers also liked (20)

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

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

PPT
Mongodb
 
DOCX
Oda安装 恢复步骤
PDF
SSDB 入门基础
PPT
Mongo简介
PDF
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
DOC
Mysql proxy+mysql-mmm
PPT
构建ActionScript游戏服务器,支持超过15000并发连接
PDF
Spark on Yarn & Mongodb(Big Data Platform)
PDF
twMVC#44 讓我們用 k6 來進行壓測吧
PDF
Hadoop+spark實作
 
DOC
Oraliux+mysql5单机多实例安装文档
PDF
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
PDF
Asm+aix
PDF
Install Oracle11g For Aix 5 L
PDF
Linux network monitoring hands-on pratice
DOC
智能Dns工作流程及配置
PPT
Zoo keeper
PPTX
使用kslite支持第三方内容开发
PDF
配置Oracle 10g 双向流复制
PPT
Mongo db技术交流
Mongodb
 
Oda安装 恢复步骤
SSDB 入门基础
Mongo简介
Dbabc.net 利用heartbeat + drbd搭建my sql高可用环境
Mysql proxy+mysql-mmm
构建ActionScript游戏服务器,支持超过15000并发连接
Spark on Yarn & Mongodb(Big Data Platform)
twMVC#44 讓我們用 k6 來進行壓測吧
Hadoop+spark實作
 
Oraliux+mysql5单机多实例安装文档
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
Asm+aix
Install Oracle11g For Aix 5 L
Linux network monitoring hands-on pratice
智能Dns工作流程及配置
Zoo keeper
使用kslite支持第三方内容开发
配置Oracle 10g 双向流复制
Mongo db技术交流

Recently uploaded (20)

DOC
原版制作(法国毕业证书)图卢兹第一大学毕业证学费单在线办理
DOC
一比一原版(TWU毕业证书)西三一大学毕业证毕业证成绩单照片在线购买
DOC
一比一原版(GBC毕业证书)乔治布朗学院毕业证学费发票学分不够
DOC
一比一原版(Tufts毕业证书)塔夫斯大学毕业证本科学位证书购买
DOC
一比一原版(UNB毕业证书)新不伦瑞克大学毕业证本科毕业证书快速办理
DOC
一比一原版(美国MUST毕业证书)密苏里科技大学毕业证文凭证书英文如可办理
DOC
一比一原版(英国EHU毕业证书)边山大学毕业证本科文凭出售
DOC
网上存档可查(美国Tufts毕业证书)塔夫茨大学毕业证转学成绩单如可办理
DOC
一比一原版(美国uindy毕业证书)印第安纳波利斯大学毕业证学历学位认证一模一样
DOC
一比一原版(英国毕业证书)爱丁堡玛格丽特皇后学院毕业证硕士毕业证书学校原版
DOC
一比一原版(ACU毕业证书)澳洲天主教大学毕业证本科学位证书官方认证
DOCX
托福口語保分如何不被 AI 發現?托福保分沒出分可以全額退費嗎?-mexam.net
DOC
网上存档可查(UM毕业证书)迈阿密大学毕业证学位证书1:1制作
DOC
一比一原版(美国RSU毕业证书)罗杰斯州立大学毕业证毕业证书复印件原版定制
DOC
一比一原版(美国USD毕业证书)圣地亚哥大学毕业证研究生文凭证书哪里办理
DOC
一比一原版(UOI毕业证书)安大略理工大学毕业证研究生学位证书原版制作
DOC
一比一原版(CSUMB毕业证书)加州州立大学蒙特利湾分校毕业证学费发票挂科办理
PPT
Aviation knowledge and ticketing systems
DOC
一比一原版(英国RVC毕业证书)皇家兽医学院毕业证毕业成绩单官方认证
DOC
一比一原版(澳大利亚UNSW毕业证书)新南威尔士大学毕业证文凭学历认证在线购买
原版制作(法国毕业证书)图卢兹第一大学毕业证学费单在线办理
一比一原版(TWU毕业证书)西三一大学毕业证毕业证成绩单照片在线购买
一比一原版(GBC毕业证书)乔治布朗学院毕业证学费发票学分不够
一比一原版(Tufts毕业证书)塔夫斯大学毕业证本科学位证书购买
一比一原版(UNB毕业证书)新不伦瑞克大学毕业证本科毕业证书快速办理
一比一原版(美国MUST毕业证书)密苏里科技大学毕业证文凭证书英文如可办理
一比一原版(英国EHU毕业证书)边山大学毕业证本科文凭出售
网上存档可查(美国Tufts毕业证书)塔夫茨大学毕业证转学成绩单如可办理
一比一原版(美国uindy毕业证书)印第安纳波利斯大学毕业证学历学位认证一模一样
一比一原版(英国毕业证书)爱丁堡玛格丽特皇后学院毕业证硕士毕业证书学校原版
一比一原版(ACU毕业证书)澳洲天主教大学毕业证本科学位证书官方认证
托福口語保分如何不被 AI 發現?托福保分沒出分可以全額退費嗎?-mexam.net
网上存档可查(UM毕业证书)迈阿密大学毕业证学位证书1:1制作
一比一原版(美国RSU毕业证书)罗杰斯州立大学毕业证毕业证书复印件原版定制
一比一原版(美国USD毕业证书)圣地亚哥大学毕业证研究生文凭证书哪里办理
一比一原版(UOI毕业证书)安大略理工大学毕业证研究生学位证书原版制作
一比一原版(CSUMB毕业证书)加州州立大学蒙特利湾分校毕业证学费发票挂科办理
Aviation knowledge and ticketing systems
一比一原版(英国RVC毕业证书)皇家兽医学院毕业证毕业成绩单官方认证
一比一原版(澳大利亚UNSW毕业证书)新南威尔士大学毕业证文凭学历认证在线购买

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
  • 23.