今天我升级了Ubuntu服务器上的所有软件:
sudo aptitude upgrade
升级执行得不好,postgresql没有启动,错误:
alex@db:~$ sudo service postgresql start
* Starting PostgreSQL 9.5 database server[fail]
* The PostgreSQL server failed to start. Please check the log output:
2015-10-30 12:42:09 MSK FATAL: database files are incompatible with server
2015-10-30 12:42:09 MSK DETAIL: The database cluster was initialized with CATALOG_VERSION_NO 201507281, but the server was compiled with CATALOG_VERSION_NO 201510051.
2015-10-30 12:42:09 MSK HINT: It looks like you need to initdb.
我不记得在升级之前哪个版本的postgresql在服务器上,但由于升级,我只看到一个数据目录和一个集群:
alex@db:~$ ls /var/lib/postgresql/
9.5 Maildir
alex@db:~$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.5 main 5432 down postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
所以它看起来像是一个小小的升级。
在某处复制数据目录后,再次运行initdb
和aptitude upgrade
我发现创建了一个9.4集群:
alex@db:~$ sudo cp /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.old
alex@db:~$ sudo /usr/lib/postgresql/9.5/bin/initdb -D /var/lib/postgresql/9.5/main/
alex@db:~$ sudo aptitude upgrade
alex@db:~$ ls /var/lib/postgresql/
9.4 9.5 Maildir
alex@db:~$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
9.4 main 5433 down postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
9.5 main 5432 down postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
现在它工作正常,但如何从/var/lib/postgresql/9.5/main.old恢复保存的数据? pg_upgrade不起作用。 并且......是的,我在升级之前没有创建备份。
更新
/etc/apt/sources.list
#######################################################################################
# Hetzner APT-Mirror
#
deb http://mirror.hetzner.de/ubuntu/packages trusty main restricted universe multiverse
deb http://mirror.hetzner.de/ubuntu/packages trusty-backports main restricted universe multiverse
deb http://mirror.hetzner.de/ubuntu/packages trusty-updates main restricted universe multiverse
deb http://mirror.hetzner.de/ubuntu/security trusty-security main restricted universe multiverse
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ trusty universe
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty universe
deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted
deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted
deb http://security.ubuntu.com/ubuntu trusty-security universe
deb-src http://security.ubuntu.com/ubuntu trusty-security universe
deb http://security.ubuntu.com/ubuntu trusty-security multiverse
deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu trusty partner
# deb-src http://archive.canonical.com/ubuntu trusty partner
## Uncomment the following two lines to add software from Ubuntu's
## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
# deb http://extras.ubuntu.com/ubuntu trusty main
# deb-src http://extras.ubuntu.com/ubuntu trusty main
deb http://packages.elasticsearch.org/elasticsearch/1.4/debian stable main
UPDATE2:
alex@db:~$ sudo dpkg -l postgresql\*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=========================================================-=================================-=================================-=======================================================================================================================
ii postgresql 9.4+170.pgdg14.04+1 all object-relational SQL database (supported version)
un postgresql-7.4 <none> <none> (no description available)
un postgresql-8.0 <none> <none> (no description available)
un postgresql-9.1 <none> <none> (no description available)
ii postgresql-9.3 9.3.10-1.pgdg14.04+1 amd64 object-relational SQL database, version 9.3 server
ii postgresql-9.4 9.4.5-1.pgdg14.04+1 amd64 object-relational SQL database, version 9.4 server
ii postgresql-9.5 9.5~beta1-1.pgdg14.04+1 amd64 object-relational SQL database, version 9.5 server
un postgresql-client <none> <none> (no description available)
ii postgresql-client-9.3 9.3.10-1.pgdg14.04+1 amd64 front-end programs for PostgreSQL 9.3
ii postgresql-client-9.4 9.4.5-1.pgdg14.04+1 amd64 front-end programs for PostgreSQL 9.4
ii postgresql-client-9.5 9.5~beta1-1.pgdg14.04+1 amd64 front-end programs for PostgreSQL 9.5
ii postgresql-client-common 170.pgdg14.04+1 all manager for multiple PostgreSQL client versions
ii postgresql-common 170.pgdg14.04+1 all PostgreSQL database-cluster manager
ii postgresql-contrib 9.4+170.pgdg14.04+1 all additional facilities for PostgreSQL (supported version)
ii postgresql-contrib-9.3 9.3.10-1.pgdg14.04+1 amd64 additional facilities for PostgreSQL
ii postgresql-contrib-9.4 9.4.5-1.pgdg14.04+1 amd64 additional facilities for PostgreSQL
ii postgresql-contrib-9.5 9.5~beta1-1.pgdg14.04+1 amd64 additional facilities for PostgreSQL
ii postgresql-doc 9.4+170.pgdg14.04+1 all documentation for the PostgreSQL database management system
ii postgresql-doc-9.3 9.3.10-1.pgdg14.04+1 all documentation for the PostgreSQL database management system
ii postgresql-doc-9.4 9.4.5-1.pgdg14.04+1 all documentation for the PostgreSQL database management system
un postgresql-doc-9.5 <none> <none> (no description available)
ii postgresql-server-dev-9.3 9.3.10-1.pgdg14.04+1 amd64 development files for PostgreSQL 9.3 server-side programming
alex@db:~$ sudo apt-cache policy postgresql-9.5
postgresql-9.5:
Installed: 9.5~beta1-1.pgdg14.04+1
Candidate: 9.5~beta1-1.pgdg14.04+1
Version table:
*** 9.5~beta1-1.pgdg14.04+1 0
500 http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg/main amd64 Packages
100 /var/lib/dpkg/status
答案 0 :(得分:2)
您正在/正在使用数据库的 alpha版本,明确记录为不保留格式稳定。看起来它可能有点太容易安装而没有意识到,但是;我mailed the apt packaging team about that。
更新:您必须明确完成aptitude install postgresql-9.5
并在最初安装时使用--force
或将9.5
添加到sources.list
手动输入9.5~beta1-1.pgdg14.04+1
条目。默认情况下不安装9.5软件包,并采取额外步骤进行安装。参见:
我更新了wiki并附有警告说明,以防你按照这些说明而没有意识到格式更改。虽然我认为使用预先发布的数据库和你关心的数据实际上并不是一个好主意。
如果您需要读取旧数据,则需要下载当时运行的特定版本,安装该版本并使用它来转储数据库。然后,您可以将它们还原到新副本。
我强烈建议您转储数据,然后将其恢复到PostgreSQL 9.4,并继续使用它直到9.5.0出现或至少直到测试版发布。测试结束后,PostgreSQL团队努力避免改变格式。
更新:你现在正在运行http://apt.postgresql.org/pub/repos/apt/dists/trusty-pgdg/9.5/binary-amd64/Packages
,所以我很确定它是9.5alpha2到9.5beta1更新破坏了东西。这是有道理的。
所以我们需要做的是找到9.5alpha1版本,然后强制降级。请注意,这将阻止您在再次升级之前访问9.5beta2数据库,因此我建议先将其转储。
从版本中可以看出它是PGDG版本,即apt.postgresql.org(由PostgreSQL开发组运行)发布。检查trusty-pgdg-testing
向我们显示当前的包列表,而alpha不在其中。这是预期的,因为它不再是当前版本,但它意味着你不能直接从该repo下载它。但是,也不在http://apt.postgresql.org/pub/repos/apt/pool/main/p/postgresql-9.5/
中,并且它不在/var/cache/apt/archives
的包裹池中。
换句话说,alpha已经完全从存储库中删除,并且不再可以从apt.postgresql.org下载。
首先,检查alpha2
中是否仍有alpha。如果您这样做,请将名称中包含{{1}}的所有内容复制到另一个位置 now 。
如果你不这样做,你的选择是自己编译,或者在邮件列表上询问是否还有人有这些包。