Bagaimana cara saya memigrasi data postgres saya dari 8.4 ke 9.1?

27

Saya telah memutakhirkan mesin pengembangan ubuntu dari 11,04 menjadi 11,10. Dalam proses postgres saya juga ditingkatkan dari 8,4 menjadi 9,1.

Tapi sepertinya saya kehilangan semua data saya. Jika saya melihat, saya dapat melihat bahwa data saya untuk 8.4 ada di folder /var/lib/postgres/8.4/maindan database baru saya ada di/var/lib/postgres/9.1/main .

Apa cara terbaik untuk memigrasi data saya ke versi baru? Bisakah saya menyalin file?

nathanvda
sumber

Jawaban:

27
su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Awalnya ini tidak berhasil untuk saya karena dua alasan. Pertama, postgresql-8.4 telah dihapus pada beberapa titik, jadi saya harus menginstalnya kembali:

sudo apt-get install postgresql-8.4

Lalu saya harus masuk ke 8.4 postgresql.confdan ganti max_connectionske 10. Kemudian berhasil. Anda harus dapat menemukan file conf di/etc/postgresql/8.4/main/postgresql.conf

Marconius
sumber
Di satu komputer, tiga baris teratas sudah cukup. Di sisi lain saya harus menginstal ulang 8.4 untuk membuatnya berfungsi, seperti yang Anda katakan. Terima kasih untuk bantuannya.
nathanvda
Perlu dicatat bahwa skrip "pg_upgradecluster" tidak menangani kasus di mana pengguna basis data harus disediakan. (Jika ya, saya yakin tidak tahu bagaimana cara menyediakannya.)
Runcing
Jika Anda mendapatkan Error: specified cluster is not runningketika mencoba lagi setelah diubah max_connections, gunakan pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou
Mengurangi max_connectionstidak bekerja untuk saya. Sebagai solusi alternatif yang disediakan oleh pesan kesalahan, saya mengurangi shared_buffersmenjadi 20MB (dari 200MB), yang bekerja untuk saya.
Serrano
4

Setelah memutakhirkan ke 11.10, PostgreSQL 9.1 diinstal, tetapi versi yang berjalan adalah 8.4.

Saya sudah mencoba:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Itu melaporkan kesalahan:

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

Jadi, di jendela lain:

$ 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 ] 

Dan lagi:

pg_upgradecluster 8.4 main

Kesalahan terkait dengan pgRouting dilaporkan. Butuh beberapa saat (sepanjang malam!), Tetapi setelah itu database ditingkatkan menjadi 9,1. PostGIS juga ditingkatkan ke 1.5.3.

estibordo
sumber
FYI, saya menemukan bahwa melakukan "du -hs" di direktori /var/lib/postgresql/9.1 dan kemudian membandingkannya dengan output dari perintah yang sama di /var/lib/postgresql/8.4/, saya menemukan bahwa saya bisa mengukur berapa banyak yang telah disalin berdasarkan ukuran output dari perintah itu.
Joe J
Saya tahu ini bukan pertanyaan yang sedang dibahas. Tapi saya mengalami masalah yang sama seperti yang Anda gambarkan. Alasan pg_upgradecluster tidak bisa menghentikan cluster lama adalah karena instance Tomcat menggunakan koneksi dan Postgres tidak bisa menutupnya. Semoga ini bisa membantu seseorang.
bplayer