PostgreSQL'i veri kaybetmeden 9.6 sürümünden 10.1 sürümüne nasıl yükseltebilirim?


207

Ruby on Rails uygulamam için (Mac OS X 10.9'da) PostgreSQL veritabanını kullanıyorum.

PostgreSQL veritabanının nasıl yükseltileceğine dair ayrıntılı talimatlar var mı?

Korkarım veritabanındaki verileri yok edeceğim ya da bozacağım.


8
Her durumda yedekleme yapın.
Patrick Oscity

Yanıtlar:


401

Postgres'i kurmak ve yükseltmek için ev yapımı demleme kullandığınızı varsayarsak, aşağıdaki adımları gerçekleştirebilirsiniz.

  1. Geçerli Postgres sunucusunu durdur:

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

  2. Yeni bir 10.1 veritabanı başlatın:

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

  3. çalıştırın pg_upgrade (not: Değişiklik bin sürümünü eğer aşağıda değil de bir başka konum yükseltme) :

    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 ayrıntılı dahili günlük kaydını etkinleştirmek için

    -d eski veritabanı kümesi yapılandırma dizini

    -D yeni veritabanı kümesi yapılandırma dizini

    -b eski PostgreSQL yürütülebilir dizini

    -B yeni PostgreSQL yürütülebilir dizini

  4. Yeni verileri yerine taşıyın:

    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
  5. Postgres'i yeniden başlat:

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

  6. /usr/local/var/postgres/server.logAyrıntıları kontrol edin ve yeni sunucunun doğru şekilde başlatıldığından emin olun.

  7. Son olarak, ray pggemini yeniden kurun

    gem uninstall pg
    gem install pg

Hayal kırıklıklarını en aza indirmek için yukarıdaki adımlarda tam olarak ne yaptığınızı anlamak için PostgreSQL belgelerini okumak için biraz zaman ayırmanızı öneririm .


8
Ben veritabanı başlatmak için aşağıdaki komutu kullanmaktan initdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
nefret ediyorum

Rehberinizi adım adım takip edin. Ve her şey işe yaradı! Çok teşekkür ederim.
Trantor Liu

3
delete_old_cluster.shKomuta dikkat edin . İlk önce /usr/local/postgres9.3 dizinlerini el ile sildim, daha sonra bu komutu çalıştırdım ve tüm / usr / local / var / postgres dizinini kaybettim (zaman makinesinden geri yükleyebildim)
peter_v

1
Bundler kullanıyorsanız gem uninstall pg, gem'i kullanarak kaldırmalısınız, ancak paketleyicinin doğru sürümü Gemfile.lock'tan yeniden çalıştırarak yeniden çalıştırmasına izin vermelisiniz bundle.
danielricecodes

1
Minör güncelleme: brewşimdi de kullanma seçeneği vardır brew services stop postgresqlve brew services start postgresqlbunun yerine doğrudan çağıran launchctl unloadve launchctl load.
florish

59

Yukarıdaki tüm cevaplara rağmen, 5 sentim burada.

Herhangi bir işletim sisteminde ve herhangi bir postgres sürümünde çalışır.

  • Çalışan postgres örneğini durdurun;
  • Yeni sürümü yükleyin ve başlatın; Yeni sürüme de bağlanıp bağlanamayacağınızı kontrol edin;
  • Eski versiyon en değiştirme postgresql.conf> - portdan 5432için5433 ;
  • Eski sürüm postgres örneğini başlatın;
  • Bir terminal açın ve cdyeni sürüme geçinbin klasörüne;
  • Çalıştırmak pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • Örneği çalıştıran eski postgres durdur;

4
Teşekkürler Christian, bu kesinlikle harika ve kolay bir çözüm, başarıyla 9.3 - 9.5 gibi böyle gitti
fnicollet

3
Windows 2012 sunucusunda 9.1'den 9.5'e yükseltmek için güzel çalıştı.
Rolf

4
Bu solüsyonun bir sorun bazı PostgreS yapılandırma dosyaları değiştirilmiş (örn. Olsaydı yani postgresql.confya pg_hba.conf) el ile yeni kurulumda bu değişiklikleri çoğaltmak gerekir. Eğer kullanırsanız Bunun yerine, pg_upgradecluster, yapılandırma dosyaları yeni kümeye kopyalanan: manpages.ubuntu.com/manpages/precise/man8/...
Alphaaa

1
Komutu başlattıktan hemen sonra bir parola istemi alacağınızı , ancak her biri Enter ile onaylayan 2 parola girmeniz gerektiğini unutmayın. Veya alırsınızpg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55

2
Teknik olarak bu, el kitabında belirtildiği gibi, Current releases of the dump programs can read data from any server version back to 7.0.
7.0'daki

56

İşte Ubuntu kullanıcıları için çözüm

Önce postgresql'i durdurmak zorundayız

sudo /etc/init.d/postgresql stop

/Etc/apt/sources.list.d/pgdg.list adlı yeni bir dosya oluşturun ve aşağıdaki satırı ekleyin

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

Aşağıdaki komutları izleyin

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

Şimdi her şeyimiz var, sadece aşağıdaki gibi yükseltmeniz gerekiyor

sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main

Bu kadar. Çoğunlukla yükseltilen küme 5433 numaralı bağlantı noktasında çalışır. Aşağıdaki komutla denetleyin

sudo pg_lsclusters

2
"Çoğunlukla yükseltilmiş küme 5433 numaralı bağlantı noktasında çalışır" dediğiniz ikinci son cümle büyük olasılıkla "9.3 küme 5433 numaralı bağlantı noktasında çalışır ve böylece gerekirse geri dönebilirsiniz" demeniz gerekir.
Andrew Thaddeus Martin

3
Not: Ubuntu 14.04 için ütopic-pgdb yerine "trusty-pgdb" kullanın
Johnny

3
Bu olmadığını Not DEĞİL bir yerinde yükseltme yapmak. bu nedenle 1 TB'lık bir birimdeki 700 GB'lık DB'm için tamamen işe yaramaz.
Sahte Ad

16

Güncelleme : Bu işlem 9.5'ten en az 11.5'e yükseltmek için aynıdır; basitçe versiyonlarını yansıtacak şekilde komutları değiştirmek 9.6ve 10nerede 9.6olduğunu eski sürümü ve 10bir yeni versiyonu. "Eski" ve "yeni" dizinleri de buna göre ayarladığınızdan emin olun.


PostgreSQL 9.5'i Ubuntu'da 9.6'ya yükselttim ve bulgularımı paylaşacağımı düşündüm, çünkü farkında olması gereken OS / pakete özgü birkaç nüans var.

( Verileri manuel olarak döküp geri yüklemek istemedim , bu yüzden buradaki diğer cevapların bazıları geçerli değildi.)

Kısacası, işlem PostgreSQL'in yeni sürümünü eski sürümle birlikte (ör. 9.5 ve 9.6) kurmak ve sonra https://www.postgresql.org/ adresindepg_upgrade (bazı) ayrıntılı olarak açıklanan ikili dosyayı çalıştırmaktan ibarettir. docs / 9.6 / static / pgupgrade.html .

Tek "zor" yönü, pg_upgradebir bağımsız değişken için doğru değeri iletememenin veya cdbir komut çalıştırılmadan önce doğru kullanıcı olarak veya doğru konuma giriş yapılmamasının şifreli hata mesajlarına yol açabilmesidir.

Ubuntu'da (ve muhtemelen Debian'da) "resmi" repo kullanıyor olmanız koşuluyla, deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main ve varsayılan dosya sistemi yollarını veya çalışma zamanı seçeneklerini değiştirmemeniz koşuluyla, aşağıdaki prosedürün işi yapması gerekir.

Yeni sürümü yükleyin ( 9.6açıkça belirttiğimizi unutmayın ):

sudo apt install postgresql-9.6

Yükleme başarılı olduğunda, her iki sürüm de yan yana, ancak farklı bağlantı noktalarında çalışır. Kurulum çıktısı altta bundan bahsediyor, ancak gözden kaçırmak kolaydır:

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

Her iki sunucu örneğini de durdur (bu her ikisini de aynı anda durduracaktır):

sudo systemctl stop postgresql

Özel PostgreSQL sistemi kullanıcısına geçiş yapın:

su postgres

Ana dizinine gidin (bunu yapmamak hatalara neden olur):

cd ~

pg_upgrade aşağıdaki girişleri gerektirir (bunu pg_upgrade --helpsöyler):

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)

Görselleştirmeyi kolaylaştırmak için bu girdiler "uzun adlar" ile belirtilebilir:

  -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

--new-optionsAnahtarı da geçmeliyiz , çünkü bunun yapılmaması aşağıdakilere neden olur:

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"?

Bunun nedeni, varsayılan bağlantı seçeneklerinin yanlış anahtar seçeneklerinin kullanılmasına neden olan bu anahtarın yokluğunda uygulanması ve dolayısıyla yuva hatasının oluşmasıdır.

Yeni PostgreSQL sürümünden pg_upgradekomutu yürütün :

/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

Özel sistem kullanıcı hesabının oturumunu kapatma:

exit

Yükseltme şimdi tamamlandı, ancak yeni örnek bağlantı noktasına bağlanacak 5433(standart varsayılan 5432), bu nedenle yeni örneği "kesme" işleminden önce test etmeye çalışırsanız bunu aklınızda bulundurun.

Sunucuyu normal olarak başlatın (yine, hem eski hem de yeni örnekleri başlatacaktır):

systemctl start postgresql

Yeni sürümü varsayılan yapmak istiyorsanız, etkili yapılandırma dosyasını düzenlemeniz gerekir, örn., /etc/postgresql/9.6/main/postgresql.confBağlantı noktasının şu şekilde tanımlandığından emin olun:

port = 5432

Bunu yaparsanız, ya yaşlı uyarlamanın port numarasını değiştirmek 5433bu olacaktır (sadece eski sürümü kaldırın (hizmetler başlamadan önce) aynı anda veya değil gerçek veritabanı içeriği kaldırmak; Kullanmak gerekir apt --purge remove postgresql-9.5bunun olmasını ):

apt remove postgresql-9.5

Yukarıdaki komut tüm örnekleri durduracağından, yeni örneği son bir kez şu şekilde başlatmanız gerekir:

systemctl start postgresql

Son bir nokta olarak, pg_upgradeiyi tavsiyeleri dikkate almayı unutmayın :

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

1
Mac Yosemite, PostgreSQL 9.2 benim için -> 9.5: sudo su postgresdeğil ~ o kadar işe yaramadı içinde özel / / tmp pg_upgrade çalışan, pg_upgrade önce güvene hem tesisin pg_hba.conf tüm YÖNTEMİ değiştirmek sudo mkdir /foobarile chmod 777 /foobarve orada koştu. Sonunda pg_upgrade komutu:/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
Ben başarıyla 9.5 için 11.5 yükseltme başardı ubuntu postgres uygun depolar eklemek zorunda kaldı. ve sonra şu adımları izleyin: tecadmin.net/install-postgresql-server-on-ubuntu
shakee93

14

Homebrew ve homebrew servislerini kullanıyorsanız, muhtemelen şunları yapabilirsiniz:

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

Bence gelişmiş postgres özelliklerini kullanıyorsanız bu tamamen işe yaramayabilir, ama benim için mükemmel çalıştı.


1
MacOS Mojave 10.14.2 için mükemmel çalıştı - Teşekkürler!
8bithero

13

Kullanım kılavuzu derinlemesine bu konuyu kapsar. Yapabilirsin:

  • pg_upgradeYerinde; veya

  • pg_dumpve pg_restore.

Şüpheniz varsa, çöplüklerle yapın. Eski veri dizinini silmeyin, bir şeyler ters gittiğinde saklayın / bir hata yapın; bu şekilde, değişmeyen 9.3 kurulumunuza geri dönebilirsiniz.

Ayrıntılar için kılavuza bakınız.

Sıkıştıysanız, nasıl sıkıştığınızı, nerede ve ilk önce ne denediğinizi açıklayan ayrıntılı bir soru gönderin. OS X için PostgreSQL'in birkaç farklı "dağıtımı" olduğundan (ne yazık ki) PostgreSQL'i nasıl kurduğunuza bağlı olarak biraz. Yani bu bilgiyi sağlamanız gerekir.


8

Bu muck ile dolaşan diğer fakir yaratıkların omuzlarında dururken, Yosemite'ye yükseltme yaptıktan sonra geri dönmek ve koşmak için şu adımları takip edebildim:

Postgres'i kurmak ve yükseltmek için ev yapımı demleme kullandığınızı varsayarsak, aşağıdaki adımları gerçekleştirebilirsiniz.

  1. Geçerli Postgres sunucusunu durdur:

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

  2. Yeni bir 9.4 veritabanı başlatın:

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

  3. Postgres 9.3'ü yükleyin (makinemde artık mevcut olmadığından):

    brew install homebrew/versions/postgresql93

  4. Yosemite yükseltmesi sırasında kaldırılan dizinleri ekleyin:

    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. çalıştırmak 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. Yeni verileri yerine taşıyın:

    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
  7. Postgres'i yeniden başlat:

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

  8. /usr/local/var/postgres/server.logAyrıntıları kontrol edin ve yeni sunucunun doğru şekilde başlatıldığından emin olun.

  9. Son olarak, ilgili kütüphaneler yeniden kurulsun mu?

    pip install --upgrade psycopg2
    gem uninstall pg
    gem install pg

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/ # Küçük sürümler farklı olabilir.
Aaron McMillin

1
Bunun için teşekkürler. brew cleanupVerileri taşımadan önce yanlışlıkla koştum ve bu postgres9.3'ün kaldırılmasına neden oldu. Bu yardımcı oldu. :)
markquezada

5

Çözüm şimdi Homebrew'a pişirilmiş gibi görünüyor:

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

1

Bu benim için yaptı.

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

Kısa ve öz. Dürüst olmak gerekirse PostgreSQL'in cesaretlerini anlamayı hedeflemiyorum, işlerin yapılmasını istiyorum.


1
Bu, Ubuntu'nun PostgreSQL'in pg_upgrade aracından çok daha yavaş olabilen pg_upgradecluster aracını kullanır ve elbette yalnızca Ubuntu'da kullanılabilir.
alfonx

@alfonx Doğru değil. Debian'ımda var jessie. 10+ DB vardı ve ~ 400MB bir miktar veritabanı verileri göz açıp kapayana kadar dönüştürüldü. Sonra tekrar, bir SSD üzerinde sanal bir Debian kullanıyorum.
dimitarvp

Kendimi düzeltmeme izin verin: pg_upgradecluster "Debian PostgreSQL altyapısının" bir parçasıdır, bu yüzden sadece Debian tabanlı dağıtımlarda kullanılabilir. Hız hakkında pg_upgrade, mümkün olan yerlerde verileri kopyalamamayı bağlayan "--link" seçeneğini sunar: postgresql.org/docs/9.4/static/pgupgrade.html
alfonx

1
Belki de farklı sonuçlar hedefliyoruz. Dağıtılmış bir yazılım güncellemesinden sonra PostgreSQL'in 2 sürümü ile sonuçlandım ve projelerimin kullandığı veriler eski sürüme (9.3) takılı kaldı. Bu yüzden sadece yukarıdaki cevabı avladım (cevabımda) ve yükselttim, eski "kümeden" ve eski PG versiyonundan kurtuldum.
dimitarvp

9.4'ten 11'e yükseltmeye çalıştım pg_upgradecluster 9.4 mainama hatayı alıyorum Hata: specified cluster does not exist... Sanırım, bu kılavuzla önce postgresql-9.4'ü tekrar yüklemeliyim: wiki.postgresql.org/wiki/Apt#Quickstart
rubo77

1

On Windows'un ben kullanıma çalışırken farklı hatalar mesajlar bakan tuttupg_upgrade .

Benim için çok zaman kazandım:

  1. Yedek DB
  2. PostgreSQL'in tüm kopyalarını kaldırın
  3. 9.5 yükle
  4. DB'yi geri yükle

Bunu 9.5 ila 9.6 için yaptım ve mükemmel çalıştı. "En son" yerine kolay tam yükseltme yapabilmek iyi. Doğru yükleyiciyi almak için Big SQL kullandım ( openscg.com/bigsql/postgresql/installers.jsp ).
Coder

0

Benim çözümüm şu iki kaynağın bir kombinasyonunu yapmaktı:

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

ve

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

İkinci bir daha yardım etti sonra birincisini. Ayrıca, bazılarının gerekli olmadığı gibi adımları takip etmeyin. Ayrıca, verileri postgres konsolu aracılığıyla yedekleyemiyorsanız, alternatif yaklaşımı kullanabilir ve pgAdmin 3 veya benim durumumda yaptığım gibi başka bir programla yedekleyebilirsiniz.

Ayrıca, bağlantı: https://help.ubuntu.com/stable/serverguide/postgresql.html Şifrelenmiş parolanın ayarlanmasına ve postgres kullanıcısının kimliğini doğrulamak için md5'in ayarlanmasına yardımcı oldu.

Her şey tamamlandıktan sonra server, terminalde çalıştırılan postgres sürümünü kontrol etmek için :

sudo -u postgres psql postgres

Postgres terminalinde şifre çalıştırdıktan sonra:

SHOW SERVER_VERSION;

Bunun gibi bir çıktı verecektir:

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

Postgres ayarlamak ve başlatmak için komut kullandım:

> sudo bash # root
> su postgres # postgres

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

Ve sonra bir dosyadan veritabanını geri yüklemek için:

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

Veya işe yaramazsa bunu deneyin:

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

Ve Rails kullanıyorsanız bundle exec rake db:migratekodu çektikten sonra yapın :)


0

Homebrew üzerinden Mac için:

brew tap petere/postgresql,

brew install <formula>(örneğin brew install petere/postgresql/postgresql-9.6)

Eski Postgres'leri kaldır:

brew unlink postgresql

brew link -f postgresql-9.6

Herhangi bir hata oluşursa, her adımda demleme talimatını okumayı ve takip etmeyi unutmayın.

Daha fazla bilgi için buna göz atın: https://github.com/petere/homebrew-postgresql


0

Windows 10'da npm aldığımdan beri rimraf paketini kurdum. npm install rimraf -g

Komut kullanarak tüm veritabanlarınızı tek tek yedekleyin pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

Daha sonra, bu sefer 5433 numaralı bağlantı noktasını kullanmamı isteyen Son PostgreSQL Sürümü yani 11.2'yi yükledi.

Ardından PostgreSQL mayının eski sürümlerinin kaldırılması 10'du. Kaldırıcı, klasörü silmeme uyarısı verebilir C:\PostgreSQL\10\data. Bu yüzden klasörü ve alt klasörlerini kalıcı olarak silmek için rimraf kullanarak bir sonraki adıma sahibiz.

PostgreSQL kurulum dizinine geçin ve komutu çalıştırın rimraf 10. 10 bir dizin adıdır. Not PostgreSQL'in eski versiyonunuzu yani 9.5 veya daha fazlasını kullanın.

Şimdi ekle C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\lib Windows çevresel değişkenlerine . Yeni yüklü sürümümün 11 olduğunu ve bu yüzden neden kullandığımı unutmayın pg11.

Git ve C:\PostgreSQL\data\pg11ardından açpostgresql.conf düzenlemek port = 5433içinport = 5432

Bu kadar. Açık cmd ve tippsql -U postgres

Artık komutu kullanarak tüm yedeklenen veritabanlarınızı tek tek geri yükleyebilirsiniz pg_restore -U $username --dbname=$databasename $filename


0

Windows 10'da Postgresql 11'den Postgresql 12'ye yükseltme çözümüm aşağıdadır.

İlk bir açıklama olarak, Postgresql hizmetini durdurabilmeniz ve başlatabilmeniz gerekir. Bunu Powershell'de aşağıdaki komutlarla yapabilirsiniz.

Başlat: pg_ctl start -D “d:\postgresql\11\data”

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

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

Yükseltmeyi yapmadan önce bir yedekleme yapmak akıllıca olacaktır. Postgresql 11 örneği çalışıyor olmalıdır. Sonra küreselleri kopyalamak için

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

ve sonra her veritabanı için

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

veya

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

Henüz yapılmadıysa Postgresql 12'yi kurun (Postgresql 11 de kurulduğundan bu 5433 numaralı bağlantı noktasında olacaktır)

Ardından yükseltme işlemini aşağıdaki gibi yapın:

1) Postgresql 11 hizmetini durdurun (yukarıya bakın)

2) Düzenleme postgresql.confdosya d:\postgresql\12\datave değişim port = 5433içinport = 5432

3) Windows kullanıcı ortamı yolunu düzenleyin ( windows startardından yazınenv Postresql 11 yerine Postgresql 12'yi işaret edecek ) düzenleyin

4) Aşağıdaki komutu girerek yükseltmeyi çalıştırın.

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

(Powershell'de, sonraki satırdaki komutu sürdürmek için backtick (veya backquote) `kullanın.)

5) ve son olarak yeni Postgresql 12 hizmetini başlatın

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


-1

Bence bu postgres'i 9.6'ya güncelleme çözümünüz için en iyi bağlantı

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.