2017-07-21 6 views
1

私は同じバージョンのpostgres(9.4)を持つ2つのサーバを持っています。 私は高速なクローンデータベース(バックアップと復元)をしたいと思います。 私は "データベースからデータベースを作成するxxx"は、データベースのコピーを作成する最も速い方法だと理解しています。postgres、外部サーバのテンプレートからデータベースを作成

1つのサーバーから別のサーバーに複製するにはどうすればよいですか? この作業にdblinkを使用していますか?

私は、pg_dumpとpg_restore(psql)を使用する解決策を知っていますが、それは私にとっては遅すぎると思います。 たとえば、5GBのデータベースが約12分(pg_restoreに-jオプションを付けて)復元され、2分ほどでバックアップされました。

別の方法として、いくつかのpostgresファイル(/ var/lib/postgresql/*)を別のサーバーにコピーして、そこにpostgresを実行できますか?このファイルを見つけるには?

答えて

1

異なるデータベースクラスタ(同じマシンまたは別のマシン)のデータベースをテンプレートとして使用して新しいデータベースを作成することはできません。

あるクラスタから別のクラスタにデータベースをコピーする唯一の方法は、pg_dump/pg_restoreです。

物理コピーは最も速い方法ですが、個々のファイルまたはデータベースをあるデータベースクラスタから別のデータベースクラスタにコピーするだけではできません。

データベースクラスタ全体をコピーしても構わない場合は、ターゲットデータベースクラスタを停止および削除するオプションがあります。pg_basebackup -X streamを実行してソースデータベースクラスタの物理バックアップを作成し、必要に応じて構成を編集し、新しいコピー。

pg_basebackupがあなたのために遅すぎる場合は、pg_start_backuppg_stop_backupで手”でオンラインバックアップ“を実行し、あなたが持っている最速の技術との中間にファイルをコピーすることができます。

ソースデータベースクラスタを停止することに問題がなければ、回復を混乱させる必要はなく、さらに高速になります。

0

テンプレートをコピーすることはできません、Laurenz氏は言います。その理由は、pg_databaseなどのポストグルの共​​有カタログに統合する必要があり、トランザクションログ(pg_clog)のようなデータベース全体のリソースを共有するためです。すべてのタプルがVACUUM FREEZEで凍結した場合は、実際に別のマシンからテンプレートをコピーできます理論的には

。しかし、コピーされたテンプレートを統合するために手動でセットアップを行う必要があります。バグが発生しやすく、危険です。あなたはpostgres内部についての非常に良い知識を必要とします。

これは本当に価値がありません。

関連する問題