我们可以复制或限制 MongoDB 中的特定数据库吗

Pha*_*dra 2 mongodb configuration master-slave-replication

在 MySQL 中,我们在复制过程中使用了 Replication-do-db/replicate-ignore-db,我们可以在其中复制或限制特定数据库从 Master 到 Slave。

以类似的方式,在MongoDB复制中是否有任何特定的配置或解决方法来限制数据同步期间的特定数据库和集合。

如果没有,是否有任何其他方法可以仅将特定数据库或集合从 Master 同步到 Slave。

我正在使用 MongoDB 3.6

Ste*_*nie 6

MongoDB 中的副本集专为数据冗余和故障转移而设计,因此副本集的所有数据承载成员当前包含与 MongoDB 4.2 相同的数据库和集合。具有部分数据集的成员将无法实现副本集部署的这些关键设计目标中的任何一个。

有一个相关的服务器问题,您可以观看和投票:SERVER-1559:副本集节点仅拥有数据库或集合的子集的能力。这目前在开发积压工作中,但您可以在此期间使用另一种方法。

如果您想支持非标准的复制/同步场景,我会考虑编写一个小程序来使用 MongoDB Change Streams API复制所需的更改。变更流事件基于复制操作日志,并允许您过滤和处理与命名空间、操作类型或字段值等条件匹配的相关事件。您还可以使用其他聚合阶段(例如,投影字段子集或添加计算字段)来修改变更流输出。最重要的是,Change Streams API 为您提供了到 MongoDB 服务器的未来版本的受支持升级路径。

在 MongoDB 3.6 中,您只能在集合级别打开更改流。由于您对数据库或部署级别的更改感兴趣,因此值得升级到 MongoDB 4.0,其中包括更全面的更改流支持