如何创建远程Hasura服务器的本地“副本”?

时间:2020-02-15 09:27:36

标签: graphql hasura

我想在我的本地计算机上建立一个Hasura的开发环境,该环境复制我现有的产品(相同的表,相同的架构,相同的数据)。

  • 完成此任务需要哪些步骤?

3 个答案:

答案 0 :(得分:1)

  1. 备份数据库。
  2. 使用数据库运行Hasura。
  3. 确保已同步Hasura元数据。

答案 1 :(得分:1)

Hasura有一个特殊的端点,用于在Postgres实例上执行pg_dump。

这是一个示例CURL请求:

curl --location --request POST 'https://your-remote-hasura.com/v1alpha1/pg_dump' \ --header 'Content-Type: application/json' \ --header 'X-Hasura-Role: admin' \ --header 'Content-Type: text/plain' \ --data-raw '{ "opts": ["-O", "-x","--inserts", "--schema", "public"] }'

它以psql格式输出模式和数据。

您可以使用Postman之类的工具方便地导入,测试和运行CURL查询。

请按照pg_dump文档调整所需的选项。

即上面的查询使用“ --inserts” opt,它在输出中生成“ INSERT INTO”语句。

可以将输出直接复制,粘贴和导入到Hasura Panel SQL选项卡中(“ COPY FROM stdin”语句在面板中插入时会导致错误)。

http://localhost:8080/console/data/sql

在导入之前,请注释掉行CREATE SCHEMA public;或将其从查询中删除,因为该行已经存在。

在执行查询期间或之后,您还必须选择要跟踪的表和关系。

如果数据量较大,则最好使用CLI进行导入。

答案 2 :(得分:1)

我发现此过程运行良好。

  1. 创建一个干净的空本地Postgresql数据库和Hasura实例。

  2. 从现有的Hasura服务器转储架构和数据(根据{protob的answer,但设置为clean_output,这样就不必对输出进行手动更改。有关详细信息,请参见https://hasura.io/docs/1.0/graphql/core/api-reference/pgdump.html

    curl --location --request POST 'https://api.xascore.com/v1alpha1/pg_dump' \
      --header 'Content-Type: application/json' \
      --header 'X-Hasura-Role: admin' \
      --header 'Content-Type: text/plain' \
      --header 'x-hasura-admin-secret: {SECRET}' \
      --data-raw '{ "opts": ["-O", "-x","--inserts",  "--schema", "public"], "clean_output": true}' > hasura-db.sql
    
  3. 本地导入架构和数据:

    psql -h localhost -U postgres < hasura-db.sql
    
  4. 本地数据库具有所有迁移,因为我们复制了最新架构,因此只需将其标记为已应用:

    for x in $(hasura migrate status | grep "Not Present" | awk '{ print $1 }'); do
      hasura migrate apply --version $x --skip-execution
    done
    
    # and confirm the updated status
    hasura migrate status
    
  5. 现在终于可以使用hasura CLI应用Hasura元数据了:

    hasura metadata apply
    

享受您的新实例!