バージョン
現在:
アップグレード
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つのオプションがあります
ハードアップグレードを行います。真剣に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のすべてのバージョンのリポジトリにあります 。