Database Support Blog

  • PostgreSQL
  • EDB
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をメジャーバージョンアップする際の一助になれば幸いです。



■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
  • PostgreSQL
2024.01.16

EDBがもたらすデータベースの新たな価値 ~ EDB社Field CTO Ajit Gadge氏来日、セミナー講演レポート ~

EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。

  • PostgreSQL
  • EDB
2023.12.20

PostgreSQLのSQLチューニングを体験してみよう!

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載最終回となる9回目の記事では、「PostgreSQL SQLチューニング実践」のワークショップ主管である 田中 健一朗 にインタビューしました。

  • PostgreSQL
  • EDB
2023.10.30

データベースの健康診断! ~ PostgreSQL DB稼働分析体験 ~

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載8回目となる今回の記事では、PostgreSQL DB稼働分析ワークショップの主管である保田 公貴にインタービューしました。

ページの先頭へ戻る