【发布时间】:2012-09-05 02:46:11
【问题描述】:
我不明白为什么单独的读写比在一台服务器上读写更好。
比如我有一个mysql集群,有三台机器:node1、node2、node3。
一种可能的架构是:
- 对 node1 的所有写入请求,但对 node2 和 node3 的所有读取请求。
第二种可能的架构是:
- 所有这三个节点都处理写入和读取。
我们可以在架构一中看到对node1的写入压力非常大,所以我更喜欢架构二。
还有,mongodb为什么要把主节点的写和从节点的读分开。
【问题讨论】:
-
请务必注意,MongoDB 不会将主节点和辅助节点的写入和读取分开,除非您使用
SlaveOK或其他读取首选项告诉它。默认情况下,主节点将同时处理读取和写入。 -
@AndredeFrere 如果我想转储所有数据库,我应该使用什么地址,即 mongodump --host mongosServer:port 或 mongodump --host mongoDServer:port 如果我指示 mongoD 我不会转储所有的数据,我不知道是否表明 mongoS 是正确的提前谢谢
-
一个奇怪的现象:我使用java客户端读取mongodb集群,发现所有读取在辅助节点(使用mongostat检查),但是当我登录辅助节点时,它告诉我:不是master和slaveok= false 所以我很奇怪为什么所有的读取都在这个二级上,但我不能在命令行查询。
-
在连接上设置了读取首选项。您的 Java 应用程序可能设置了此读取首选项,但连接到 shell 是一个新连接,并且不一定具有与您的 Java 应用程序相同的设置。
标签: mysql mongodb cluster-computing