web-dev-qa-db-ja.com

表領域を失った後のPostgreSQLサーバーの整合性

'ssd'と 'hdd'の2つのテーブルスペースを持つPostgreSQLサーバーを実行しています。 1つ目は、迅速にクエリを実行する必要のあるデータベースを含み、冗長性のない単一のSSDに配置されています(RAIDなし)。これらのデータベースをディスク障害で失ってもかまいません。対照的に、「hdd」テーブルスペースはRAIDアレイ上にあり、ディスク障害に耐える必要のある重要なデータベースが含まれています。

質問:SSDに障害が発生し、PostgreSQLが「ssd」テーブルスペースを完全に失った場合(または破損/不安定になった場合)、「hdd」のデータベースは正常に機能し続けますか?または、サーバー全体で問題が発生しますか?

1
kontextify

私はこれをよりよく説明することはできません マニュアルよりも

警告

メインのPostgreSQLデータディレクトリの外にある場合でも、テーブルスペースはデータベースクラスタの不可欠な部分であり、データファイルの自律的なコレクションとして扱うことはできません。これらはメインデータディレクトリに含まれるメタデータに依存しているため、別のデータベースクラスタに接続したり、個別にバックアップしたりすることはできません。同様に、テーブルスペースを失うと(ファイルの削除、ディスク障害など)、データベースクラスターが読み取れなくなったり、起動できなくなったりする可能性があります。 RAMディスクのような一時ファイルシステムにテーブルスペースを配置すると、クラスター全体の信頼性が低下します。

または このブログ投稿

表領域を破棄して、データベースシステムの残りの部分を機能させ続けることはできません。

最も重要なことは、PostgreSQLのクラッシュセーフティを提供する先行書き込みログ(WAL)がpg_xlogに保存され、すべてのテーブルスペースで共有されることです。 PostgreSQLは、クラッシュまたはシャットダウン後にエラーなしでこのログを順番に再生できることを期待しています。ログが再生されるまで、データベースは安全でない状態にあると見なされ、接続は拒否されます