`
wsql
  • 浏览: 11820895 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

MongoDB Advance (AutoSharding and Replication and Master-Slave)

 
阅读更多

MongoDB提供了Replica pairs模式启动数据库,以这种方式启动后,数据库会自动协商谁是master谁是slave。一旦一个数据库服务器断电,另外一个会自动接管,并从那一刻起为master,万一另一个将来也出错了,那么master状态会转回第一个服务器。

(10.7.3.95 -> 10.7.3.97 单Replication 没有shard)

Replication-Sets

Step 1. 两台服务器单独启动mongod 并加上replSet = XXX 的选项。

Step 2. 随便选择一台服务器,进行Replication的配置.

到此就初始化好了,然后数据会慢慢迁移到Secondary.

1. rs.slaveOk() 使SECONDARY 也能查询到数据。

2. rs.stepDown() 使Primary降为Secondary



Master-Slave:

官方介绍: http://www.mongodb.org/display/DOCS/Master+Slave

需要注意参数:
Master configfile:

---
bind_ip = 10.7.3.95
port = 10000
fork = true
master = true
logappend = true
journal = true
dbpath = ../data/
logpath = ../log/mongodb.log
directoryperdb = true


Slave configfile:

----
bind_ip = 10.7.3.97
port = 10000
fork = true
logappend = true
slave = true # 启动slave
only = testDB # 只同步testDB数据库
source = 10.7.3.95:10000 # Master host和port
autoresync = true # 当发生意外时,会自动执行同步操作
slavedelay = 10 # 设定更新频率(s)
journal = true
dbpath = ../Slave
logpath = ../log/mongodb.log.
directoryperdb = true.

Master和Slave启动后,Master会首先首先创建local数据库,然后里面有oplog.$main 和slaves 和 system.indexes 和 system.users 等collection。



AutoSharding + Replication-Sets

MongoDB包括一个自动分片模块”mongos“ 从而可以构建一个大的水平可扩展的数据库集群,可以动态的添加服务器,自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上

这里我使用3台服务器做测试。

分别为

10.X.X.21.163

10.X.X.21.164

10.X.X.228

................. (如果有服务没起来 ,根据经验可能是你Data下的文件锁问题,或者是命名不对)

准备工作:

每台机器先创建数据目录

Server 1

Server 2
Server 3

然后针对每个服务器进行Shard1 Replica Sets:

Server1:


Server2:
Server3:
初始化Replica set:


再给Shard2配置Replica Sets

Server1:


Server2:
Server3:

经过第一次初始化后运行客户端会出现:


如果要用27018的 需要指定


./mongo 10.X.X.228:27018


再次初始化Replica set:


现在有2 个 Replica sets 和2个shards

.......................

再配置三台Config Server


每台Server都这样运行一遍(哎。好多配置啊。。。。。)


再配置Mongos(同样每台机器都要运行一遍)



再Config Shard Cluster

连接到mongos,并且切换到admin

./mongo 10.X.X.228:30000/admin

>db

admin

再加入Shards


enable一个数据库


数据集分片

db.runCommand({ shardcollection: "test.users", key: { _id:1 }})


列出已经加入的Shards


查看Sharding信息


查看Shard存储信息(需要先use test)



下面对分片进行测试:




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics