将PostgreSQL完全重置为默认值?


16

有没有办法完全重置Linux上的PostgreSQL安装,使其与我安装时的状态相同?

理念

我考虑过

rm -rf /var/lib/pgsql/*
rm -rf /var/lib/pgsql/backups/*
rm -rf /var/lib/pgsql/data/*

但这也许不是推荐的方法。

目的

这将有助于摆脱以前使用它的程序的遗留问题。


Answers:


4

应该这样做-只需首先确保当前配置确实将文件存储在这些目录中即可。

完成后,重新启动数据库:

sudo -U pgsql initdb

1
不,请不要。在Ubuntu上,至少这会导致混乱,因为它希望您使用自己的包装器工具。
Craig Ringer 2014年

1
是吗 好吧,那么还有另一个理由要使用其他系统。。。就我个人而言,我会投票支持FreeBSD,但是每个人都有自己的选择。
珍妮D

@克雷格:会造成什么样的混乱?我刚刚在Ubuntu上使用了这种方法,对我来说似乎还不错。您会在答案中添加一些细节吗?
2015年

1
@halfer从postgresql.conf和pg_hba.conf开始不会是ububtu脚本所期望的。否则,他们将忽略initdb创建的那些,并继续使用旧的。
Craig Ringer 2015年

如果这是我们已连接的远程数据库而不是我们在本地初始化的数据库,该怎么办?
anon58192932 '18年

24

这完全取决于它的安装方式。

Ubuntu,来自软件包(内置或apt.postgresql.org)

使用pg_wrapper。请参阅PostgreSQL的Ubuntu文档。您想要pg_dropcluster所有现有的Pg群集,然后pg_createcluster是一个干净的新群集。

不要只是删除数据目录和重新initdb的。

CentOS / RH / Fedora,内置软件包

我没有安装此程序,现在无法轻松测试。从内存中,我认为仅停止服务器并删除数据目录是安全的。

CentOS / RH / Fedora,yum.postgresql.org软件包

请参阅/usr/share/doc/postgresql??-?.?.?/README.rpm-dist

使用systemctlservicewrapper命令停止服务器,删除数据目录,然后运行/usr/pgsql-9.3/bin/postgresql93-setup initdb(根据您的版本调整路径)。

任何发行版,来自EDB安装程序

停止服务器,删除数据目录和initdb一个新的群集。请参阅安装程序文档。

从来源

停止服务器,删除数据目录,重新初始化db。

OS X

自酿: brew uninstall postgresql; brew cleanup; brew install postgresql

Postgres.app?EDB安装程序?MacPorts?

找啤酒 喝啤酒。重复。如果这不能使疼痛消失,则得到一些更强的东西。

视窗

  • 停止服务
  • 删除数据目录
  • 使用runas.exepostgres用户(9.2之前的版本)或NETWORKSERVICE(9.2+)重新运行initdb 。或者只是在之后更改所有权。

1
对于OS X,brew卸载和清理不会触碰我的数据目录/usr/local/var/postgresql@9.5。(它会删除/usr/local/opt/postgresql@9.5中的应用程序,请注意“ opt”而不是“ var”)。重新安装之前需要“ rm -rf /usr/local/var/postgresql@9.5”。
柯蒂斯·雅洛普

4

删除并重新安装不是最好吗?

这样,您将获得最新版本并在此过程中更新所有依赖项。

运行:sudo apt-get --purge删除postgresql

然后:sudo apt-get install postgresql


1
这并未删除现有的DB +用户(自Postgres 9.5起)
Sebastian Wagner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.