Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 仅在一个碎片中创建数据库_Mongodb - Fatal编程技术网

Mongodb 仅在一个碎片中创建数据库

Mongodb 仅在一个碎片中创建数据库,mongodb,Mongodb,在Mongo中,数据库可能只驻留在一台服务器上(但没有切分) 我希望使用Mongo来存储我们的应用程序日志,但我希望将它们放在与其他数据不同的机器上 这样,如果我们开始发送太多的日志消息,只有带有日志数据库的机器才会减慢速度 理想情况下,它应该对应用程序透明,并且哪个机器有哪个数据库应该由MongoS进程管理 注意:我们还不想分割整个数据库,因为我们现在对性能还可以,我们只想将数据库与日志集合隔离。是的,您可以在应用服务器上运行mongos,在另一台机器上运行mongod进程来存储日志。 但

在Mongo中,数据库可能只驻留在一台服务器上(但没有切分)

  • 我希望使用Mongo来存储我们的应用程序日志,但我希望将它们放在与其他数据不同的机器上

  • 这样,如果我们开始发送太多的日志消息,只有带有日志数据库的机器才会减慢速度

  • 理想情况下,它应该对应用程序透明,并且哪个机器有哪个数据库应该由MongoS进程管理


注意:我们还不想分割整个数据库,因为我们现在对性能还可以,我们只想将数据库与日志集合隔离。

是的,您可以在应用服务器上运行mongos,在另一台机器上运行mongod进程来存储日志。 但是如果你想使用mongos,你必须使用分片,但是你可以使用单个分片。 您将需要以--shardsvr的形式运行mongod进程,并将此单个碎片添加到mongos进程中。您还需要运行至少1个配置服务器。 使用此设置会出现数据冗余问题—因此您可能希望在mongod进程上运行更多—在单个碎片中使用副本集,并在不同的机器上运行这些mongod进程。如果要这样做,您还可以运行3个配置服务器(在分片设置中可以选择1个或3个)—在副本集的1个节点上运行2个,在另一个节点上运行1个。
此外,对于日志记录,人们通常使用封顶集合

是的,您可以将2个mongoD与2个不同的服务器一起使用,一个与您的实际数据库一起使用,另一个与日志数据库一起使用

诀窍是切分每个db,但不切分任何集合

然后使用movePrimary命令,您可以选择这些未分片的集合实际存储的位置

(见:)

在您的情况下,您将执行以下操作:

db.adminCommand({movePrimary:applicationdb, to:application_shard})
db.adminCommand({movePrimary:loggingdb, to:logging_shard})

但是请注意,当您决定共享应用程序DB时,mongo将自动开始将您的数据传播到loggingdb_shard

无意义的问题,因为您当然可以将MongoDB作为独立服务器运行,而无需分片和副本集。你的观点是什么?我想把应用程序数据库和日志数据库分开。我也希望这个由MongoS管理。我同意@ich。如果您想将应用程序数据库与日志数据库分离,只需使用两个mongod实例和两个数据库,但我会在应用程序中使用该逻辑,难道这不能由mongos管理吗?谢谢,数据冗余问题与使用日志记录的单台服务器相同吗?或者这个案子有一些具体的问题?(因为这是一个不重要的部分,我们可以处理一些数据丢失)日志记录将在机器断电时为您提供数据一致性。但是,如果机器/磁盘完全失败,那么除非使用复制,否则您将丢失整个数据集。这取决于你的日志有多重要,你是否想使用它。对于这种情况没有什么特别的说明。文档中已经说明了,但是这里可能应该注意到,移动主服务器需要对所有mongos实例执行重新启动或“flushRouterConfig”命令。