はじめに
古いPostgreSQLのアップグレードを検証したかった。
今回、以下で検証する。
OS:CentOS 6.7
旧:PostgreSQL 9.5
新:PostgreSQL 11.2
アップグレード方法:pg_upgradeコマンドを使用する
PostgreSQL 9.5はインストール済みとする
※インストール方法は以下を参照
https://qiita.com/xyz666/items/7dd59821659b130b0393
PostgreSQL 11.2のインストール
1.必要ファイルダウンロード
以下の3つ
・libs
・sql
・Server
wget https://yum.postgresql.org/11/redhat/rhel-6-x86_64/postgresql11-libs-11.12-1PGDG.rhel6.x86_64.rpm
wget https://yum.postgresql.org/11/redhat/rhel-6-x86_64/postgresql11-11.12-1PGDG.rhel6.x86_64.rpm
wget https://yum.postgresql.org/11/redhat/rhel-6-x86_64/postgresql11-server-11.12-1PGDG.rhel6.x86_64.rpm
2.インストール
rpm -Uvh postgresql11-libs-11.12-1PGDG.rhel6.x86_64.rpm
rpm -Uvh postgresql11-11.12-1PGDG.rhel6.x86_64.rpm
rpm -Uvh postgresql11-server-11.12-1PGDG.rhel6.x86_64.rpm
3.初期化と起動確認
・初期化
service postgresql-11 initdb
・起動
service postgresql-11 start
・終了
service postgresql-11 stop
旧DBのアップグレード
・3-1 両バージョンのDBが停止していることを確認する
service postgresql-9.5 status
service postgresql-11 status
・3-2 rootでは実行できないのでpostgreユーザにスイッチする
su - postgres
・3-3 pg_upgrade 実行する
【参考】コマンドの書式確認
pg_upgrade -b oldbindir -B newbindir -d olddatadir -D newdatadir
oldbindir :旧バージョンのディレクトリ
newbindir :新バージョンのディレクトリ
olddatadir:旧バージョンのデータディレクトリ
newdatadir:新バージョンのデータディレクトリ
/usr/pgsql-11/bin/pg_upgrade -b /usr/pgsql-9.5/bin -B /usr/pgsql-11/bin -d /var/lib/pgsql/9.5/data -D /var/lib/pgsql/11/data
↓実行例
-bash-4.1$ /usr/pgsql-11/bin/pg_upgrade -b /usr/pgsql-9.5/bin -B /usr/pgsql-11/bin -d /var/lib/pgsql/9.5/data -D /var/lib/pgsql/11/data
整合性チェックを実行しています。
Checking cluster versions ok
Checking database user is the install user ok
~省略~
このポイントの後に pg_upgrade が失敗した場合、続行の前に再度 initdb を行って、
新しいクラスターする必要があります。
アップグレードを実行しています。
Analyzing all rows in the new cluster ok
Freezing all rows in the new cluster ok
~省略~
Creating script to delete old cluster ok
Checking for hash indexes ok
アップグレードが完了しました
オプティマイザーの統計は、pg_upgrade では転送されません。そのため
新サーバーを起動した後、./analyze_new_cluster.sh を動かすことを検討してください 。
このスクリプトを実行すると、旧クラスターのデータファイル ./delete_old_cluster.shが削除されます:
4.動作確認
4-1. postgresql-11.12の起動
service postgresql-11 start
4-2.DB接続
psql
4-3.データ確認
select * from テーブル名;
注意点
設定ファイルの移行は未確認。
特に以下の2点は検証が必要
postgresql.conf
pg_hba.conf
以上
参考サイト
・公式
https://www.postgresql.jp/document/9.5/html/pgupgrade.html
・【PostgreSQL 9.4 → 11】pg_upgradeでデータベースクラスタをバージョンアップ
https://tech-blog.rakus.co.jp/entry/20190829/postgresql
履歴
2021/8/1 作成