Bagaimana cara meningkatkan PostgreSQL dari versi 8.4 ke 9.4?

18

Saya ingin memperbarui PostgreSQL saya dari versi 8.4 ke 9.4 .

The dokumentasi tidak sangat jelas kepada saya.

  1. Apakah saya akan kehilangan basis data lama saya jika saya melakukan peningkatan?
  2. Bagaimana saya bisa membuat cadangan database lama saya jika saya kehilangan mereka setelah upgrade?
  3. Bagaimana saya bisa memutakhirkan psql saya?

PostgreSQL saya berjalan di server CentOS 6.6 .

Alex Jolig
sumber
Sejujurnya, uraiannya sangat jelas di halaman tertaut. Mengambil dump berarti Anda memiliki dump untuk kasing sesuatu tidak berfungsi. Itu juga berarti Anda tidak kehilangannya. Selain itu, ada tautan di halaman itu yang menunjukkan cara menginstal versi yang lebih baru - misalnya, di Ubuntu, ada postgresql-client-9.4paket yang berisi psql.
dezso
@dezso Jadi jika saya uninstall psql 8.4 dan pergi untuk 9.4, saya akan kehilangan database lama saya?
Alex Jolig
3
Jika Anda mengambil mereka, maka tidak. Anda tetap harus memiliki cadangan reguler yang Anda uji dapat dipulihkan, jadi ini seharusnya tidak menjadi masalah sama sekali. Juga, jika Anda memilih untuk menggunakan pg_upgrade, itu akan menyimpan DB Anda - tetapi mengambil cadangan adalah suatu keharusan dalam kasus ini juga.
dezso
" How can I backup my old databases if" - tidak ada jika . Basis data Anda hampir pasti akan baik-baik saja setelah peningkatan, tetapi Anda harus selalu memiliki cadangan baru (lebih baik diuji) ketika melakukan operasi seperti ini jika terjadi masalah yang tidak terduga (anggaplah yang terburuk: pemadaman listrik atau kesalahan perangkat keras lain mungkin akan meninggalkan Anda dalam posisi yang sulit untuk memutar mundur atau maju dari). Tergantung pada paket cadangan reguler Anda, Anda mungkin tidak perlu mengambil cadangan tambahan.
David Spillett

Jawaban:

25

Inilah cara saya memecahkan masalah saya.

Tingkatkan Postgresql 8.4 ke 9.4 di Centos

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

Cadangkan Data

 7. su - postgres

 8. pg_dumpall > dump.sql

Mengembalikan data

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

Konfigurasi Akses Jaringan

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

Hapus PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql
Alex Jolig
sumber
3
Saya tidak yakin mengapa Anda menolak hasil edit saya sebagai "kerusakan keterbacaan". Ini sebenarnya membuat perintah lebih mudah untuk disalin,
nhahtdh
1
Saya baru saja melakukan peningkatan dari 9,2 menjadi 9,6 menggunakan metode ini, dan itu berhasil. Terima kasih!
EisenHeim
Saya pikir tidak mungkin menggunakan pgdump untuk memigrasi basis data dengan terabyte data misalnya. Apakah ada cara lain untuk melakukan itu?
deFreitas
UNTUK perintah pertama, "Yum Install PG9.4", apakah itu huruf besar yang tepat untuk semuanya?
Dave
1
@deFreitas Saya agak terlambat tetapi Anda dapat menggunakan pg_upgradejika meningkatkan dari> = 8.4 dan jika Anda menggunakan server yang sama. pg_upgradeberguna dalam kasus ini dan benar-benar lebih cepat: pada Ubuntu 18 saya butuh waktu lebih sedikit untuk membuat pg_upgradedaripada pg_dumpmengembalikan database 1GB. Masalahnya adalah Anda harus menginstal dan menjalankan 2 versi postgres di mesin yang sama (tentu saja, mendengarkan port yang berbeda).
EAmez
3

service postgresql-9.4initdb tidak berfungsi untuk saya, saya harus menggunakan sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(ditemukan di sini ).

Terima kasih untuk instruksi yang hebat, saya dapat memperbarui dari 9,2 ke 9,4 tanpa masalah, meskipun saya harus mengkonfigurasi ulang pg_hba.conffile saya , itu sepele.

Jeff
sumber
1

Lebih baik daripada menautkan binary tunggal postgresql94 psql ke / usr / (local /) bin adalah dengan menggunakan sistem alternatif:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

Yang menciptakan tautan binari, mans, confs, ... dari postgresql94 ke direktori default untuk CentOS.

Michal Michaláč
sumber