Database Support Blog

Database Support Blog>EPASやPostgreSQLをメジャーバージョンアップする方法(pg_dumpall編)

  • PostgreSQL
  • EDB Postgres
2018.07.26

EPASやPostgreSQLをメジャーバージョンアップする方法(pg_dumpall編)

EPASやPostgreSQLをメジャーバージョンアップする方法(pg_dumpall編)

EnterpriseDB社やPostgreSQL Global Development Groupでは、製品のメンテナンス期間を提供開始日から5年間と定めています。

【EnterpriseDB社】EDB Supported Products and Platforms
【PostgreSQL Global Development Group】End Of Life (EOL) dates

この期間が終了した場合、新たなマイナーリリースは提供されなくなるため、弊社ではEND OF LIFE(EOL)までに最新のメジャーバージョンにアップグレードすることを推奨しています。

EDB Postgres Advanced Server(EPAS)/PostgreSQLをメジャーバージョンアップする一般的な方法には、 pg_dumpall コマンドを使用する方法と pg_upgrade コマンドを使用する方法があります。本記事では手順がシンプルで実績が多く、そして異なるサーバー間でメジャーバージョンアップする際にも採用できるpg_dumpallコマンドを使用する方法をご紹介します。


検証環境

2018年9月にEPAS/PostgreSQL 9.3がEOLを迎えます。そのため、今回は検証環境として、バージョンアップ元にEPAS9.3、バージョンアップ先にEPAS10を使用します。

## バージョンアップ元の環境
HOST:post1
PORT:59322
OS:Red Hat Enterprise Linux Server release 6.4 64bit
DB:EDB Postgres Advanced Server(EPAS) 9.3.22.47

## バージョンアップ先の環境
HOST:post2
PORT:51038
OS:Red Hat Enterprise Linux Server release 6.4 64bit
DB:EDB Postgres Advanced Server(EPAS) 10.3.8


手順1:最新バージョンのインストール

製品のバージョンアップを行うサーバーにEPAS/PostgreSQLの最新バージョンをインストールします。EPASのインストール手順やPostgreSQLのインストール手順については以下をご参考になさってください。

はじめてのEDB Postgres (製品概要・構築編)
ソースファイルからPostgreSQLをインストールする手順(前編)
ソースファイルからPostgreSQLをインストールする手順(後編)


手順2:pg_dumpallコマンドでバックアップを取得

pg_dumpallコマンドを使用してバージョンアップ元の環境のバックアップを取得します。現在起動中のバージョンのpg_dumpallコマンドを使用することもできますが、過去のバージョンに対して不具合の修正や改良が含まれている最新バージョンのpg_dumpallを使用することをおすすめします。

なお、pg_dumpall実行時にデータが新たに更新されることを防ぐため、pg_dumpallを実行前にデータベースクラスタのPORTを変更したりpg_hba.confを編集するなどしてバージョンアップ先の環境以外から接続できないようにしておくこともおすすめします。

 
 --バージョンアップ先のpost2で作業していることを確認
 $ hostname
 post2
 
 --EPAS10.3.8のpg_dumpallコマンドを使用してEPAS9.3.22.47のデータベースクラスタのバックアップを取得
 $ pg_dumpall --version
 pg_dumpall (EnterpriseDB) 10.3.8
 $ pg_dumpall -h post1 -p 59322 -U enterprisedb > epas93.dmp
 $
 


手順3:最新バージョンのデータベースクラスタにデータをロード

手順1で用意した最新バージョンのデータベースクラスタに手順2で取得したバックアップデータをロードします。

 
 --バージョンアップ先のpost2で作業していることを確認
 $ hostname
 post2
 
 --EPAS10.3.8のpsqlコマンドを使用してEPAS9.3.22.47のデータベースクラスタのバックアップデータをロード
 $ psql --version
 psql (EnterpriseDB) 10.3.8 
 $ psql -p 51038 -U enterprisedb -d edb -f ./epas93.dmp > upgrade.log
 $ 
 

なお、バックアップデータは、手順5の作業が完了したら削除していただいて構いません。


手順4:データロード時のログファイルを確認

手順3で作成されたデータロード時のログファイルを確認してエラーが発生していないか確認します。以下の結果からは「ERROR: role "enterprisedb" already exists」が確認できますが、EPASではインストール時にenterprisedbユーザーが作成されるため、このエラーは無視可能です。仮に、上記以外のエラーメッセージが発生している場合には、エラーメッセージに応じた対処を行なってください。

 
 --データロード時のログファイルを確認
 $ cat ./upgrade.log
 SET
 SET
 SET
 psql.bin:./epas93.dmp:14: ERROR:  role "enterprisedb" already exists
 ...(以降省略)
 


手順5:統計情報の取得

最新バージョンのデータベースクラスタにデータをロードした直後は、各オブジェクトの統計情報が取得されていない状態です。そのため、データロード直後に各オブジェクトの統計情報を取得してください。

 
 --全データベースの統計情報を取得
 $ vacuumdb --all --analyze-only
 vacuumdb: vacuuming database "edb"
 vacuumdb: vacuuming database "postgres"
 vacuumdb: vacuuming database "template1"
 


【補足】リリースノートの確認と検証のお願い

EPASやPostgreSQLをメジャーバージョンアップすることで非互換の機能やパラメーターなどが導入されるため、アプリケーションのプログラム変更が必要になる可能性があります。ユーザーに影響する変更はすべて以下のリリースノートに記載されていますので、関連するバージョンそれぞれのリリースノートをご確認の上、実際にアプリケーションが正常に動作するか検証も実施ください。

【EDB Postgres Advanced Server(EPAS)】EDB Postgres Advanced Server 10.0 Release Notes
【PostgreSQL】付録E リリースノート

なお、EPAS/PostgreSQL10にアップグレードされる方は、 PostgreSQL10へのアップグレード前に押さえておきたい3つの注意点 もご参考になさってください。


まとめ

今回はpg_dumpallを使用してEPAS/PostgreSQLをメジャーバージョンアップする方法をご紹介しました。EPAS9.3.22.47と10.3.8を使用して検証しましたが、EPASやPostgreSQLのその他バージョンにも適用できる内容ですので、本記事がEPAS/PostgreSQLをメジャーバージョンアップする際の一助になれば幸いです。


執筆者情報

家島 拓也

サービス事業部 サポートセンター

2007年にアシストに入社して以来、ORACLE製品やPostgreSQL・EDB Postgres製品のサポートに従事してきました。このブログではサポート対応で得た知識を元に、お客様がお困りになることが多い問題や各製品の新機能に関する検証結果などを紹介します。


データベースのサポートならアシスト

関連している記事

  • EDB Postgres
2018.05.23

SQL*Plusと互換性のある「EDB*Plus」を使ってみよう

SQL*Plusと互換性のある「EDB*Plus」の簡単な使用方法およびSQL*Plusとは異なる点についてご紹介します。

  • PostgreSQL
  • EDB Postgres
2017.12.20

PostgreSQL10へのアップグレード前に押さえておきたい3つの注意点

PostgreSQL10へのアップグレード前に押さえておきたい3つの注意点をご紹介します。

  • EDB Postgres
2017.07.31

SQL*Loader互換のEDB*Loaderを使ってみよう

EDB*LoaderではSQL*Loaderの基本機能は移植されていますので、殆ど制御ファイルを書き換えずにご利用いただけます。

アシストサポートセンターのご紹介 Oracle Database研修

ページの先頭へ戻る