2015-10-30 15 views
3

Сегодня я обновил все программное обеспечение на сервере Ubuntu:«Кластер базы данных был инициализирован с помощью CATALOG_VERSION_NO X, но сервер был скомпилирован с CATALOG_VERSION_NO Y." после того, как например обновить

sudo aptitude upgrade 

Обновление выполняется не очень хорошо и не PostgreSQL начать с ошибкой:

[email protected]:~$ 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 был на сервере перед обновлением, но в результате модернизации я видел только один реж данных и один кластер:

[email protected]:~$ ls /var/lib/postgresql/ 
9.5 Maildir 

[email protected]:~$ 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 кластер был создан:

[email protected]:~$ sudo cp /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.old 
[email protected]:~$ sudo /usr/lib/postgresql/9.5/bin/initdb -D /var/lib/postgresql/9.5/main/ 
[email protected]:~$ sudo aptitude upgrade 
[email protected]:~$ ls /var/lib/postgresql/ 
9.4 9.5 Maildir 
[email protected]:~$ 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 

Сейчас он работает нормально, но как восстановить сохраненные данные из/вар/Lib/PostgreSQL/9.5/main.old? pg_upgrade не работает. И ... да, я не создавал резервную копию перед обновлением.

UPDATE: Содержание /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:

[email protected]:~$ 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 


[email protected]:~$ 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

@CraigRinger сделано, обновлено в последнем разделе –

+0

Хм, хорошо. Таким образом, вы явно не включили какие-либо тестовые репозитории. Вы должны вручную запустить 'apt-get install postgresql-9.5', поскольку он не устанавливается автоматически, когда вы запрашиваете PostgreSQL, но даже в этом случае я считаю, что не так просто случайно установить альфа-версию. Я отправил по электронной почте команду apt packaging; mail на http://www.postgresql.org/message-id/[email protected]om –

+0

Итак, у вас есть альфа-пакеты в вашем '/ var/cache/apt/archives'? –

ответ

2

Вы/использовали в альфа-релиз базы данных, которая явно документально не оставаясь формат-стабильный. Похоже, что было бы слишком легко установить, не осознавая этого; У меня mailed the apt packaging team about that.


Update: Вы, должны быть явно проделали aptitude install postgresql-9.5и либо используются --force, когда первоначально установка или добавлены 9.5 к вашей sources.list записи вручную. По умолчанию пакеты 9.5 не установлены и выполняются дополнительные шаги для установки. См:

Я обновил вики с предупреждающими табличками, в случае, если вы следовали этим инструкциям, не понимая, о смене формата. Хотя я бы подумал, что использование предварительной базы данных с данными, о которых вы заботитесь, было бы на самом деле не совсем отличной идеей.


Если вам нужно прочитать старые данные, вам необходимо загрузить конкретную версию вы запускали тогда, установить, что, и использовать его для дампа базы данных (ы). Затем вы можете восстановить их на новую копию.

Я сильно советую вам сбросить данные, а затем восстановить его на PostgreSQL 9.4 и продолжать использовать, что до 9.5.0 не выходит или, по крайней мере, до тех пор бета выпущен . После бета-тестирования команда PostgreSQL старается не менять формат.


Обновление: Вы бежите 9.5~beta1-1.pgdg14.04+1 сейчас, поэтому я уверен, что это 9.5alpha2 для обновления 9.5beta1, который сломал вещи. Это имеет смысл.

Так что нам нужно найти версию 9.5alpha1, а затем принудительно понизить. Обратите внимание, что это не позволит вам получить доступ к вашей базе данных 9.5beta2 до тех пор, пока вы не обновите ее, поэтому я предлагаю сначала сбросить ее.

Из версии ясно, что это релиз PGDG, то есть выпуск с сайта apt.postgresql.org (в ведении группы разработки PostgreSQL). Изучение http://apt.postgresql.org/pub/repos/apt/dists/trusty-pgdg/9.5/binary-amd64/Packages показывает нам текущий список пакетов, и альфа не в нем. Этого следует ожидать, так как он больше не является текущей версией, но это означает, что вы не можете загрузить его из этого репо напрямую. Тем не менее, это также не в trusty-pgdg-testing, и это не в пуле пакетов на http://apt.postgresql.org/pub/repos/apt/pool/main/p/postgresql-9.5/.

Другими словами, альфа полностью удалена из репозитория и больше не доступна для загрузки с apt.postgresql.org.

Сначала проверьте, есть ли у вас все еще альфа в вашем /var/cache/apt/archives. Если вы это сделаете, скопируйте все с alpha2 на свое имя в отдельное место сейчас.

Если вы этого не сделаете, ваши варианты должны скомпилировать его самостоятельно или задать в списке рассылки, если у кого-то еще есть пакеты.

+0

Nitpicking: там ** есть ** бета-версия 9.5 доступна: http: //www.enterprisedb.com/products-services-training/pgdownload –

+0

Спасибо за ответ. A есть еще два вопроса: 1) Почему postgres обновлены до нестабильной версии с обновлением aptitude? Не было никаких предупреждений, никаких подтверждений, ничего. 2) Я не могу создать дамп, потому что я не могу запустить ни 9.5, ни 9.4 кластер с этими данными. 9.4 говорит, что эта папка была создана с 9,5 и не запускается. Как восстановить мои данные? –

+0

@a_horse_with_no_name можете ответить на мой вопрос? –