Bagaimana cara meningkatkan PostgreSQL dari versi 9.6 ke versi 10.1 tanpa kehilangan data?

207

Saya menggunakan database PostgreSQL untuk aplikasi Ruby on Rails saya (di Mac OS X 10.9).

Apakah ada petunjuk terperinci tentang cara meningkatkan basis data PostgreSQL?

Saya khawatir saya akan menghancurkan data dalam database atau mengacaukannya.

pengguna3675188
sumber
8
Lakukan backup dalam hal apa pun.
Patrick Oscity

Jawaban:

402

Dengan asumsi Anda telah menggunakan buatan rumah untuk menginstal dan meningkatkan Postgres, Anda dapat melakukan langkah-langkah berikut.

  1. Hentikan server Postgres saat ini:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Inisialisasi database 10.1 baru:

    initdb /usr/local/var/postgres10.1 -E utf8

  3. jalankan pg_upgrade (catatan: ganti versi bin jika Anda meningkatkan dari sesuatu selain di bawah) :

    pg_upgrade -v \
        -d /usr/local/var/postgres \
        -D /usr/local/var/postgres10.1 \
        -b /usr/local/Cellar/postgresql/9.6.5/bin/ \
        -B /usr/local/Cellar/postgresql/10.1/bin/

    -v untuk mengaktifkan logging internal verbose

    -d direktori konfigurasi cluster database lama

    -D direktori konfigurasi cluster database baru

    -b direktori yang dapat dieksekusi PostgreSQL lama

    -B direktori yang dapat dieksekusi PostgreSQL baru

  4. Pindahkan data baru ke tempatnya:

    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
  5. Mulai kembali Postgres:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  6. Periksa /usr/local/var/postgres/server.logdetailnya dan pastikan server baru dimulai dengan benar.

  7. Akhirnya, instal ulang pgpermata rel

    gem uninstall pg
    gem install pg

Saya sarankan Anda meluangkan waktu untuk membaca dokumentasi PostgreSQL untuk memahami apa yang Anda lakukan pada langkah-langkah di atas untuk meminimalkan frustrasi.

Donovan
sumber
8
Saya mencoba menggunakan perintah berikut untuk menginisialisasi database:initdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
sunsations
Ini mengikuti panduan Anda langkah demi langkah. Dan semuanya berhasil! Terima kasih banyak.
Trantor Liu
3
Hati-hati dengan delete_old_cluster.shperintah. Saya pertama kali secara manual menghapus direktori /usr/local/postgres9.3, daripada menjalankan perintah ini dan sepertinya saya kehilangan seluruh direktori / usr / local / var / postgres (saya dapat mengembalikannya dari Time Machine)
peter_v
1
Jika Anda menggunakan Bundler, Anda harus menghapus gem menggunakan gem uninstall pgtetapi kemudian biarkan bundler menginstal ulang versi yang benar dari Gemfile.lock dengan hanya menjalankan bundle.
danielricecodes
1
Pembaruan kecil: brewsekarang juga memiliki opsi untuk digunakan brew services stop postgresqldan brew services start postgresqlalih-alih langsung menelepon launchctl unloaddan launchctl load.
florish
59

Terlepas dari semua jawaban di atas, inilah 5 sen saya.

Ini berfungsi pada OS apa saja dan dari versi postgres apa saja ke yang mana saja.

  • Hentikan instance postgres yang sedang berjalan;
  • Instal versi baru dan mulai; Periksa apakah Anda dapat terhubung ke versi baru juga;
  • Ubah versi lama postgresql.conf-> portdari 5432menjadi 5433;
  • Mulai instance postgres versi lama;
  • Buka terminal dan cdke binfolder versi baru ;
  • Lari pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • Hentikan postgres lama yang berjalan misalnya;
Kristen
sumber
4
Terima kasih Christian, ini jelas merupakan solusi yang hebat dan mudah, saya berhasil beralih dari 9,3 menjadi 9,5 seperti ini
fnicollet
3
Bekerja dengan baik untuk memutakhirkan 9,1 hingga 9,5 pada server Windows 2012.
Rolf
4
Masalah dari solusi ini adalah bahwa jika Anda telah mengubah beberapa file konfigurasi Postgres (mis. postgresql.confAtau pg_hba.conf) Anda perlu mereplikasi perubahan tersebut secara manual di instalasi baru. Sebaliknya, jika Anda menggunakan pg_upgradecluster, file konfigurasi disalin ke cluster baru: manpages.ubuntu.com/manpages/precise/man8/…
Alphaaa
1
Perhatikan bahwa segera setelah Anda memulai perintah, Anda akan mendapatkan satu kata sandi, tetapi Anda harus memasukkan 2 kata sandi satu per satu untuk mengonfirmasi masing-masing dengan Enter. Atau Anda akan mendapatkanpg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55
2
Secara teknis ini tidak akan berfungsi untuk versi any-to-any, hanya untuk versi sumber pada atau di atas 7.0, seperti yang dinyatakan oleh manual:Current releases of the dump programs can read data from any server version back to 7.0.
Mark Tielemans
56

Inilah solusi untuk pengguna Ubuntu

Pertama kita harus menghentikan postgresql

sudo /etc/init.d/postgresql stop

Buat file baru bernama /etc/apt/sources.list.d/pgdg.list dan tambahkan baris di bawah ini

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

Ikuti perintah di bawah ini

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
sudo pg_dropcluster --stop 9.4 main 
sudo /etc/init.d/postgresql start

Sekarang kami memiliki segalanya, hanya perlu memutakhirkannya seperti di bawah ini

sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main

Itu dia. Cluster yang sebagian besar ditingkatkan akan berjalan pada nomor port 5433. Periksa dengan perintah di bawah ini

sudo pg_lsclusters
pramod
sumber
2
Kalimat kedua hingga terakhir di mana Anda mengatakan "Cluster yang sebagian besar ditingkatkan akan berjalan pada nomor port 5433" mungkin harus mengatakan "Cluster 9.3 akan berjalan pada nomor port 5433 sehingga Anda dapat mengembalikan jika perlu".
Andrew Thaddeus Martin
3
Catatan: Untuk ubuntu 14.04 gunakan "trusty-pgdb" sebagai ganti utopic-pgdb
Johnny
3
Perhatikan bahwa ini TIDAK melakukan pembaruan di tempat. karena itu sama sekali tidak berguna untuk 700 GB DB saya pada volume 1TB.
Nama Palsu
16

Pembaruan : Proses ini sama untuk memutakhirkan 9.5 hingga setidaknya 11.5; hanya memodifikasi perintah untuk mencerminkan versi 9.6dan 10, di mana 9.6adalah tua versi dan 10adalah baru versi. Pastikan untuk menyesuaikan direktori "lama" dan "baru" juga.


Saya baru saja memutakhirkan PostgreSQL 9.5 menjadi 9.6 di Ubuntu dan berpikir saya akan membagikan temuan saya, karena ada beberapa nuansa OS / paket khusus yang perlu diperhatikan.

( Saya tidak ingin harus membuang dan mengembalikan data secara manual , sehingga beberapa jawaban lain di sini tidak dapat digunakan.)

Singkatnya, proses terdiri dari menginstal versi baru PostgreSQL bersama versi lama (misalnya, 9.5 dan 9.6), dan kemudian menjalankan pg_upgradebiner, yang dijelaskan dalam (beberapa) detail di https://www.postgresql.org/ docs / 9.6 / static / pgupgrade.html .

Satu-satunya aspek "rumit" dari pg_upgradekegagalan untuk melewati nilai yang benar untuk suatu argumen, atau kegagalan untuk login sebagai pengguna yang benar atau cdke lokasi yang benar sebelum menjalankan perintah, dapat menyebabkan pesan kesalahan samar.

Di Ubuntu (dan mungkin Debian), asalkan Anda menggunakan repo "resmi" deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main,, dan asalkan Anda belum mengubah jalur sistem file default atau opsi runtime, prosedur berikut harus melakukan pekerjaan.

Instal versi baru (perhatikan bahwa kami menentukan 9.6, secara eksplisit):

sudo apt install postgresql-9.6

Setelah instalasi berhasil, kedua versi akan berjalan berdampingan, tetapi pada port yang berbeda. Output instalasi menyebutkan ini, di bagian bawah, tetapi mudah untuk diabaikan:

Creating new cluster 9.6/main ...
  config /etc/postgresql/9.6/main
  data   /var/lib/postgresql/9.6/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5433

Hentikan kedua contoh server (ini akan menghentikan keduanya sekaligus):

sudo systemctl stop postgresql

Beralih ke pengguna sistem PostgreSQL khusus:

su postgres

Pindah ke direktori rumahnya (gagal melakukan ini akan menyebabkan kesalahan):

cd ~

pg_upgrade membutuhkan input berikut (beri pg_upgrade --helptahu kami ini):

When you run pg_upgrade, you must provide the following information:
  the data directory for the old cluster  (-d DATADIR)
  the data directory for the new cluster  (-D DATADIR)
  the "bin" directory for the old version (-b BINDIR)
  the "bin" directory for the new version (-B BINDIR)

Input ini dapat ditentukan dengan "nama panjang", agar lebih mudah divisualisasikan:

  -b, --old-bindir=BINDIR       old cluster executable directory
  -B, --new-bindir=BINDIR       new cluster executable directory
  -d, --old-datadir=DATADIR     old cluster data directory
  -D, --new-datadir=DATADIR     new cluster data directory

Kita juga harus melewati --new-optionssakelar, karena kegagalan untuk melakukannya menghasilkan sebagai berikut:

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/postgresql/.s.PGSQL.50432"?

Hal ini terjadi karena opsi konfigurasi default diterapkan tanpa adanya sakelar ini, yang mengakibatkan opsi koneksi yang salah digunakan, karenanya kesalahan soket.

Jalankan pg_upgradeperintah dari versi PostgreSQL baru :

/usr/lib/postgresql/9.6/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.5/bin --new-bindir=/usr/lib/postgresql/9.6/bin --old-datadir=/var/lib/postgresql/9.5/main --new-datadir=/var/lib/postgresql/9.6/main --old-options=-cconfig_file=/etc/postgresql/9.5/main/postgresql.conf --new-options=-cconfig_file=/etc/postgresql/9.6/main/postgresql.conf

Logout dari akun pengguna sistem khusus:

exit

Pembaruan sekarang selesai, tetapi , instance baru akan mengikat ke port 5433(standar standarnya adalah 5432), jadi ingatlah ini jika mencoba untuk menguji instance baru sebelum "memotong" untuk itu.

Mulai server seperti biasa (sekali lagi, ini akan memulai instance lama dan baru):

systemctl start postgresql

Jika Anda ingin menjadikan versi baru sebagai default, Anda perlu mengedit file konfigurasi yang efektif, misalnya /etc/postgresql/9.6/main/postgresql.conf, dan memastikan bahwa port didefinisikan seperti itu:

port = 5432

Jika Anda melakukan ini, ubah nomor port versi lama ke 5433pada saat yang sama (sebelum memulai layanan), atau, cukup hapus versi lama (ini tidak akan menghapus konten database Anda yang sebenarnya; Anda harus menggunakannya apt --purge remove postgresql-9.5untuk itu terjadi ):

apt remove postgresql-9.5

Perintah di atas akan menghentikan semua instance, jadi Anda harus memulai instance baru terakhir kali dengan:

systemctl start postgresql

Sebagai catatan terakhir, jangan lupa untuk mempertimbangkan pg_upgradesaran bagus:

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
Ben Johnson
sumber
1
Bagi saya di Mac Yosemite, PostgreSQL 9.2 -> 9.5 sudo su postgres:, ubah semua METH di pg_hba.conf kedua instalasi untuk percaya sebelum pg_upgrade, menjalankan pg_upgrade di / private / tmp tidak ~ tidak berfungsi sudo mkdir /foobardengan chmod 777 /foobardan menjalankannya di sana. Akhirnya perintah pg_upgrade:/Library/PostgreSQL/9.5/bin/pg_upgrade -b /Library/PostgreSQL/9.2/bin -B /Library/PostgreSQL/9.5/bin -d /Library/PostgreSQL/9.2/data -D /Library/PostgreSQL/9.5/data -o -cconfig_file=/Library/PostgreSQL/9.2/data/postgresql.conf -O -cconfig_file=/Library/PostgreSQL/9.5/data/postgresql.conf
Jarno Argillander
1
saya berhasil melakukan upgrade dari 9.5 ke 11.5 harus menambahkan repositori apt postgres ke ubuntu. dan kemudian ikuti saja langkah-langkah itu: tecadmin.net/install-postgresql-server-on-ubuntu
shakee93
14

Jika Anda menggunakan layanan homebrew dan homebrew, Anda mungkin bisa melakukan:

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

Saya pikir ini mungkin tidak berfungsi sepenuhnya jika Anda menggunakan fitur postgres canggih, tetapi itu bekerja dengan baik untuk saya.

jnmandal
sumber
1
Bekerja dengan sempurna untuk macOS Mojave 10.14.2 - Terima kasih!
8bithero
13

The manual meliputi topik ini secara mendalam. Kamu bisa:

  • pg_upgradedi tempat; atau

  • pg_dumpdan pg_restore.

Jika ragu, lakukan dengan dump. Jangan hapus direktori data lama, cukup simpan kalau-kalau terjadi kesalahan / Anda membuat kesalahan; dengan begitu Anda bisa kembali ke instalan 9.3 yang tidak berubah.

Untuk detailnya, lihat manual.

Jika Anda mandek, poskan pertanyaan terperinci yang menjelaskan bagaimana Anda mandek, di mana, dan apa yang Anda coba dulu. Tergantung sedikit pada bagaimana Anda menginstal PostgreSQL juga, karena ada beberapa "distribusi" berbeda dari PostgreSQL untuk OS X (sayangnya). Jadi, Anda harus memberikan info itu.

Craig Ringer
sumber
8

Berdiri di pundak makhluk-makhluk malang lainnya berjalan melalui kotoran ini, saya bisa mengikuti langkah-langkah ini untuk bangkit kembali dan berjalan setelah peningkatan ke Yosemite:

Dengan asumsi Anda telah menggunakan buatan rumah untuk menginstal dan meningkatkan Postgres, Anda dapat melakukan langkah-langkah berikut.

  1. Hentikan server Postgres saat ini:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Inisialisasi database 9,4 baru:

    initdb /usr/local/var/postgres9.4 -E utf8

  3. Instal postgres 9.3 (karena tidak ada lagi di mesin saya):

    brew install homebrew/versions/postgresql93

  4. Tambahkan direktori yang dihapus selama peningkatan Yosemite:

    mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep

  5. jalankan pg_upgrade:

    pg_upgrade -v -d /usr/local/var/postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.5/bin/ -B /usr/local/Cellar/postgresql/9.4.0/bin/

  6. Pindahkan data baru ke tempatnya:

    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
  7. Mulai kembali Postgres:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  8. Periksa /usr/local/var/postgres/server.logdetailnya dan pastikan server baru dimulai dengan benar.

  9. Akhirnya, instal ulang pustaka terkait?

    pip install --upgrade psycopg2
    gem uninstall pg
    gem install pg
Josh
sumber
1
pg_upgrade -v -d / usr / local / var / postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.*/bin/ -B / usr / local / Cellar /postgresql/9.4.*/bin/ # Versi minor mungkin berbeda.
Aaron McMillin
1
Terima kasih untuk ini. Saya tidak sengaja menjalankan brew cleanupsebelum memigrasi data dan yang menyebabkan postgres9.3 dihapus. Ini membantu. :)
markquezada
5

Sepertinya solusinya telah dimasukkan ke dalam Homebrew sekarang:

$ brew info postgresql
...
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database
....
Steven Shaw
sumber
1

Ini berhasil untuk saya.

https://gist.github.com/dideler/60c9ce184198666e5ab4

Singkat dan langsung ke inti nya. Jujur saya tidak bertujuan untuk memahami nyali PostgreSQL, saya ingin menyelesaikan pekerjaan.

dimitarvp
sumber
1
Ini menggunakan alat pg_upgradecluster Ubuntu yang bisa jauh lebih lambat daripada alat pg_upgrade PostgreSQL dan tentu saja hanya tersedia di Ubuntu.
alfonx
@alfonx Tidak benar. Saya memilikinya di Debian saya jessie. Memiliki 10+ DB dan jumlah ~ 400MB data basis data dikonversi dalam sekejap mata. Kemudian lagi, saya menggunakan Debian virtual pada SSD.
dimitarvp
Biarkan saya memperbaiki sendiri: pg_upgradecluster adalah bagian dari "infrastruktur Debian PostgreSQL", jadi hanya tersedia di distro berbasis Debian. Tentang kecepatan pg_upgrade menawarkan opsi "--link", yang menautkan tidak menyalin data jika memungkinkan: postgresql.org/docs/9.4/static/pgupgrade.html
alfonx
1
Mungkin kita bertujuan untuk hasil yang berbeda. Setelah upgrade perangkat lunak distro-lebar saya berakhir dengan 2 versi PostgreSQL dan data proyek saya yang digunakan terjebak pada versi yang lebih lama (9.3). Jadi saya hanya memburu tautan di atas (dalam jawaban saya) dan memutakhirkannya, menyingkirkan "cluster" lama dan versi PG yang lebih lama.
dimitarvp
Saya mencoba memutakhirkan dari 9.4 ke 11 dengan pg_upgradecluster 9.4 maintetapi saya mendapatkan kesalahan. Kesalahan: specified cluster does not exist... Saya kira, saya harus menginstal postgresql-9.4 lagi terlebih dahulu dengan panduan ini: wiki.postgresql.org/wiki/Apt#Quickstart
rubo77
1

Di Windows saya terus menghadapi pesan kesalahan yang berbeda saat mencoba menggunakan pg_upgrade.

Menghemat banyak waktu bagi saya untuk hanya:

  1. Cadangkan DB
  2. Copot semua salinan PostgreSQL
  3. Instal 9.5
  4. Pulihkan DB
Andrew
sumber
Lakukan ini selama 9,5 hingga 9,6 dan bekerja dengan sempurna juga. Bagus untuk dapat melakukan upgrade tepat yang mudah juga, daripada "terbaru". Saya menggunakan Big SQL untuk mendapatkan installer yang benar ( openscg.com/bigsql/postgresql/installers.jsp ).
The Coder
0

Solusi saya adalah melakukan kombinasi dari dua sumber ini:

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

dan

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

The kedua satu membantu lebih maka yang pertama. Juga untuk tidak, jangan ikuti langkah-langkah karena ada beberapa yang tidak perlu. Juga, jika Anda tidak dapat membuat cadangan data melalui konsol postgres, Anda dapat menggunakan pendekatan alternatif, dan mencadangkannya dengan pgAdmin 3 atau program lain, seperti yang saya lakukan dalam kasus saya.

Juga, tautan: https://help.ubuntu.com/stable/serverguide/postgresql.html Membantu mengatur kata sandi terenkripsi dan mengatur md5 untuk mengautentikasi pengguna postgres.

Setelah semua selesai, untuk memeriksa serverversi postgres yang berjalan di terminal:

sudo -u postgres psql postgres

Setelah memasukkan kata sandi jalankan di terminal postgres:

SHOW SERVER_VERSION;

Ini akan menampilkan sesuatu seperti:

 server_version 
----------------
 9.4.5

Untuk mengatur dan memulai postgres saya telah menggunakan perintah:

> sudo bash # root
> su postgres # postgres

> /etc/init.d/postgresql start
> /etc/init.d/postgresql stop

Dan kemudian untuk mengembalikan database dari file:

> psql -f /home/ubuntu_username/Backup_93.sql postgres

Atau jika tidak berhasil coba yang ini:

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

Dan jika Anda menggunakan Rails lakukan bundle exec rake db:migratesetelah menarik kode :)

Aleks
sumber
0

Untuk Mac via homebrew:

brew tap petere/postgresql,

brew install <formula>(misalnya: brew install petere/postgresql/postgresql-9.6)

Hapus Postgres lama:

brew unlink postgresql

brew link -f postgresql-9.6

Jika ada kesalahan, jangan lupa membaca dan mengikuti instruksi pembuatan bir di setiap langkah.

Lihat ini untuk lebih lanjut: https://github.com/petere/homebrew-postgresql

Terima kasih
sumber
0

Di Windows 10 sejak saya punya npm, saya menginstal paket rimraf. npm install rimraf -g

Cadangkan semua basis data Anda satu per satu menggunakan perintah pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

Kemudian Menginstal Versi PostgreSQL Terbaru yaitu 11.2 yang mendorong saya untuk menggunakan port 5433 kali ini.

Diikuti oleh Uninstall versi lama dari tambang PostgreSQL adalah 10. Perhatikan uninstaller dapat memberi peringatan tidak menghapus folder C:\PostgreSQL\10\data. Itu sebabnya kami memiliki langkah selanjutnya menggunakan rimraf untuk menghapus folder dan sub-folder secara permanen.

ubah menjadi direktori instal PostgreSQL dan jalankan perintah rimraf 10. 10 adalah nama direktori. Catatan, gunakan PostgreSQL versi lama Anda yaitu 9,5 atau sesuatu.

Sekarang tambahkan C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libke dalam variabel lingkungan Windows. Catatan versi terinstal saya yang baru adalah 11 jadi mengapa saya menggunakan pg11.

Navigasikan ke C:\PostgreSQL\data\pg11lalu buka postgresql.confedit port = 5433keport = 5432

Itu dia. Buka cmd dan ketikpsql -U postgres

Sekarang Anda dapat mengembalikan semua database yang didukung satu per satu menggunakan perintah pg_restore -U $username --dbname=$databasename $filename

JALAN UANG
sumber
0

Solusi saya untuk meningkatkan dari Postgresql 11 ke Postgresql 12 pada Windows 10 adalah sebagai berikut.

Sebagai komentar pertama Anda harus dapat menghentikan dan memulai layanan Postgresql. Anda dapat melakukan ini dengan perintah berikut di Powershell.

Mulailah: pg_ctl start -D “d:\postgresql\11\data”

Berhenti: pg_ctl stop -D “d:\postgresql\11\data”

Status: pg_ctl status -D “d:\postgresql\11\data”

Akan lebih bijaksana untuk membuat cadangan sebelum melakukan peningkatan. Instance Postgresql 11 harus dijalankan. Kemudian untuk menyalin global lakukan

pg_dumpall -U postgres -g -f d:\bakup\postgresql\11\globals.sql

dan kemudian untuk setiap basis data

pg_dump -U postgres -Fc <database> > d:\backup\postgresql\11\<database>.fc

atau

pg_dump -U postgres -Fc -d <database> -f d:\backup\postgresql\11\<database>.fc

Jika belum selesai instal Postgresql 12 (karena Postgresql 11 juga diinstal, ini akan ada di port 5433)

Kemudian untuk melakukan upgrade sebagai berikut:

1) Stop layanan Postgresql 11 (lihat di atas)

2) Edit postgresql.conffile d:\postgresql\12\datadan ubah port = 5433keport = 5432

3) Edit jalur lingkungan pengguna windows ( windows startlalu ketikenv ) untuk menunjuk ke Postgresql 12 bukan Postresql 11

4) Jalankan peningkatan dengan memasukkan perintah berikut.

pg_upgrade `
-b c:\program files\postgresql\11\bin `
-B c:\program files\postgresql\12\bin `
-d d:\postgresql\11\data `
-D d:\postgresql\12\data --username=postgres

(Dalam PowerShell, gunakan backtick (atau backquote) `untuk melanjutkan perintah di baris berikutnya)

5) dan akhirnya memulai layanan Postgresql 12 baru

pg_ctl start -D “d:\postgresql\12\data”

Bruno Vermeulen
sumber
-1

Saya pikir ini adalah tautan terbaik untuk solusi Anda untuk memperbarui postgres ke 9.6

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
zulqarnain nazir
sumber