Windows環境でPostgreSQLのアップグレードを行う手順

PostgreSQL

このカテゴリーでは競馬予想プログラミング以外でも役に立つ、PostgreSQLの汎用的な技術について解説します。

PostgreSQLのアップグレードを行う手順(Ver.11→Ver.16)

多くのユーザーの皆様に支えられ、「PC-KEIBA Database」は日々進化しています。

その一方で、基幹システムである「PostgreSQL」もVer.11からVer.16へとアップグレードされています。このままVer.11を使い続けるのは、そろそろヤバそうだと判断し「PC-KEIBA Database」も最新版のPostgreSQLに対応することにしました。

この記事では、長年ご利用いただいているユーザー様向けに、Windows環境で既存のPostgreSQLを最新版にアップグレードする手順をご紹介します。

PostgreSQL 11のサービスを停止

コマンドプロンプトの起動

まず、PCモニターの下にあるWindowsの検索ボックスに「cmd」と入力します。※検索ボックスが無い場合は虫眼鏡のアイコンをクリック。

出てきた「コマンドプロンプト」で「管理者として実行」をクリックして起動します。

PostgreSQL 11のサービスを停止

コマンドプロンプトで以下のコマンドを実行し、「PostgreSQL 11」のサービスを停止します。

net stop postgresql-x64-11

PostgreSQL 16のインストール

PostgreSQL 16のインストール

新しいPostgreSQL 16をインストールします。詳しくは、以下のマニュアルを参考にしてください。

■PostgreSQL のインストール
https://pc-keiba.com/wp/postgresql-install-v16/

PostgreSQL 16のサービスを停止

コマンドプロンプトで以下のコマンドを実行し、「PostgreSQL 16」のサービスを停止します。

net stop postgresql-x64-16

設定ファイルの編集(1回目)

.confファイル(設定ファイル)を編集するには

.confファイルを編集するには、無料のテキストエディタ「サクラエディタ」が便利です。サクラエディタについては、以下のマニュアルを参考にしてください。

■サクラエディタのインストールと初期設定
https://pc-keiba.com/wp/sakura-editor-setting/

pg_hba.confの編集(PostgreSQL 11)

PostgreSQL 11の「pg_hba.conf」ファイルを編集し、データベースの認証を「md5」から「trust」に変更します。

■編集前(PostgreSQL 11)

■編集後(PostgreSQL 11)

■pg_hba.confの場所(PostgreSQL 11)
C:\Program Files\PostgreSQL\11\data

pg_hba.confの編集(PostgreSQL 16)

PostgreSQL 16の「pg_hba.conf」ファイルを編集し、データベースの認証を「scram-sha-256」から「trust」に変更します。

■編集前(PostgreSQL 16)

■編集後(PostgreSQL 16)

■pg_hba.confの場所(PostgreSQL 16)
C:\Program Files\PostgreSQL\16\data

pg_upgradeを実行する

tempフォルダを作る

コマンドプロンプトで以下のコマンドを実行し、tempフォルダを作ります。

if not exist "C:\temp" (mkdir C:\temp)

コマンドプロンプトで以下のコマンドを実行し、「Everyone」というグループにフルコントロール権限を付与します。

icacls C:\temp /grant Everyone:"(OI)(CI)(F)"

pg_upgradeを実行する

pg_upgrade」は8.4.x以降から現時点のPostgreSQLのメジャーリリース(スナップショット版やβリリースを含む)へのアップグレードをサポートします。

コマンドプロンプトで以下のコマンドを実行し、tempフォルダに移動します。

cd "C:\temp"

次のコマンドを実行して、移行を開始します。この処理には少し時間がかかります。

"C:\Program Files\PostgreSQL\16\bin\pg_upgrade.exe" -U postgres -d "C:/Program Files/PostgreSQL/11/data" -D "C:/Program Files/PostgreSQL/16/data" -b "C:/Program Files/PostgreSQL/11/bin" -B "C:/Program Files/PostgreSQL/16/bin"

パスは環境に合わせて適宜変更してください。
※当サイトのマニュアルに従って設定した場合は、変更の必要はありません。

pg_upgrade」が正常に完了すると、コマンドプロンプトに次のメッセージが表示されます。

設定ファイルの編集(2回目)

pg_hba.confの編集(PostgreSQL 16)

PostgreSQL 16の「pg_hba.conf」ファイルを編集し、データベースの認証を「trust」から「md5」に変更します。(元に戻す)

PostgreSQL 16のデフォルト認証方式は「scram-sha-256」ですが、PostgreSQL 11で使用されていた「md5」に設定を変更します。

■編集前(PostgreSQL 16)

■編集後(PostgreSQL 16)

postgresql.confの編集(PostgreSQL 11)

PostgreSQL 11のポート番号をデフォルト(5432)以外の値に変更します。.confファイルを編集するには、無料のテキストエディタ「サクラエディタ」が便利です。

■編集前(PostgreSQL 11)

■編集後(PostgreSQL 11)

■postgresql.confの場所
C:\Program Files\PostgreSQL\11\data

PostgreSQL 16の動作確認

PostgreSQL 16のサービスを開始

コマンドプロンプトで以下のコマンドを実行し、「PostgreSQL 16」のサービスを開始します。

net start postgresql-x64-16

PostgreSQLのバージョンを確認する

新しいバージョンでデータベースが正常に動作しているか確認します。SQLクエリを実行して、データが正しく移行されているか確認してください。

A5:SQL Mk-2」で以下のSQLを実行し、PostgreSQLのバージョンを確認します。

SELECT version()

検索結果が青く潰れて見づらかったので、Excelで開きました。「PostgreSQL 16」と表示されていればOKです。

アップデートが必要な機能拡張

update_extensions.sqlの実行

pg_upgrade」が完了した時に、コマンドプロンプトに表示されていた指示に従って作業を進めます。

pgAdmin」を起動して、左側のツリーにある「postgres」を選択します。

postgres」を選択した状態で、

  1. ツールバーの「ツール」をクリックします。
  2. メニューの「クエリツール」をクリックします。

すると、画面の右側に「クエリツール」が表示されます。接続先が「postgres/postgres@PostgreSQL 16」になっているか確認してください。

「C:\temp」にある「update_extensions.sql」をサクラエディタで開きます。そのSQLを、Ctrl+C(コピー)でクリップボードに保存します。

pgAdmin」に戻り、先ほどの「クエリツール」に、SQLをCtrl+V(貼り付け)します。

1行目は不要なので削除し、2行目だけ残してください。その後、メニューの「実行」ボタンをクリックします。このSQLは一瞬で終わります。

画面下に「成功しました」と表示されたらOKです。

PostgreSQL 11のアンインストール

delete_old_cluster.batの実行

「C:\temp」にある「delete_old_cluster.bat」を右クリックし、「管理者として実行」を選択します。これもすぐに終わります。

PostgreSQL 11のアンインストール

アンインストールの選択

Entire application」を選択して、「Next」ボタンをクリックします。

■メッセージ(原文)
Do you want to uninstall entire application or individual components?
●Entire application
Removes entire application and all files installed by the application
●Individual components
Removes individual components while leaving the rest of application installed

■メッセージ(和訳)
アプリケーション全体をアンインストールしますか、それとも個々のコンポーネントをアンインストールしますか?
●アプリケーション全体
アプリケーション全体とアプリケーションによってインストールされたすべてのファイルを削除します
●個々のコンポーネント
アプリケーションの残りの部分はインストールされたまま、個々のコンポーネントを削除します

アンインストールの完了

「OK」ボタンをクリックします。

警告メッセージが表示されますが「delete_old_cluster.bat」で対応済みなので無視してください。

■警告メッセージ(原文)
The data directory (C:\Program Files\PostgreSQL\11\data) has not been removed.

■警告メッセージ(和訳)
データディレクトリ (C:\Program Files\PostgreSQL\11\data) は削除されていません。

OKボタンをクリックします。

tempフォルダを削除する

コマンドプロンプトで作成した「C:\temp」をWindowsエクスプローラーでキーボードの「Delete」キーを押して削除します。

これで全て完了です。お疲れさまでした。