【问题标题】:How to backup all streams in JetStream server?如何备份 JetStream 服务器中的所有流?
【发布时间】:2021-10-16 09:55:07
【问题描述】:

问题:

我必须备份我的 JetStream 服务器的所有流。我不知道那里有什么流。我想将所有流备份到一个快照中。目前,我们只能使用以下命令备份单个流。

$ nats stream backup <stream-name> /backup/dir/<stream-name>.tgz

到目前为止我所做的尝试:

我尝试提供通配符而不是 &lt;stream-name&gt;。它不起作用。

$ nats stream backup * /backup/dir/backup.tgz
nats: error: "*" is not a valid stream name, try --help

可能的解决方法:

首先,我可以使用nats str ls 命令列出所有流。然后,我可以遍历所有流并单独备份它们。

但是,这不能满足我的要求,因为我想将所有流备份到一个快照中。我的快照应该代表 JetStream 服务器的完整状态,而不是单个流。

【问题讨论】:

    标签: message-queue jetstream nats.io


    【解决方案1】:

    是的,使用nats stream ls 创建一个脚本来捕获所有当前定义的流的列表,然后使用nats stream backup 在循环中备份它们是您能做的最好的事情。

    不可能同时为所有流创建一个“在某个时间点冻结​​”的完整备份,因为:

    • NATS 和 JetStream 在备份期间继续运行
    • NATS 和 JetStream 是分布式系统:服务器和流相互独立

    创建此类备份的唯一方法是同步暂停所有流及其源主题上的所有写入(消息的发布或消费),执行备份(这可能需要相当长的时间),然后允许流上的操作并可能恢复。许多(大多数?)nats 用户无法接受这种服务中断。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-01
      • 2021-04-05
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2016-10-22
      相关资源
      最近更新 更多