LoginSignup
1
1

More than 1 year has passed since last update.

PostgreSQL9.5 to 11.12 pg_upgrade

Posted at

はじめに

古い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 作成

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1