Як перенести дані постгресу з 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.

Який найкращий спосіб перенести мої дані до нової версії? Чи можу я просто скопіювати файли?

Відповіді:


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. Потім це спрацювало. Ви повинні мати змогу знайти конф-файл за адресою/etc/postgresql/8.4/main/postgresql.conf


На одному комп’ютері вистачило трьох верхніх рядків. З іншого боку, мені довелося перевстановити 8.4, щоб він працював, як ви сказали. Дякую за твою допомогу.
nathanvda

Слід зазначити, що сценарій "pg_upgradecluster" не обробляє випадок, коли повинен бути наданий користувач бази даних. (Якщо так, я впевнений, не можу зрозуміти, як це надати.)
Pointy

Якщо ви Error: specified cluster is not runningповторили спробу після зміни max_connections, скористайтеся pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou

Скорочення 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.


FYI, я виявив, що роблячи "du -hs" в каталозі /var/lib/postgresql/9.1, а потім порівнюючи це з результатом тієї самої команди в /var/lib/postgresql/8.4/, я виявив, що можу вимірювати, скільки було скопійовано на основі розміру виводу з цієї команди.
Джо Дж.

Я знаю, що це не питання, про яке йде мова. Але я зіткнувся з тим же питанням, що ви описали. Причиною pg_upgradecluster не міг зупинити старий кластер через те, що екземпляр Tomcat використовував з'єднання і Postgres не міг їх закрити. Сподіваюся, що це комусь допоможе.
гравець

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.