最近dnf
。走ろうとしたらpg_upgrade
成功しました。
Cannot upgrade because the database in /var/lib/pgsql/data is of
version 11 but it should be 12
したがって、アップグレードは1つのバージョンにのみ適用されます。
複数のバージョンをアップグレードするには?
答え1
アイデアは次のとおりです。
- PGDGリポジトリから古いPostgreSQLサーバーをインストールします。
- すべてのデータをファイルにダンプするために使用します。
- 現在のサーバーを返します(Fedoraリポジトリから)。
- ダンプファイルからデータをインポートします。
これはすべて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"
psql
EDIT 2023-12-11:新しいバージョンのFedoraには代わりにコマンドがあるようです。。pgsql
結果に満足したら、このプロセスで生成されたデータを削除できます。
/var/lib/pgsql/11
- PGDGからインストールされた古いサーバーのデータディレクトリ。/var/lib/pgsql/data-old
- このすべての混乱以前の元のデータ。
通常、PGDGリポジトリを使用していない場合は削除することもできます。
dnf remove pgdg-fedora-repo
これはおそらくあまり不器用なアプローチですが、私にとっては効果的です。また、再構築作業であるため、マイナーなエラーhistory
が発生する可能性がありますが、内容は問題ありません。