自定义pg:使用Heroku pg:dump capture的转储选项?

时间:2015-04-21 18:37:26

标签: postgresql heroku backup pg

开发时,我需要提取最新数据库,以便我知道我正在使用最新数据。但是,我们保留了一张满是档案的表格,我不需要打扰下载,因为它是一张非常大的桌子。

我知道pg_dump允许使用自定义参数来排除某个表被转储。

没有做任何疯狂的事情,比如拥有2个数据库,1个用于数据,1个用于存档,有没有办法从Heroku下载所有归档表?

我仍然需要它来保存档案表的备份,但我不想下载它。我可以在需要时单独执行pg_dump与备份分开吗?

我知道这是一个很长的镜头,但任何建议都会非常感激。

1 个答案:

答案 0 :(得分:4)

使用heroku pg:backups capture时,无法添加任何自定义pg_dump选项。这个命令实际上调​​用了一个没有文档的Heroku Postgres API,它没有传递任何参数(see here for the code如果你很好奇)。

你可以做的是运行你自己的指向Heroku Postgres实例的pg_dump dump命令。

使用pg:credentials获取连接信息,如果您有多个数据库连接到应用程序,DATABASE_URL也可以是数据库颜色:

> heroku pg:credentials DATABASE_URL --app app_name
Connection info string:
   "dbname=zzxcasdqwe host=ec2-1-1-1-1.compute-1.amazonaws.com port=1111 user=asdfasdf password=qwertyqwerty sslmode=require"
Connection URL:
   postgres://asdfasdf:qwertyqwerty@ec2-1-1-1-1.compute-1.amazonaws.com:1111/zzxcasdqwe

获取连接信息字符串或连接URL,并将其作为pg_dump的第一个参数包含并添加自定义选项

pg_dump "dbname=zzxcasdqwe host=ec2-1-1-1-1.compute-1.amazonaws.com port=1111 user=asdfasdf password=qwertyqwerty sslmode=require"\
        -n schema -t table -O -x -Fc -f dump.out
# OR
pg_dump postgres://asdfasdf:qwertyqwerty@ec2-1-1-1-1.compute-1.amazonaws.com:1111/zzxcasdqwe \
        -n schema -t table -O -x -Fc -f dump.out

我还共同编写了一个Heroku plugin (parse_db_url),它将DATABASE_URL解析为其他格式,如pg_dump,pg_restore,pgpass等。我发现它在处理几个不同的Heroku数据库时很有用。