非常に大きな(約320 GB)PostGISデータベースをserver1(PostgreSQL 9.1、PostGIS 1.5)からserver2(PostgreSQL 9.3、PostGIS 2.1)に移動してアップグレードする必要があります。
アップグレードプロセスは 十分に文書化されています です。問題はserver1に十分なスペースがないため、ファイルをそこにダンプし、それをチェックサムし、それをserver2にコピーして合計を確認することです。私は試した:
nc
を使用して、ダンプをserver1からserver2にパイプします。sshfs
を使用してダンプファイルを書き込む。どちらの場合も、ダンプファイルが破損しているようです。 pg_restore
別の場所で壊れ、次のようなエラーが発生しました:
pg_restore: [compress_io] could not uncompress data: incorrect data check
誰かがこの移動とアップグレードを完了するためのより良い方法を提案できますか?
UPDATE:NFSを試しました(そしてSSHFSにもう一度試してみました)。 これらのリモートファイルシステムがこれだけのデータを確実に転送できないことは明らかです。結果のSQLファイルから明らかにブロックが欠落しているため、インポート中に次のような構文エラーが発生します。
ERROR: invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
次のように、新しい9.3サーバーから9.1データベースをダンプすることをお勧めします。
pg_dump -h remoteserver -U remoteuser remotedbname -Fc -f my_old_server_backup.dump
9.3の使用をお勧めしますpg_dump
なので pg_dump
は常に下位互換性がありますが、上位互換性はありません。つまり、新しいpg_dump
は、古いユーティリティが認識していない、新しいサーバーが必要とする構文の変更を処理します。
必ずpg_hba.conf
およびlisten_addresses
in postgresql.conf
は、リモートで接続して適切にダンプできるように設定されています。
ダンプと復元を1つのステップで実行したい場合は、次のように実行することもできます。
pg_dump -h remotehost -U remoteuser remotedbname | psql -U localuser localdbname
お役に立てば幸いです。 =)