从 postgres 9.1 升级到 9.2 时,系统提示数据库需要升级,因此我输入升级命令后得到以下信息
$ sudo service postgresql upgrade
Stopping postgresql service: [ OK ]
Upgrading database: [FAILED]
See /var/lib/pgsql9/pgupgrade.log for details.
日志文件的内容/var/lib/pgsql9/pgupgrade.log
是
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories ok
Checking cluster versions ok
connection to database failed: fe_sendauth: no password supplied
could not connect to old postmaster started with the command:
"/usr/lib64/pgsql/postgresql-9.1/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "/var/lib/pgsql9/data-old" -o "-p 5432 -b -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directory='/var/lib/pgsql9'" start
Failure, exiting
我使用带密码的 postgres 启用了类似这样的功能pg_connect("host=localhost port=5432 dbname=pgdbname user=postgres password=postgrespassword");
我毁了yum update
我的系统,然后就陷入了这种情况。你能建议我恢复所有功能的方法吗?那太好了!
答案1
解决方法
在升级期间编辑您的pg_hba.conf
并设置连接local
。trust
背景
亚马逊的 Amazon Linux 团队做出了一个奇怪的决定,通过简单的“yum 更新”对 PostgreSQL 进行主要版本升级。大多数供应商对不同的主要版本使用不同的软件包名称,因此用户必须做出明确的升级决定。亚马逊尚未这样做和不要认真对待关于这个问题的反馈。
在“yum update”上将用户升级到新的 PostgreSQL 版本是错误的做法,原因正如您所遇到的:pg_upgrade
有限制,并且除非您有旧服务器版本的二进制文件,否则您无法进行转储和重新加载。
这有关此主题的 Amazon Linux 常见问题解答自从我写下这篇文章以来,情况已经有所改善,但仍然不承认他们糟糕的包装政策造成了问题。
认真考虑使用更加小心打包 PostgreSQL 的发行版。PGDG团队目前没有为 Amazon Linux 制作软件包,否则我建议使用它们。