Fedoraで2つ以上のPostgreSQLバージョンをアップグレードする

Fedoraで2つ以上のPostgreSQLバージョンをアップグレードする

最近dnf。走ろうとしたらpg_upgrade成功しました。

Cannot upgrade because the database in /var/lib/pgsql/data is of
       version 11 but it should be 12

したがって、アップグレードは1つのバージョンにのみ適用されます。

複数のバージョンをアップグレードするには?

答え1

アイデアは次のとおりです。

  1. PGD​​Gリポジトリから古いPostgreSQLサーバーをインストールします。
  2. すべてのデータをファイルにダンプするために使用します。
  3. 現在のサーバーを返します(Fedoraリポジトリから)。
  4. ダンプファイルからデータをインポートします。

これはすべてrootとして行われます。

PostgreSQLリポジトリをインストールします。

dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-34-x86_64/pgdg-fedora-repo-latest.noarch.rpm

FedoraのPostgreSQL(PGDGと競合)を削除し、PGDGリポジトリから以前のバージョンをインストールします。

dnf remove postgresql postgresql-server
dnf install postgresql11 postgresql11-server

古いデータを現在のインストールディレクトリにコピーします。

rsync -av /var/lib/pgsql/data/ /var/lib/pgsql/11/data/

古いサーバーを実行します。

systemctl start postgresql-11.service

すべてのデータをファイルにダンプします。

su - postgres -c "pg_dumpall -p 5432 > /tmp/dump_file.sql"

上記の操作を元に戻します(サーバーの停止、PGDGパッケージの終了、Fedoraパッケージの再インストール)。

systemctl stop postgresql-11.service
dnf remove postgresql11 postgresql11-server postgresql11-libs postgresql13 postgresql13-server postgresql13-libs
dnf install postgresql postgresql-server pg_top postgresql-contrib

おそらく必要はありませんpg_topおよび/またはpostgresql-contrib。返品、

/var/lib/pgsql/data/pg_hba.confアップデートが必要な場合(おそらくtrustローカル接続の方法を設定しますか?)

古いデータディレクトリを解放し、現在のPostgreSQLディレクトリを再初期化します。

mv /var/lib/pgsql/data/ /var/lib/pgsql/data-old
mkdir /var/lib/pgsql/data
chown -R postgres:postgres /var/lib/pgsql/data/
postgresql-setup initdb

現在のサーバー(Fedoraリポジトリにあるサーバー)を有効にして起動します。

systemctl enable postgresql
systemctl start postgresql

データのインポート:

su - postgres -c "pgsql -p 5432 < /tmp/dump_file.sql"

psqlEDIT 2023-12-11:新しいバージョンのFedoraには代わりにコマンドがあるようです。pgsql

結果に満足したら、このプロセスで生成されたデータを削除できます。

  • /var/lib/pgsql/11- PGDGからインストールされた古いサーバーのデータディレクトリ。
  • /var/lib/pgsql/data-old- このすべての混乱以前の元のデータ。

通常、PGDGリポジトリを使用していない場合は削除することもできます。

dnf remove pgdg-fedora-repo

これはおそらくあまり不器用なアプローチですが、私にとっては効果的です。また、再構築作業であるため、マイナーなエラーhistoryが発生する可能性がありますが、内容は問題ありません。

関連情報