如何在Hasura上进行postgres数据备份

时间:2018-02-07 10:21:46

标签: postgresql pg-dump hasura

我想从HasuraDB中获取pg_dump数据到我的本地机器。建议的方法是什么?

2 个答案:

答案 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