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

27

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

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

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

nathanvda
источник

Ответы:

27
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

Marconius
источник
На одном компьютере трех верхних строчек было достаточно. С другой стороны мне пришлось переустановить 8.4, чтобы все заработало, как вы сказали. Спасибо за помощь.
Натанвда
Следует отметить, что сценарий "pg_upgradecluster" не обрабатывает случай, когда необходимо указать пользователя базы данных. (Если это произойдет, я точно не могу понять, как это обеспечить.)
Pointy
Если вы получите, Error: specified cluster is not runningкогда пытаетесь снова после изменения max_connections, используйте pg_ctlcluster 8.4 main start.
Скиппи ле Гран Гуру
Уменьшение max_connectionsне работает для меня. В качестве альтернативного решения, представленного в сообщении об ошибке, я уменьшил shared_buffersдо 20 МБ (с 200 МБ), что сработало для меня.
Серрано
4

После обновления до 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.

estibordo
источник
К вашему сведению, я обнаружил, что, выполнив команду «du -hs» в каталоге /var/lib/postgresql/9.1, а затем сравнив ее с выводом той же команды в /var/lib/postgresql/8.4/, я смог определить, сколько было скопировано, на основе размера, выведенного из этой команды.
Джо Дж
Я знаю, что этот вопрос не обсуждается. Но я столкнулся с той же проблемой, что вы описали. Причина, по которой pg_upgradecluster не смог остановить старый кластер, заключалась в том, что экземпляр Tomcat использовал соединения, а Postgres не смог их закрыть. Надеюсь, это кому-нибудь поможет.
bplayer