web-dev-qa-db-ja.com

ストリーミングレプリケーションを使用したテーブルのテーブルスペースの変更

私はしばらくの間答えを探していましたが、信頼できる情報源を見つけることができません。

ストリーミングレプリケーションを使用してレプリケートする2つのpostgresサーバーがあります。ここで、いくつかのテーブルを別のテーブルスペース(別のボリュームにある)に移動する必要があります。これは簡単ですが、これがスレーブにどのように伝播するかわかりません。

スレーブは同じディスク設定であるため、同じ変更を行う必要がありますが、事前に(およびレプリケーションによって直接処理されるかどうか)スレーブにテーブルスペースを作成する必要があるかどうか、または必要かどうかはわかりませんスレーブで同じalterステートメントを実行します(ただし、読み取り専用であり、それが許可されているかどうかはわかりません)。

または、この変更後に、新しいベースバックアップを作成し、レプリケーションを最初からセットアップする必要がありますか?

2
jishi

少なくともバージョン9.4の場合、スタンバイに同一のファイルシステムパスが存在する必要があります。から http://www.postgresql.org/docs/9.4/static/warm-standby.html#STANDBY-PLANNING

"特に、テーブルスペースに関連付けられたパス名は変更されずに渡されるため、その機能を使用する場合は、プライマリサーバーとスタンバイサーバーの両方でテーブルスペースのマウントパスが同じである必要があります。 CREATE TABLESPACEはプライマリで実行されます。コマンドを実行する前に、それに必要な新しいマウントポイントをプライマリサーバーとすべてのスタンバイサーバーで作成する必要があります。 "

3
mvermaes