常见问题解答
在此页面上
此页面提供了我们遇到的一些常见问题的回答。如果您还有其他问题,请联系 MongoDB 支持部门。
当mongosync
同步时,我能否对目标集群执行读取或写入操作?
如果canCommit
为true
,则可以在同步期间执行读取。 但是,您读取的数据是最终一致的,这意味着您可能无法始终读取最新写入的数据。
在持续同步期间,只要源集群不包含同名的命名空间,您就可以写入目标集群中的任何未同步的命名空间。如果在发出提交之前写入同步的命名空间,并且当canWrite
为false
时,则行为未定义。为了避免这种未定义的行为,您可以启用写入阻塞。
要检查canCommit
或canWrite
的值,请调用进度API 端点。
mongosync
能否在自己的硬件上运行?
是的, mongosync
可以在自己的硬件上运行。 mongosync
不必在托管 MongoDB 实例的服务器上运行。 当mongosync
在自己的硬件上运行时,它可以使用与源集群或目标集群上的操作系统不同的操作系统 (OS)。
oplog
我是否应该增加源集群中 的大小?
mongosync
将源集群oplog
中的操作应用于目标集群上的数据。 当mongosync
未应用的操作滚动源集群上的oplog
时,同步将失败并且mongosync
退出。
注意
mongosync
不会将同步期间在源集群上进行的applyOps
操作复制到目标集群。
在初始同步期间,由于会同时复制文档, mongosync
可能会以较慢的速度应用操作。 初始同步后, mongosync
可以更快地应用更改,并且更有可能在oplog
中保持接近源集群上发生的实时写入的位置。
如果您预计同步大型数据集,或者计划长时间暂停同步,则可能会超过oplog window 。 使用oplogSizeMB
设置增加源集群上oplog
的大小。
mongosync
允许哪些连接字符串选项?
mongosync
需要readConcern: "majority"和writeConcern: "majority"。
如果readConcern
不是majority
, mongosync
将返回错误:
Invalid URI option, read concern must be majority
如果writeConcern
不是majority
, mongosync
将返回错误:
Invalid URI option, write concern must be majority
mongosync
接受所有其他连接string选项。
支持哪些安全和身份验证选项?
mongosync
使用标准MongoDB连接string连接到源集群和目标集群。
支持LDAP和X 509 。有关可用的身份验证选项,请参阅在自管理部署上进行身份验证。
我能否配置mongosync
来实现高可用性?
mongosync
中没有内置自动故障转移功能。 但是,您可以编写脚本或使用操作系统的经理(例如systemd
)来重新启动mongosync
进程。
mongosync
二进制文件是无状态的。 用于重新启动的元数据存储在目标集群上。
如果mongosync
在同步期间不可用,则可以恢复mongosync
操作。 当mongosync
再次可用时,使用相同参数重新启动mongosync
进程。 mongosync
会在mongosync
不可用时从停止处恢复操作。
注意
从mongosync
1开始。 7 。恢复或重新启动同步操作时, 3 、 mongosync
可能至少需要两分钟才能响应。在此期间,对progress
端点的任何调用都可能失败。如果progress
调用失败,可以安全地重试。
源或目标可以是带有仲裁节点的副本集吗?
是的,副本集可以有仲裁节点。 源副本集必须具有超过2个非仲裁节点,并且您必须从非仲裁节点进行同步。 使用源集群的连接string为非仲裁数据承载节点指定读取偏好。
如果看到慢操作警告怎么办?
在初始同步或应用程序变更事件期间,如果源集群上存在慢速读取操作或目标集群上存在慢速写入操作,则可能会出现慢操作警告。该警告可能表示源集群或目标集群的网络拥塞或资源紧张。
虽然这些警告本身并不表示出现故障,但缓慢的操作可能会导致mongosync
操作超时错误和迁移失败。
如果看到慢速运行警告,请检查源集群和目标集群上的 CPU、内存和网络使用情况。 如果集群配置不足以满足您的需求,请考虑升级集群硬件。
如果日志包含“错误”或“失败”字样,我是否应该停止迁移?
不会,包含“错误”或“故障”字样的日志显示的是非致命错误,并不表示您需要提前停止mongosync
。 这些日志并不表明mongosync
正在发生故障或正在损坏数据。 如果发生致命错误, mongosync
会停止同步并写入致命错误日志条目。
如果我在日志中看到大量重复键错误怎么办?
重复密钥错误是同步过程中的正常现象。在以下情况下,可能会出现这些错误:
mongosync
启动后,您可以在源集群上插入文档。mongosync
可以直接复制文档,并稍后冗余地应用该文档的插入更改事件。停止并恢复
mongosync
。这可能会导致mongosync
重新启动时出现重复插入。mongosync
遇到暂时性错误,并重新尝试可能已经成功的插入操作。
如果 mongosync 返回致命错误,我该怎么办?
致命错误表示必须更正并需要重新启动迁移的问题。解决错误后,删除目标集群上的所有迁移数据,包括mongosync_reserved_for_internal_use
数据库。然后,重新启动mongosync
并开始新的迁移。
mongosync
是否支持 TTL 索引?
Cluster-to-Cluster Sync 支持将TTL 索引从源集群同步到目标集群。