こんにちは
楽楽明細開発課のsts-250rrです。
先日Postgres11の入った検証環境に、現在運用中の環境のデータを移行して検証したいという機会がありました。
何点か意外とあるんじゃないかなというポイントがありましたので、Try&Errorの内容をまとめておこうと思います。
※本記事内でのコマンドはDockerコンテナで作業をイメージしたコマンドを実施しています。
- やったこと
- Try&Error:データベースクラスタをバージョンアップする
- Try:pg_upgradeはどう使ってやればよいのか
- ERROR:存在しないPostgres9.4
- Try:pg_upgradeで11にバージョンアップ
- ERROR:postgresユーザで実行しなければならない
- まとめ
やったこと
ポイント・イン・タイム・リカバリ (PITR)の方法でデータベースクラスタ(/var/lib/pgsql/data)とアーカイブログ(/var/lib/pgsql/data/pg_xlog/)を使って、検証環境にリストアして復元をしようとしました。
ところですっかり忘れていたのですが、現在運用中のデータベースはPostgres9.4なのです。
PostgreSQLはメジャーバージョン間ではデータベースクラスタの互換性がないため、Postgres11のサーバを起動しようとした時にバージョン不一致でエラーになります。
[root@12d698375565 ~]# service postgresql-11 start
An old version of the database format was found.
You need to upgrade the data format before using PostgreSQL.
See (Your System's documentation directory)/postgresql-11.5/README.rpm-dist for more information.
[root@12d698375565 ~]#
ここからTry&Errorのスタートです。
続きを読む