我们考虑从 master-slave 转移到MongoDB
with replica-set
。现在我想知道是否MongoDB
也设置了副本,read-only slaves
或者每个副本mongos
是否能够像主-主农场一样写入和同步其他副本?
这可能会减少单一错误源 ( master down
) 并平衡write-load
缩放与最佳性能(不仅用于读取,还用于写入......)。
我们考虑从 master-slave 转移到MongoDB
with replica-set
。现在我想知道是否MongoDB
也设置了副本,read-only slaves
或者每个副本mongos
是否能够像主-主农场一样写入和同步其他副本?
这可能会减少单一错误源 ( master down
) 并平衡write-load
缩放与最佳性能(不仅用于读取,还用于写入......)。
一个副本集在任何特定时间只能有一个主节点(一个主节点),而其他节点是辅助节点(从节点),因此它们与主-主(即多主)复制完全不同。
您绝对应该从主/从配置转移到副本集,因为这是首选和推荐的复制方式。来自 MongoDB 文档:“副本集是主/从的功能超集,以及更新、更健壮的代码”。
当主节点发生故障时,其中一个辅助节点将自动被选为新的主节点(您可以查看文档以了解详细信息)。
您无法通过副本集获得写入平衡 - 您只能通过MongoDB 中的分片来分发写入。
首先,我不会丢弃任何
@Asya Kamsky
. 但我想写一些关于副本集的东西:母校 vs 奴隶。根据 MongoDB 文档来源,主从复制是 .. 支持的最通用的复制模式。这种模式非常灵活,可用于, , . 基本设置是启动一个和一个或多个,每个都知道 的地址。要启动,运行。要启动 a , run ,刚刚启动的地址在哪里。
MongoDB the Definite Guide
MongoDB
backup
failover
read scaling
master node
slave nodes
master
master
mongod --master
slave
mongod --slave --source master_address
master_address
master node
假设首先,创建一个用于
master
存储数据的目录并选择port
(10000
):现在设置
slave
,选择不同的数据目录和端口。对于奴隶,您还需要通过以下选项告诉它谁是主人--source
:All slaves must be replicated from a master node
. 目前没有从从属复制的机制(菊花链),因为从属不保留自己的oplog
.slaves
a中的数量没有明确的限制cluster
,但是有一千个从节点查询单个主节点可能会压倒主节点。A
replica set
基本上是一个master-slave
带有自动的集群failover
。主从集群和副本集的最大区别在于副本集没有单个主节点:一个由集群选举产生,如果当前主节点宕机,可能会切换到另一个节点。但是,它们看起来非常相似:副本集总是有一个single master node
(称为主)和一个或多个从属(称为secondaries
)。master保存的操作记录称为oplog,是操作日志的缩写。
oplog
存储在oplog.$main
集合中称为本地的特殊数据库中。中的每个文档oplog
代表在主服务器上执行的单个操作。在Failover 和 Primary Election场景中的副本集中的 Master-Slave 取决于 Master & Slave 之间的条件和配置,如下所示
primary
服务器走down
了,secondary
服务器就会变成master
。primary
出现故障,highest-priority
服务器将比较up-to-date
它们的状态。Primary Server
次要中下降,最高优先级most-up-to-date
server
将变为new primary
.slaves
用于缩减是复制 是. 这意味着当在 上插入或更新数据时, 上的数据将是瞬间的。如果您使用查询来服务某些请求,这一点很重要。reads
MongoDB
asynchronous
master
slave
out-of-date
slaves
它很像“像大师-大师农场一样编写和同步其他人”。正如 MongoDB 文档所说,“副本集是异步主/从复制的一种形式,增加了成员节点的自动故障转移和自动恢复。” 请查看http://www.mongodb.org/display/DOCS/Replica+Sets