私は2つのサーバーを持っています:本番とテストです。どちらもPostgreSQLを実行しています。テストサーバーなどで多くの変更を加えましたが、ALTER table
これらCREATE INDEX
の変更をできるだけ簡単に本番サーバーに転送したいと考えています。このための最も便利な方法は何ですか?
質問する
1876 次
1 に答える
2
これを行うための最良の方法は次のとおりです。
- 各データベースでpgdumpを実行し、完全なダンプを作成します。
- Beyond Compareなどの比較ツールを使用して、2つのファイルを並べて実行し、マージを作成します。「変更」の変更とデータの変更のみがあると言った場合、2つはそれらを並べることができるように十分に類似している必要があります
- そのスクリプトをデプロイする新しいテストDBを作成し、psql(または使用するツール)を介してスクリプトを実行します。
- そのスクリプトが正常に実行された場合は、ターゲットDBを消去し、そのスクリプトに対してそのスクリプトを実行します。
- このプロセス中、少なくともDBを削除して再デプロイするときは、DBがバックアップするアプリケーションがオフラインになっていることを確認してください。
- 追加のデータ変更がある場合は、ターゲットDBをドロップする前にpgdumpすることをお勧めします。次に、ターゲットDBの最初のpgdumpと2番目のpgdumpの間に追加されたデータをマージして戻すことができます。
その他の注意事項:
- Pgdumpはコマンドラインツールであり、通常はssh(PuTTYなど)を介して実行されます。
- PostGreはオブジェクトの相互依存性を持つことができるため、ASCIIテキストSQLスクリプトを適切な作成順序で出力します。
- ダンプ全体と同じ大きさのSQLスクリプトを処理できるGUIプログラムがない場合、PostGreへのコマンドラインインターフェイスであるpsqlを使用すると、ファイルからスクリプトを実行できます。
- データと構造を別々にダンプするオプションがあります。
于 2012-04-06T12:25:17.353 に答える