AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 19546
Accepted
ledy
ledy
Asked: 2012-06-21 00:30:10 +0800 CST2012-06-21 00:30:10 +0800 CST 2012-06-21 00:30:10 +0800 CST

MongoDB:副本集 - 主与从

  • 772

我们考虑从 master-slave 转移到MongoDBwith replica-set。现在我想知道是否MongoDB也设置了副本,read-only slaves或者每个副本mongos是否能够像主-主农场一样写入和同步其他副本?

这可能会减少单一错误源 ( master down) 并平衡write-load缩放与最佳性能(不仅用于读取,还用于写入......)。

mongodb replication
  • 3 3 个回答
  • 14420 Views

3 个回答

  • Voted
  1. Best Answer
    Asya Kamsky
    2012-06-21T03:25:19+08:002012-06-21T03:25:19+08:00

    一个副本集在任何特定时间只能有一个主节点(一个主节点),而其他节点是辅助节点(从节点),因此它们与主-主(即多主)复制完全不同。

    您绝对应该从主/从配置转移到副本集,因为这是首选和推荐的复制方式。来自 MongoDB 文档:“副本集是主/从的功能超集,以及更新、更健壮的代码”。

    当主节点发生故障时,其中一个辅助节点将自动被选为新的主节点(您可以查看文档以了解详细信息)。

    您无法通过副本集获得写入平衡 - 您只能通过MongoDB 中的分片来分发写入。

    • 6
  2. Md Haidar Ali Khan
    2018-02-12T04:45:42+08:002018-02-12T04:45:42+08:00

    首先,我不会丢弃任何@Asya Kamsky. 但我想写一些关于副本集的东西:母校 vs 奴隶。

    根据 MongoDB 文档来源,主从复制是 .. 支持的最通用的复制模式。这种模式非常灵活,可用于, , . 基本设置是启动一个和一个或多个,每个都知道 的地址。要启动,运行。要启动 a , run ,刚刚启动的地址在哪里。MongoDB the Definite Guide MongoDBbackupfailoverread scalingmaster node slave nodesmastermastermongod --masterslavemongod --slave --source master_addressmaster_addressmaster node

    假设首先,创建一个用于master存储数据的目录并选择port( 10000):

    $ mkdir -p ~/dbs/master
    $ ./mongod --dbpath ~/dbs/master --port 10000 --master
    

    现在设置slave,选择不同的数据目录和端口。对于奴隶,您还需要通过以下选项告诉它谁是主人--source:

    $ mkdir -p ~/dbs/slave
    $ ./mongod --dbpath ~/dbs/slave --port 10001 --slave --source localhost:10000
    

    All slaves must be replicated from a master node. 目前没有从从属复制的机制(菊花链),因为从属不保留自己的 oplog.

    slavesa中的数量没有明确的限制cluster,但是有一千个从节点查询单个主节点可能会压倒主节点。

    注意:如果您slave关闭了具有相同集合的两个不同的主控MongoDB,将尝试合并它们,但不能保证正确地这样做。如果您使用具有多个不同 master 的单个 slave,最好确保 master 使用不同 namespaces的.

    Areplica set基本上是一个master-slave带有自动的集群failover。主从集群和副本集的最大区别在于副本集没有单个主节点:一个由集群选举产生,如果当前主节点宕机,可能会切换到另一个节点。但是,它们看起来非常相似:副本集总是有一个single master node(称为主)和一个或多个从属(称为secondaries)。

    注意:当主服务器宕机时,辅助服务器将变为master.

    master保存的操作记录称为oplog,是操作日志的缩写。oplog存储在oplog.$main集合中称为本地的特殊数据库中。中的每个文档oplog代表在主服务器上执行的单个操作。

    在Failover 和 Primary Election场景中的副本集中的 Master-Slave 取决于 Master & Slave 之间的条件和配置,如下所示

    1. 当primary服务器走down了,secondary服务器就会变成 master。
    2. 如果primary出现故障,highest-priority服务器将比较up-to-date它们的状态。
    3. 如果在Primary Server次要中下降,最高优先级most-up-to-date server将变为new primary.

    slaves用于缩减是复制 是. 这意味着当在 上插入或更新数据时, 上的数据将是瞬间的。如果您使用查询来服务某些请求,这一点很重要。readsMongoDBasynchronousmasterslaveout-of-dateslaves

    注意:您应该确保永远不要write访问来自. 不会还原任何此类以正确处理. 首次启动时也不应该有任何正在复制的数据库 。如果是这样,这些数据库将永远不会存在,而只会更新为.slavereplicatedmasterslavewritesmirrormasterslavefully syncednew operations

    • 1
  3. xxd
    2012-06-21T01:39:54+08:002012-06-21T01:39:54+08:00

    它很像“像大师-大师农场一样编写和同步其他人”。正如 MongoDB 文档所说,“副本集是异步主/从复制的一种形式,增加了成员节点的自动故障转移和自动恢复。” 请查看http://www.mongodb.org/display/DOCS/Replica+Sets

    • 0

相关问题

  • 关于操作/管理 MongoDB 的良好资源

  • 在同一台物理服务器上运行复制是不明智的吗?

  • 有没有办法以小于 1 秒的分辨率测量 MySQL 中的复制滞后?

  • 运行时间偏移延迟复制的最佳实践

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve