ステップバイステップガイド
-
バックアップを作成する 。データベースが更新されていないことを確認してください。
pg_dumpall > outputfile
-
Postgres10をインストール 。このページの指示に従ってください:https://www.postgresql.org/download/linux/ubuntu/
次に、
sudo apt-get install postgresql-10
を実行します。 。新しいバージョンが以前のバージョンと並べてインストールされます。 -
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
すでにクラスター
main
があります 10の場合(これはパッケージのインストール時にデフォルトで作成されるため)。これは、最初にクラスターを作成しなくても、新しいインストールがすぐに機能するようにするために行われますが、もちろん、9.6/main
をアップグレードしようとすると衝突します。10/main
の場合 も存在します。推奨される手順は、pg_dropcluster
を使用して10個のクラスターを削除することです。 次に、pg_upgradecluster
でアップグレードします 。 -
10クラスターを停止してドロップします:
sudo pg_dropcluster 10 main --stop
-
データベースへの書き込みを行うすべてのプロセスとサービスを停止します。データベースを停止します:
sudo systemctl stop postgresql
-
9.6クラスターをアップグレードします:
sudo pg_upgradecluster -m upgrade 9.6 main
-
PostgreSQLを再起動します
sudo systemctl start postgresql
-
pg_lsclusters
を実行します 。これで、9.6クラスターが「ダウン」し、10クラスターが5432
でオンラインになっているはずです。 :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
-
まず、すべてが正常に機能することを確認します。 その後、9.6クラスターを削除します。
sudo pg_dropcluster 9.6 main --stop
pg_upgradecluster
に関する注意事項
このガイドは、9.5から10.1にアップグレードする場合に問題なく機能します。古いバージョンからアップグレードする場合は、-m upgrade
を省略することを検討してください。 ステップ6:
sudo pg_upgradecluster 9.6 main
非常に大きなクラスターがある場合は、pg_upgradecluster
を使用できます。 --link
を使用 オプションで、アップグレードがインプレースになります。ただし、これは危険です。障害が発生すると、クラスターが失われる可能性があります。 -m upgrade
のように、必要がない場合はこのオプションを使用しないでください。 すでに十分に高速です。
に基づく:
- ドキュメント:PostgreSQLクラスターのアップグレード
- 要点#1:delameko / upgrade-postgres-9.5-to-9.6.md
- 要点#2:johanndt / upgrade-postgres-9.3-to-9.5.md
-
pg_upgradecluster
を中断またはキャンセルするとどうなりますか ? - pg_upgradeclusterのUbuntuマンページ
更新
このガイドは、9.6から11、10から11、および10から13へのアップグレードに適しています。