我将我的Clojure应用程序部署到 AWS ,当我的用户开始使用我的应用时,我还有 Datomic Transactor(EC2)和 DynamoDB 一段时间后发生了一些事情并且Datomic Transactor重新启动(出于某种原因),我的应用程序没有响应,所以我重新启动了我的应用程序服务器(重新建立了transactor连接),然后没有用户数据,根本没有数据!?
我使用相同的 URI (“datomic:ddb:// us-east-1 / my-table / my-db”),我也不知道t调用delete-db或类似的函数。
我只调用d / create-database和d / connect来连接到Datomic。
在发展过程中发生了我,但我并不关心那段时间,因为我认为我做错了什么或类似的事情。
如何恢复旧数据?
P.S:我也可以看到DynamoDB表有一些类似900KB的存储空间我假设我的数据在那里有些怎么样?只有几个用户。
我的数据库版本:"0.9.5561"
这是我的代码:
(defn establish-conn
[]
(try
;conf/get returns DB URI like: "datomic:ddb://us-east-1/my-table/my-db"
(d/create-database (conf/get :db-uri))
(reset! conn (d/connect (conf/get :db-uri)))
(catch Throwable t
(log/error "Could not establish db conn." t))))
此外,我还有用于从Transactor故障/不可用等恢复连接的代码。
(defn fix-if-conn-ex
;;getting exception's error message
[err-msg]
(when (any? (str/includes? err-msg %) [":db.error/connection-released"
":db.error/transactor-unavailable"])
(db/establish-conn)))
答案 0 :(得分:0)
我无法在我的暂存环境中使用最新的Datomic版本"0.9.5561.56"
重现该问题,我认为已经解决了该问题。