我正在为我的Ruby on Rails应用程序(在Mac OS X 10.9上)使用PostgreSQL数据库。

关于如何升级PostgreSQL数据库有详细的说明吗?

我担心我会破坏数据库中的数据或把它弄乱。


当前回答

看来Homebrew现在已经有了解决方案:

$ brew info postgresql
...
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database
....

其他回答

尽管上面有所有的答案,我还是有5美分。

它适用于任何操作系统和从任何到任何postgres版本。

停止任何正在运行的postgres实例; 安装新版本并启动它;检查你是否可以连接到新版本; 将旧版本postgresql.conf ->端口从5432修改为5433; 启动旧版postgres实例; 打开终端并cd到新版本的bin文件夹; 执行命令pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username> 停止旧的postgres运行实例;

这对我很有用。

https://gist.github.com/dideler/60c9ce184198666e5ab4

言简意赅。老实说,我的目标不是理解PostgreSQL的精髓,我只想把事情做好。

用户手册详细介绍了这个主题。您可以:

pg_upgrade就地;或 Pg_dump和pg_restore。

如果有疑问,请使用转储。不要删除旧的数据目录,保留下来,以防出现问题/你犯了错误;这样,您就可以返回到未更改的9.3安装。

具体操作请参见产品手册。

如果你被卡住了,发一个详细的问题,解释你是如何被卡住的,在哪里,你首先尝试了什么。这也取决于你如何安装PostgreSQL,因为在OS X上有几个不同的PostgreSQL“发行版”(不幸的是)。所以你需要提供这些信息。

Mac通过homebrew:

编译petere/postgresql,

(例如:Brew install peere /postgresql/postgresql-9.6)

删除旧Postgres:

Brew unlink postgresql

编译链接-f postgresql-9.6

如果发生任何错误,不要忘记阅读并遵循每一步的酿造说明。

查看更多信息:https://github.com/petere/homebrew-postgresql

我的解决方案是将这两种资源结合起来:

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

and

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

第二个比第一个更有帮助。也要不要,不要按照步骤去做,因为有些是没有必要的。 此外,如果您不能通过postgres控制台备份数据,您可以使用替代方法,使用pgAdmin 3或其他程序进行备份,就像我在我的案例中所做的那样。

还有,链接:https://help.ubuntu.com/stable/serverguide/postgresql.html 帮助设置postgres用户的加密密码和md5认证。

所有这些都完成后,检查终端中运行的postgres服务器版本:

sudo -u postgres psql postgres

输入密码后在postgres终端运行:

SHOW SERVER_VERSION;

它将输出如下内容:

 server_version 
----------------
 9.4.5

设置和启动postgres我使用命令:

> sudo bash # root
> su postgres # postgres

> /etc/init.d/postgresql start
> /etc/init.d/postgresql stop

然后从文件中恢复数据库:

> psql -f /home/ubuntu_username/Backup_93.sql postgres

或者如果不奏效,试试这个:

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

如果你正在使用Rails做一个bundle exec rake db:migrate后拉代码:)