2010-09-16 67 views
20

我每天使用postgres开发框的背部: pg_dumpall -h 127.0.0.1 -U user -w | gzip blah.gz如何删除Postgres上的所有数据库?

由于9.0现在是候选版本,我希望每天将此日常备份恢复到postgres9.0rc1框进行测试,但我不知道如何重复编写脚本。有没有一些目录可以做到这一点?

回答

17

你可以做“放置簇”和“创建簇”,它将自动擦除所有数据库。删除所有数据,您$ PGDATA目录中,并使用重新初始化集群:

initdb -D /usr/local/pgsql/data 
+1

要清楚,你应该用'$ PGDATA'目录替换'/ usr/local/pgsql/data'。例如,对于通过Homebrew安装的PostgreSQL,它是'/ usr/local/var/postgres'。另外,如果你导出'$ PGDATA',那么你可以运行没有参数的'initdb'。最后,请注意删除'$ PGDATA'目录是一个单独的步骤。 'initdb'不适合你。哦,如果您的'postgres'服务器仍在运行,删除将无法正常工作。 – 2017-07-20 21:30:07

14

您可以使用:

$ pg_dropcluster 9.2 main 
$ pg_createcluster 9.2 main 
$ pg_ctlcluster 9.2 main start 
$ pg_restore -f your_dump_file 

其中9.2 = cluster versionmain = cluster name

+0

如果我没有弄错,那些不是标准的Postgres工具。 – 2013-07-27 09:26:28

+0

这些是debian脚本。 – Russ 2013-07-29 19:02:25

+1

我建议使用'-e'UTF-8''作为'pg_createcluster'标志,否则如果你想要UTF-8数据库并且区域设置没有设置为UTF8,以后可能必须更改。 – coffeemakr 2018-03-08 20:11:21

0

移动数据库中的数据在其他地方可以实现与删除一样的功能,并且在您改变主意的情况下您可以轻松将其移回原处(但请务必小心并在任何情况下备份数据)。

1)在某处创建目录(例如/home/USERNAME/BACKUPDIR)。

2)作为超级用户去到PostgreSQL数据目录(Fedora的如/var/lib/pgsql/

3)将data到您的备份文件夹:mv data /home/USERNAME/BACKUPDIR

4)然后重新初始化使用例如一个新的数据库sudo postgresql-setup --initdb --unit postgresql

相关问题