Как перенести данные postgres с 8.4 до 9.1?

Я обновил свою машину разработки Ubuntu с 11.04 по 11.10. В этом процессе мои postgres также были обновлены с 8.4 до 9.1.

Но я, кажется, потерял все свои данные. Если я посмотрю, я вижу, что мои данные для 8.4 находятся в папке /var/lib/postgres/8.4/main, а моя новая база данных находится в /var/lib/postgres/9.1/main.

Каков наилучший способ переноса моих данных в новую версию? Могу ли я просто скопировать файлы?

27
задан 17 March 2012 в 23:56

3 ответа

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Сначала это не работало для меня по двум причинам. Во-первых, postgresql-8.4 не был определен в какой-то момент, поэтому мне пришлось переустановить его:

sudo apt-get install postgresql-8.4

Тогда мне пришлось перейти в 8.4 postgresql.conf и сменить max_connections на 10. Тогда это работал. Вы должны найти файл conf в /etc/postgresql/8.4/main/postgresql.conf

27
ответ дан 25 May 2018 в 18:13
  • 1
    На одном компьютере было достаточно трех верхних строк. С другой стороны, мне пришлось переустановить 8.4, чтобы заставить его работать, как вы сказали. Спасибо за помощь. – nathanvda 17 October 2011 в 11:24
  • 2
    Следует отметить, что "pg_upgradecluster" сценарий не обрабатывает случай, когда должен быть предоставлен пользователь базы данных. (Если это так, я уверен, что не могу понять, как его предоставить.) – Pointy 18 June 2012 в 20:15
  • 3
    Если вы попытаетесь снова Error: specified cluster is not running после изменения max_connections, используйте pg_ctlcluster 8.4 main start. – Skippy le Grand Gourou 20 June 2014 в 17:24
  • 4
    Уменьшение max_connections не помогло мне. В качестве альтернативного решения, предоставленного сообщением об ошибке, я уменьшил shared_buffers до 20 МБ (от 200 МБ), который работал для меня. – Serrano 5 October 2014 в 16:56

После обновления до 11.10 был установлен PostgreSQL 9.1, но запущенная версия была 8.4.

Я пробовал:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Сообщал об ошибке:

Stopping old cluster...
pg_ctl: servidor não desligou
Error: Could not stop old cluster

Итак, в другом окне:

$ sudo service postgresql-8.4 stop
 * Stopping PostgreSQL 8.4 database server                               [ OK ] 
jgr@cagliari:~$ sudo service postgresql-8.4 start
 * Starting PostgreSQL 8.4 database server                               [ OK ] 

И снова:

pg_upgradecluster 8.4 main

Сообщались ошибки, связанные с pgRouting. Это заняло некоторое время (всю ночь!), Но впоследствии база данных была обновлена ​​до 9.1. PostGIS также обновлялся до 1.5.3.

4
ответ дан 25 May 2018 в 18:13
  • 1
    FYI, я обнаружил, что выполнение "du -hs" в каталоге /var/lib/postgresql/9.1, а затем сравнивая это с выходом той же команды в /var/lib/postgresql/8.4/, я обнаружил, что могу оценить, сколько было скопировано в зависимости от размера вывода из этой команды. – Joe J 15 November 2012 в 02:04
  • 2
    Я знаю, что это не вопрос, который обсуждается. Но я столкнулся с тем же вопросом, который вы описали. Причина, по которой pg_upgradecluster не могла остановить старый кластер, заключалась в том, что экземпляр Tomcat использовал соединения, и Postgres не могли их закрыть. Надеюсь, это поможет кому-то. – bplayer 14 April 2014 в 20:26

, когда не хватает времени для дампа и восстановления, используйте pg_upgrade: http://www.postgresql.org/docs/devel/static/pgupgrade.html

1
ответ дан 25 May 2018 в 18:13

Другие вопросы по тегам:

Похожие вопросы: