3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pg_upgrade を使ったDBクラスタ移行手順 on Windows

Last updated at Posted at 2016-08-17

pg_upgrade を使ったDBクラスタ移行手順 on Windows

まずはpg_upgradeのドキュメントに目を通す。

以下は、Windows8.1 上で、PostgreSQL9.4 から 9.5.4 に pg_upgrade した時の手順。

1.旧バージョンのpostgresサービスを停止

2. 新バージョンのバイナリーをインストール

※EnterpriseDBの x86-32版 を使用した。当然、旧バージョンのもx86-32版。

3. 新バージョンのpostgresサービスを停止

4. pg_hba.confの編集

新旧DBクラスタのpg_hba.confの上の方に以下の行を入れる。

pg_hba.conf
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust

5. pg_upgradeを実行

管理者としてコマンドプロンプトを起動し、Everyone書き込み可能なディレクトリに cd する。
※ProgramFilesやWindows配下とかじゃなければ、ほぼどこでも大丈夫なはず。参考
※pg_upgradeはカレントディレクトリに大量の一時ファイルをはき出すので、空のディレクトリを新規作成した方が良いかも。

以下のコマンドを実行する。※パスは適宜変更のこと。
注: -UオプションでDBユーザーを明示すること。
補足: CPUコア数によっては --jobs オプションを付けておくと時間短縮になる(とのこと)。

管理者コマンドプロンプト
> "C:\Program Files (x86)\PostgreSQL\9.5\bin\pg_upgrade"
 -U postgres
 --old-bindir="C:\Program Files (x86)\PostgreSQL\9.4\bin"
 --new-bindir="C:\Program Files (x86)\PostgreSQL\9.5\bin"
 --old-datadir="F:\DB\Database\9.4\data"
 --new-datadir="F:\DB\Database\9.5\data"

Windowsファイアウォールの警告が表示されたら、もちろん【許可する】。

補足: postgresユーザーとしてシェルを起動?

ドキュメントに以下のように書いてあるが、EnterpriseDB版インストーラーでインストールした場合にはpostgresアカウントというものは作られないため、以下は実行不可能。
※その代わりに上の手順では -U オプションでpostgresユーザーを明示的に指定している。

Windowsユーザの場合、管理者アカウントでログオンしなければなりません。また、 postgresユーザとしてシェルを起動し、適切なパスを設定してください。

RUNAS /USER:postgres "CMD.EXE"
SET PATH=%PATH%;C:\Program Files\PostgreSQL\9.0\bin;
  • 昔のPostgreSQLはインストール時にpostgresアカウントが自動作成されていたが、最近のは作られなくなっていて、postgresサービスはNetwork Serviceアカウントで動作するようになっている。

6. 確認&後片付け

upgrateに成功したら、以下のように表示される。

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    analyze_new_cluster.bat

Running this script will delete the old cluster's data files:
    delete_old_cluster.bat

pg_hba.conf を元に戻す。

新DBサービスを起動し接続。正しくデータが移行されていることを確認。

postgresql.conf(など)の設定も移行。
※廃止されている設定項目があったりすると起動しないこともあるので、設定移行後はサービス再起動&ログファイル確認を。

DBのログファイルのrotation設定も忘れずに変更。

統計データは移行されていないようなので、pg_upgradeが作ってくれた一括analyze用バッチファイルを起動。※当然、それなりに時間がかかる…

> analyze_new_cluster.bat

不要であれば、旧DBクラスタを削除。削除用のbatファイルが作成されているのでそれを使うと簡単。(使ったことないけど…)

> delete_old_cluster.bat

不要であれば、カレントディレクトリにはき出されたログファイル・バッチファイルを削除。

--

pg_dumpall を使用したDBクラスタ移行手順メモ on Windows

公式ドキュメント: PostgreSQLクラスタのアップグレード処理

移行元

> pg_dumpall.exe -U postgres > dump.sql

※-U でユーザー名を明示しないと動かない。-Uなしの場合「バ」だけ出力して止まる@pg9.5

移行先

> psql -U postgres -d postgres -f dump.sql

以上。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?