前提条件
- オフライン環境である(インターネットに接続できない)
- OS: RHEL8
- DB: PostgreSQL13(現在)
1. 事前準備
必要なファイルを取得
- 【インターネット接続環境:なし】
- PostgreSQL 15のRPMパッケージおよび依存パッケージをダウンロードします。
- ダウンロードしたファイルはオフライン環境に持ち込む必要があります。
- 【インターネット接続環境:あり】
- インターネット接続ができない場合、PostgreSQL 公式リポジトリ (https://yum.postgresql.org/) から、PostgreSQL 15のパッケージをダウンロードします。
- 以下のようなコマンドを使用してダウンロードします。
yumdownloader --resolve postgresql15-server postgresql15 postgresql15-contrib
- --resolve オプションを使うと依存パッケージも一緒にダウンロードできます。
バックアップ
- アップグレード前に、データベース全体のバックアップを取得することを強く推奨します。
# データベース全体のバックアップ pg_dumpall > /path/to/backup.sql
2. PostgreSQL 13の停止
アップグレードを行う前に、現在動作しているPostgreSQL 13を停止します。
sudo systemctl stop postgresql-13
3. PostgreSQL 15のインストール
オフライン環境にダウンロードしたパッケージを持ち込み、インストールします。
sudo yum localinstall postgresql15-server-15.x.x.rpm postgresql15-15.x.x.rpm postgresql15-contrib-15.x.x.rpm
4. PostgreSQL 15の初期設定
新しいPostgreSQL 15のデータベースクラスタを初期化します。
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
5. PostgreSQL 13のデータをPostgreSQL 15に移行
pg_upgradeツールを使用してPostgreSQL 13のデータをPostgreSQL 15に移行します。
sudo /usr/pgsql-15/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/13/data \
--new-datadir=/var/lib/pgsql/15/data \
--old-bindir=/usr/pgsql-13/bin \
--new-bindir=/usr/pgsql-15/bin
6. PostgreSQL 15の起動
データ移行が完了したら、PostgreSQL 15を起動します。
sudo systemctl start postgresql-15
- 起動時に問題がないか確認しましょう。
7. PostgreSQL 15の有効化
再起動時にもPostgreSQL 15が自動的に起動するように有効化します。
sudo systemctl enable postgresql-15
8. 古いバージョンのクリーンアップ(オプション)
移行が成功した場合、PostgreSQL 13の不要なデータやパッケージを削除することができます。
sudo yum remove postgresql13-server postgresql13
次に、古いデータディレクトリを削除します。
sudo rm -rf /var/lib/pgsql/13/data
9. PostgreSQLのバージョン確認
最終的に、正しくアップグレードされているかバージョンを確認します。
psql --version
以上