Mongo 更改流时间戳
Mongo changestream timestamp
跟踪 oplog 时,我看到每个事件的时间戳。更改流比直接跟踪 oplog 有优势,所以我想使用它们。但是,我找不到任何方法来确定何时发生更改。如果我的脚本关闭一段时间然后使用恢复令牌恢复,这将是有问题的。
有没有办法得到那个时间戳?
I can't find any way of figuring out when a change occurred.
目前(MongoDB v3.6),无法从接收端找出服务器返回的事件的时间戳。这是因为集群时间的时间戳实际上以二进制格式嵌入到恢复令牌中。
有一张请求添加工具来检查此简历令牌的票证SERVER-32283。请随时 watch/upvote 获取票证更新。
This would be problematic if my script went down for a while and then resumed using a resume token.
使用恢复令牌恢复 Change Streams 时,将从该点开始恢复。这是因为令牌包含集群时间,并且服务器知道令牌最后一次操作的时间 'seen'。
你也说了down for a while
。变更流建立在 Replica Set Oplog 之上,这也意味着变更流的可恢复性受到操作日志大小的限制 window。
例如,如果最后缓存的令牌时间是 24 小时前,而 oplog size 只有 12 小时,您的应用程序将无法使用更改流恢复令牌。由于您将 change streams
与 tailing the oplog
进行比较,因此在这方面两者都会有相同的潜在问题。
如果这对您的用例来说是一个真正的问题,请相应地调整您的 oplog window 大小。即,如果接收客户端的潜在停机时间大于 oplog window 时间。
跟踪 oplog 时,我看到每个事件的时间戳。更改流比直接跟踪 oplog 有优势,所以我想使用它们。但是,我找不到任何方法来确定何时发生更改。如果我的脚本关闭一段时间然后使用恢复令牌恢复,这将是有问题的。
有没有办法得到那个时间戳?
I can't find any way of figuring out when a change occurred.
目前(MongoDB v3.6),无法从接收端找出服务器返回的事件的时间戳。这是因为集群时间的时间戳实际上以二进制格式嵌入到恢复令牌中。
有一张请求添加工具来检查此简历令牌的票证SERVER-32283。请随时 watch/upvote 获取票证更新。
This would be problematic if my script went down for a while and then resumed using a resume token.
使用恢复令牌恢复 Change Streams 时,将从该点开始恢复。这是因为令牌包含集群时间,并且服务器知道令牌最后一次操作的时间 'seen'。
你也说了down for a while
。变更流建立在 Replica Set Oplog 之上,这也意味着变更流的可恢复性受到操作日志大小的限制 window。
例如,如果最后缓存的令牌时间是 24 小时前,而 oplog size 只有 12 小时,您的应用程序将无法使用更改流恢复令牌。由于您将 change streams
与 tailing the oplog
进行比较,因此在这方面两者都会有相同的潜在问题。
如果这对您的用例来说是一个真正的问题,请相应地调整您的 oplog window 大小。即,如果接收客户端的潜在停机时间大于 oplog window 时间。