Upgrade PostgreSQL z 9.6 do 10.0 na Ubuntu 16.10
Moja baza danych ma ponad 600 GB, a mój obecny wolumin to tylko 1 TB, więc prawdopodobnie ogranicza moje opcje.
Moje pliki konfiguracyjne są tutaj:
/etc/postgresql/9.6/main
Moja baza danych jest tutaj:
/mnt/1TB/postgresql/9.6/main
Edytuj - Ten przewodnik zadziałał. Jedynym dodatkiem, który musiałem zrobić, było ręczne pobranie libicu55 i zainstalowanie go, i musiałem przyznać uprawnienia postgres 1777 dla mojego folderu /tmp/. Zapisywałem również folder danych na inny dysk, więc musiałem użyć polecenia:
pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10
Https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44
2 answers
Przewodnik krok po kroku
-
Zrób kopię zapasową . Upewnij się, że Twoja baza danych nie jest aktualizowana.
pg_dumpall > outputfile
-
Zainstaluj Postgres 10 . Postępuj zgodnie z instrukcjami na tej stronie: https://www.postgresql.org/download/linux/ubuntu/
Następnie uruchom
sudo apt-get install postgresql-10
. Nowsza wersja zostanie zainstalowana obok wcześniejszej wersji. -
Run
pg_lsclusters
:Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log 10 main 5433 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
Istnieje już Gromada
main
dla 10 (ponieważ jest to tworzone domyślnie podczas instalacji pakietu). Odbywa się to tak, że świeża instalacja działa po wyjęciu z pudełka bez konieczności tworzenia klastra, ale oczywiście koliduje podczas próby uaktualnienia9.6/main
, gdy10/main
również istnieje. Zalecaną procedurą jest usunięcie klastra 10 za pomocąpg_dropcluster
, a następnie uaktualnienie za pomocąpg_upgradecluster
. -
Zatrzymaj 10 klastra i upuść go:
sudo pg_dropcluster 10 main --stop
-
Zatrzymaj wszystkie procesy i usługi zapisujące się do bazy danych. Stop baza danych:
sudo systemctl stop postgresql
-
Upgrade klastra 9.6:
sudo pg_upgradecluster -m upgrade 9.6 main
-
Run
pg_lsclusters
. Klaster 9.6 powinien być teraz "w dół" , a klaster 10 powinien być online pod adresem5432
:Ver Cluster Port Status Owner Data directory Log file 9.6 main 5433 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log 10 main 5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
-
Najpierw sprawdź, czy wszystko działa dobrze. następnie usuń klaster 9.6:
sudo pg_dropcluster 9.6 main --stop
Kilka uwag o pg_upgradecluster
Ten poradnik działa dobrze dla aktualizacji z 9.5 do 10.1. Podczas aktualizacji ze starszej wersji należy rozważyć pominięcie -m upgrade
NA kroku # 6:
sudo pg_upgradecluster 9.6 main
Jeśli masz naprawdę duży klaster, możesz użyć pg_upgradecluster
z opcją --link
, aby aktualizacja była na miejscu. Jest to jednak niebezpieczne - możesz stracić klaster w przypadku awarii. Po prostu nie używaj tej opcji, jeśli nie jest to konieczne, ponieważ -m upgrade
jest już wystarczająco szybki.
Na podstawie:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 20:30:10
Prawie wyszło z pudełka. Jestem na 17.10. Podczas gdy ty Możesz umieścić to w .plik deb, to nie zadziała - Postgres aktualizuje tylko wydania inne niż LTS, jeśli zepsują wydanie LTS. Więc włóż pikantność do tej deb i możesz iść.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-19 04:51:22