在 MySQL 中,我们在复制期间使用了 replicate-do-db/replicate-ignore-db,我们可以在其中将特定数据库从 Master 复制或限制到 Slave。
同样,在MongoDB复制中是否有任何特定的配置或解决方法来限制数据同步期间的特定数据库和集合。
如果没有,是否有任何其他方法可以仅将特定数据库或集合从 Master 同步到 Slave。
我正在使用 MongoDB 3.6
在 MySQL 中,我们在复制期间使用了 replicate-do-db/replicate-ignore-db,我们可以在其中将特定数据库从 Master 复制或限制到 Slave。
同样,在MongoDB复制中是否有任何特定的配置或解决方法来限制数据同步期间的特定数据库和集合。
如果没有,是否有任何其他方法可以仅将特定数据库或集合从 Master 同步到 Slave。
我正在使用 MongoDB 3.6
MongoDB 中的副本集是为数据冗余和故障转移而设计的,因此副本集的所有数据承载成员当前包含与 MongoDB 4.2 相同的数据库和集合。具有部分数据集的成员将无法实现副本集部署的这些关键设计目标中的任何一个。
有一个相关的服务器问题您可以观看和投票:SERVER-1559: Ability for a replica set node to only have a subset of databases or collections。这目前在开发积压中,但您可以在此期间使用另一种方法。
如果您想支持非标准复制/同步方案,我会考虑编写一个小程序来使用 MongoDB Change Streams API复制所需的更改。更改流事件基于复制 oplog,允许您过滤和处理匹配命名空间、操作类型或字段值等条件的相关事件。您还可以使用其他聚合阶段(例如,投影字段子集或添加计算字段)修改更改流输出。最重要的是,Change Streams API 为您提供了到 MongoDB 服务器未来版本的受支持升级路径。
在 MongoDB 3.6 中,您只能在集合级别打开更改流。由于您对数据库或部署级别的更改感兴趣,因此值得升级到包含更全面的更改流支持的 MongoDB 4.0 。