我们有一个共享的mongo集群,每个客户端模型都有一个数据库。考虑到许多大致相同大小的客户机,默认的db创建已经证明能够很好地均匀分配负载,同时避免多碎片查询。
到目前为止,所有的碎片都是基于SSD的统一部署,但是现在,我们正在尝试添加异构的、更大但更慢的基于HDD的碎片--因此每个客户端可以有很少的大型批量集合位于那里(而它们的主碎片则保留在SSD上)。这在分区方法(2个区域、hdd和ssd)中很容易实现--如果有一个问题的话,它会很好地工作:
TL;DR:是否有任何方法来限制新的数据库创建只发生在SSD碎片上?
我所知道的唯一方法是让DB创建,然后检查它是在哪里创建的,如果它在错误的区域使用movePrimary。这方面的问题是,过程是手动的,涉及到搜索和重新启动每一个mongos路由器-因为movePrimary的设计并不完全准备好生产.
发布于 2017-09-21 08:05:26
答案是是和不是。集群系统将DB的主位置标记为分割数据库数量较少的数据库。因此,自动不能定义该位置。
如果您直接登录到特定的副本集并在那里创建DB,那么这就是DB的主要位置。
但是,如果移动movePrimary集合,则可以使用该命令(不需要mongos重新启动)。您可以分割不存在的集合,将不存在的集合移动到需要的位置,然后“丢弃”该集合。DB有了新的主位置,所有的mongos现在都知道了新的位置。;-)
https://dba.stackexchange.com/questions/186489
复制相似问题