我想从HasuraDB中获取pg_dump数据到我的本地机器。建议的方法是什么?
答案 0 :(得分:2)
Hasura集群是下面的kubernetes集群,因此该过程类似于您使用kubectl
所做的过程。
选项1:
在容器上执行pg_dump
命令:
hasura ms exec -n hasura postgres -- pg_dump -U admin -d hasuradb > public_data.sql
实际上,您可能只需要数据而不是hasura元数据或schema_migration信息。这是一个更好的“数据导出”类型命令:
hasura ms exec -n hasura postgres -- pg_dump -U admin -d hasuradb --data-only -n public -T schema_migrations > public_data.sql
选项2:
这是上述选项的较长版本。群集上的pg_dump
和cp返回本地计算机
# Exec into the postgres container
$ hasura ms exec -ti -n hasura postgres -- /bin/bash
# Run pg_dump
root@postgres-3391217220-t7bbc:/$ pg_dump -U admin -d hasuradb > hasuradb.sql
^D
#Back on your local machine, copy the dump
$ hasura ms cp hasura/postgres:/hasuradb.sql hasuradb.sql
选项3:
假设您在自己的计算机上安装了pg_dump,请从本地计算机运行pg_dump。缺点:即使对于微小的数据库,这也要慢得多。因为RTT。
首先,运行一个port-forward连接到postgres:
$ hasura ms port-forward -n hasura postgres --local-port 5432
接下来,使用postgres密码运行pg_dump:
$ hasura secrets list
...
postgres.password-------------|xxx-xxx-xxx-xxx
...
$ POSTGRES_PASSWORD=xxx-xxx-xxx-xxx pg_dump -U admin -d hasuradb -h localhost -p 5432 -v > hasuradb.sql
答案 1 :(得分:0)
Hasura具有pgdump
API命令,默认情况下启用。这里是文档:https://docs.hasura.io/1.0/graphql/manual/api-reference/pgdump.html
文档当前缺少的是一个示例。这是一个示例,我用于转储Hasura数据,但不转储架构(来自迁移),以便将其导入到本地托管的dev hasura中(假设使用一个,则插入您自己的hasura-admin-secret
或替换为其他标头):
HASURA_SECRET=som3_Secr3t_Her3
curl -d '{"-Fc", "opts": ["--data-only"]}' -H "x-hasura-admin-secret: $HASURA_SECRET" https://your-host-url.com/v1alpha1/pg_dump > dumpfile