web-dev-qa-db-ja.com

PostGISを使用したpg_upgradeを9.3.5から9.6に(Windows)

バージョン

  • 現在

    • PostgreSQL:9.3.5 64ビット
    • PostGIS:2.2.3
    • 注:2.2.3は9.3.5のStackBuilderで利用可能な最新版です。
  • アップグレード

    • PostgreSQL:9.6 64ビット
    • PostGIS:2.3.1
    • 注:2.3.1はStackBuilderで9.6用に使用できる唯一のバージョンですが、原則として OSGEOのインストーラーアーカイブ からアーカイブされた2.3.0にダウングレードできますが、一致するバージョンに到達できる限り同じです(結局のところ、何も解決しないことが判明しました)。

DBサイズ(サイズが1MB未満のテーブルは含まない):〜230GB。些細なことではありませんが、「ビッグデータ」でもありません。 _pg_dump_が記念碑的なPITAになるのに十分な大きさ。

問題

宛先(9.6)でPostGIS拡張機能を有効にして、適切なソースと宛先のビンとデータディレクトリで_pg_upgrade_を実行すると、次のようになります。

_New Cluster database "postgres" is not empty
Failure, exiting
_

これは、PostGIS拡張機能がインストールされるとテーブル(_spatial_ref_sys_)を作成するためです。拡張機能を削除せずにテーブルを削除することはできません。

宛先(9.6)でPostGISをdisableにすると、_pg_upgrade_は失敗します。宛先に適切なロード可能なライブラリがないためです(ヒント:PostGISで行うライブラリ)。

_pg_upgrade_は、古いインストールからライブラリを使用して関数を削除するように勧めています。これは私にとって災害のレシピのようです。

[〜#〜] update [〜#〜]:PostGIS関数の1つを削除しようとしました(ST_Locate_Between_Measures()-私はそれを使用したことがなく、可能性は低いです)。データ内のすべてのジオメトリ列にGistインデックスがあるため、PostGISを削除せずに行うことはできません。

私はPostGISのバージョンを2つのPostgreSQLバージョン間で適合させようとしましたが、それは明らかにできません-少なくともWindowsではできません。

私の推測

私の推測では、PostGIS対応の世界全体がPostgreSQLのバージョンを適度に単純な(つまり、_pg_dump_以外の)方法で更新できないことは、めったにありません。

PostGISの人々は、物事がどれだけ時間がかかるかを気にする傾向があります(Gistインデックスなしで300万ポリゴンで空間比較を実行して、長いクエリがどのように見えるかを確認してください)。そのため、誰かが急速にアップグレードします。

到達目標

すべての世界で最高の場合、私は_pg_upgrade --link_を使用します。これは、新しいバージョンに移行すると、古いクラスターは死んでしまうためです。

CODA/inb4

なぜ信頼性を必要とすることを実行するためにWindowsマシンを実行するのでしょうか?、私はあなたが尋ねるのを聞きます。

レガシーシステム(「私がここに来たときのようでした、役員」)と慣性(制度的および個人的)

私は今週末州連帯に行くので、私が行っている間、DBはpg_dump自体を実行する必要があります。

2
GT.

2つのオプションがあります

  1. hard upgrade を実行します
  2. 9.6 PostGIS 2.2用にビルドしてから、 soft upgrade を実行します

ハードアップグレードを行います。真剣に230 GBは持ち込むにはあまりありません。あなたは生きます。 (おもう)。

私の推測では、PostGIS対応の世界全体がPostgreSQLのバージョンを適度に単純な方法(つまり、pg_dump以外)で更新できないことは、めったにない可能性があります。

迅速かつ簡単にアップグレードを行う方法はありますが、サーバーには両方のバージョンのPostGISが必要です。その後、実行できます

ALTER EXTENSION postgis UPDATE TO "2.3.2devnext";
ALTER EXTENSION postgis_topology UPDATE TO "2.3.2devnext";

MS Windows PostgreSQL 9.3用にPostGIS 2.3をコンパイルした人を見つけることができないため、この方法はすぐには利用できませんが、 厳密に言えば可能です

Ubuntu/Debianを使用している場合、PostGISのプリコンパイルされたバージョンは既に PostgreSQLのすべてのバージョンのリポジトリにあります

1
Evan Carroll