ubuntu sunucusunda postgres 9.1’den 9.3’e yükseltme


27

Postgresql 9.1 ile çalışan üretim sunucum (ubuntu 13.10) var.

9.3'ün birkaç özelliğini kullanmak istiyorum, bu nedenle yükseltme yapmak istiyorum.

Birisi 9.1'den 9.3'e yükseltme konusunda bana yardımcı olabilir, böylece 30 dakikadan daha fazla bir kesinti olmaz. ya da öylesine?

Başlıca endişe veri kaybını veya dosya yedekliliğini önlemektir.


2
Postgres dokümanlar gerçekten çok iyi. google.co.uk/#q=postgres+upgrade+from+9.1+to+9.3
Philᵀᴹ

Ben kendi başına bir DBA değilim (tek Postgres kurulumuna ve hatta mysql koduna; LTS?
tink

Yanıtlar:


28

Temelde PostgreSQL'i farklı versiyonlardan (örneğin 9.1'den 9.3'e) yükseltmenin üç yolu vardır.

Pg_dump ile yükseltme

İlki, eğer mümkünse, daha yeni (9.3) sürümün ikilisini kullanarak eski (9.1) sürümden bir döküm yapmak ve onu yeni sürümden oluşturulan yeni bir kümeye geri yüklemek.

Bu yaklaşım, genellikle, en yavaş olanıdır, fakat aynı zamanda en uygulanabilir olanıdır. Daha hızlı yapmak için bir ipucu, eşzamanlılık kullanıyor. Paralel işlerle uğraşmak için şunları yapabilirsiniz:

$ pg_dump --format=directory --jobs=4 --no-synchronized-snapshots --file=/path/to/mydump mydatabase

Sahip olduğunuz her veritabanı için bunu yapmanız, --jobs=4değeri herhangi bir değere ayarlamanız gerekir (bazı değerleri 2'den çekirdek sayısına test edin ve hangisinin daha iyi hız verdiğini görün). Ayrıca, bu aşamada, hiç kimse veritabanına bağlanmamalıdır, herhangi bir değişiklik bozuk bir döküme neden olur (güvenli olmayan seçenek nedeniyle --no-synchronized-snapshots).

Ondan sonra, aşağıdakileri kullanarak yeni örneğe dökümü geri yükleyebilirsiniz pg_restore:

$ createdb <options> -T template0 mydatabase
$ pg_restore --exit-on-error --jobs=4 --dbname=mydatabase /path/to/mydump

Bundan sonra, ANALYZEveritabanında çalıştırmanız önerilir :

$ vacuumdb --analyze-only mydatabase

(zaman gelemez, sadece koşmak --analyzeayrıca VACUUMveritabanı ve görünürlük eşler güncelleme)

Pg_upgrade ile yükseltme

Başka bir seçenek, katkıyıpg_upgrade kullanmaktır . --linkYöntemi kullanarak PostgreSQL'i yükseltmek için gerçekten hızlı bir yol sunar.

Kullanmadan önce, tüm veri dizinini yedeklemeniz gerekir, çünkü --linkmodunda, bir şeyler ters giderse, her iki veriyi de kaybedebilirsiniz (yeni ve eski). Ayrıca tüm dokümanları ve özellikle alttaki notları okuyun (pg_upgrade için bazı sınırlamalar vardır).

GÜNCELLEME: Lütfen --checkkesin komutu çalıştırmadan önce bu seçeneği kullanın. Ayrıca, büyük veritabanları için bu komutu bir ekran oturumunda çalıştırmanız önerilir.

Tetikleme tabanlı bir çoğaltma aracı kullanarak yükseltme

Bir sürümü yükseltmek için başka bir seçenek, tetikleyiciye dayalı bir çoğaltma aracı kullanmaktır. Slony, Bucardo ve Londiste gibi.

Bu mümkün olan en az aksama süresini gerektiren seçenektir, ancak üzerinde çalışılması en zor olanı budur.

Bunu yapmak için, master'in geçerli sürümünüz (9.1) ve slave'in yeni sürüm (9.3) olduğu bir master-slave oluşturmanız gerekir. Daha sonra, ilk senkronizasyonu bekleyin (sistem hala üretimde), bundan sonra veritabanına bağlı olan herkesi kapatırsınız (kapalı kalma süresi burada başlar), kölenin yakalanmasını bekleyin, (kölenin) ustalaşmasını bekleyin ve tüm müşterileri / uygulamaları bu yeni sürüme yönlendir. Ve bitti.

Slony belgeleri, Slony kullanarak PostgreSQL'i yükseltmek için adım adım ilerletir .

Hangisini seçmek

Eh, her zaman olduğu gibi devam eder:

  • Dökümü + geri yükleme en güvenilir, ancak genellikle en yavaş olanıdır (paralellik olsa da oldukça iyi sonuçlar verebilir)
  • Pg_upgrade, az aksama süresi için en iyi seçeneklerden biridir (eğer kullanabilirseniz, kısıtlamaları görebilirsiniz), büyük veritabanları için bile, sadece birkaç dakika sürer.
  • Tetikleyici çoğaltma, hiç şüphesiz mümkün olan en az aksama süresini verendir (sıfıra yakın), ancak elde edilmesi gerçekten zordur ve yalnızca tecrübeli insanlar için (hem PostgreSQL hem de çoğaltma aracında) tavsiye ederim.

Umarım yardımcı olabilmişimdir. İyi şanslar.


Pg_upgrade ayrıca 8.4.17'den 9.3'e kadar çalışacak mı?
JohnMerlino

@JohnMerlino: evet, pg_upgrade 8.3 veya daha yüksek sürümlerden yükseltme yapabilir (8.3, 8.4, 9.0, 9.1, 9.2, ... sürümlerini içerir).
MatheusOl,

"Yeni sürümün (9.3) sürümünün ikili kodunu kullanmak" gerekli olmayabilir. En azından o kısmı kullanmadan çalışmasını sağladım.
Theicfire

@ theicfire aslında her iki versiyona da (eski ve yeni sürüm) bağlıdır, çalışmayabilir veya çalışmayabilir. Aslında, çoğu zaman işe yarayacak bazı hata mesajları haricinde çalışacaktır ... Resmi prosedür, daha yeni sürümün ikili kodunu kullanmaktır!
MatheusOl

Kullanılacak mümkün olabilir pg_dumpalldökümü tüm tek seferde veritabanlarını.
Matthieu

7

Postgres 9.1'den 9.3'e yükseltmek için aşağıdaki adımları izleyin:

  1. İlk önce ubuntu için aşağıdaki içerikleri içeren bir /etc/apt/sources.list.d/pgdg.list dosyası oluşturun:

    deb http://apt.postgresql.org/pub/repos/apt/ saucy-pgdg main 
  2. Aşağıdaki anahtarı çalıştıran anahtarı ekleyin:

     wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  3. Geliştirici araçlarını postgres ile yükleyin:

    sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-server-dev-9.3 pgadmin3
  4. Yüklememizi onaylamak için “sudo pg_lsclusters” yazacağız ve iki PostgreSQL sürümünün çalıştığını göreceğiz.

  5. Postgressql hizmetini durdur:

    sudo service postgresql stop
  6. 9.3 kurulumu tarafından oluşturulan varsayılan 9.3 kümesini silin.

    sudo pg_dropcluster --stop 9.3 main
  7. Mevcut 9.1 kümeden yeni bir 9.3 küme oluşturun.

    sudo pg_upgradecluster 9.1 main
  8. Yeni kümenin yüklendiğini ve PostgreSQL 9.3'ü çalıştırdığımızı doğrulayın.

    sudo service postgresql start 9.3
  9. Her şey çalışıyorsa 9.1 kümeye düşer.

    pg_dropcluster --stop 9.1 main

daha fazla bilgi için bu bağlantıya bakın


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.