Graphql 如何创建“本地”;“复制”;远程Hasura服务器的设计?

Graphql 如何创建“本地”;“复制”;远程Hasura服务器的设计?,graphql,hasura,Graphql,Hasura,我想在本地机器上建立一个Hasura的开发环境,它复制我现有的产品(相同的表、相同的模式、相同的数据) 完成此任务所需的步骤是什么 备份数据库 使用数据库运行Hasura 确保Hasura元数据已同步 Hasura有一个特殊的端点,用于在Postgres实例上执行pg_dump 下面是一个示例CURL请求: curl--位置--请求发布'https://your-remote-hasura.com/v1alpha1/pg_dump' \ --标题“内容类型:应用程序/json”\ --标题“

我想在本地机器上建立一个Hasura的开发环境,它复制我现有的产品(相同的表、相同的模式、相同的数据)

  • 完成此任务所需的步骤是什么
  • 备份数据库
  • 使用数据库运行Hasura
  • 确保Hasura元数据已同步

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

    下面是一个示例CURL请求:

    curl--位置--请求发布'https://your-remote-hasura.com/v1alpha1/pg_dump' \
    --标题“内容类型:应用程序/json”\
    --标题“X-Hasura-Role:管理员”\
    --标题“内容类型:文本/普通”\
    --数据原始'{
    “opts”:[“-O”、“-x”、“--insert”、“--schema”、“public”]
    }“

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

    为了方便导入、测试和运行CURL查询,可以使用Postman之类的工具

    请按照pg_转储文件调整所需选项

    i、 e.上述查询使用“-inserts”opt,它在输出中生成“insertinto”语句

    可以将输出复制、粘贴并直接导入Hasura面板SQL选项卡(“从stdin复制”语句插入面板时会导致错误)

    导入前,注释掉或删除行
    createschemapublic来自查询,因为它已存在

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


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

    我发现此过程运行良好

  • 创建一个干净的空本地postgresql数据库和Hasura实例。要更新现有的本地数据库

  • 从现有Hasura服务器转储架构和数据(根据@protob,但设置了
    clean_输出
    ),以便不必手动更改输出。有关详细信息,请参阅

    curl --location --request POST 'https://example.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
    
  • 本地导入架构和数据:

    psql -h localhost -U postgres < hasura-db.sql
    
  • 现在,最后使用Hasura CLI应用Hasura元数据:

    hasura metadata apply
    

  • 享受您的新实例!

    谢谢,我只需要更多详细信息。使用docker?复制数据库结构/数据?更多详细信息-阅读prostgresql中的备份?可能应该将您的答案标记为正确,但我在Heroku上托管的Postgres在我执行第一步时返回503…我感谢您的帮助,先生!标记为✅