3

あるpostgresqlサーバーから別のサーバーにデータベースをすばやく「クローン」する方法を探しています。

仮定...

  • HostAで実行されているpostgresqlサーバーがあり、2つのデータベースにサービスを提供しています
  • HostAに2つのデバイスがマウントされており、各デバイスはデータベースの1つのデータを格納します(つまり、1つのデータベース=>1つのテーブルスペース=>1つのデバイス)
  • 注意深い方法で「安全な」時点のスナップショットを取得できます
  • 使用されている2つのデバイスのいずれかのクローンを一貫して安全に作成できます(両方のデータベースが読み取りのみを受信すると想定することもできます)
  • 関係するホストはCentOS5.4です

HostBで2番目のpostgresqlサーバーをホストし、複製されたデバイスの1つをマウントして、対応するデータベースを「ポップ」して存在させることは可能ですか?(MySQLでMyISAMテーブルファイルをコピーするときのようなものです)。

これが可能である場合、メカニズムは何ですか(つまり、どのDDLを調べたり、コマンドをpgしたりする必要がありますか)。

個々のデータベースを互いに分離して移動できることが重要です。しかし、これが不可能な場合、同様のアプローチがサーバーレベルで機能しますか(同じpostgresqlインストールのホストにdatadirをコピーしてサーバーのクローンを作成して再生成しようとします)?

4

1 に答える 1

2

データベース間で共有されるファイルが多数あるため、簡単ではありません。つまり、同じインストール内の各データベースはこれに依存しています。

サーバーレベルまたはクラスターレベルで実行できますが、個々のデータベースレベルでは実行できません。データディレクトリ全体とすべての外部テーブルスペースをコピー/クローン作成してください。クローンをアトミックに作成できる限り(同じファイルシステム上で、またはファイルシステム間でアトミッククローンを実行できるシステムを使用して)、hostAでデータベースを停止する必要はありません。

于 2010-01-22T18:10:52.950 に答える