web-dev-qa-db-ja.com

複数のpostgresqlサーバーがインストールされていると思いますが、「余分な」サーバーを識別して削除するにはどうすればよいですか?

どういうわけか、私のマシンにpostgresqlのインストールがいくつかあるようです。これが間違いなのか、それともUbuntuが奇妙な理由でディレクトリを複製して他の場所に保管しているのかはわかりません。

/etcにpostgresqlディレクトリがあります

/usr/libに1つ

/optに1つ

この時点で私はきちんと混乱しています。

余分なものを削除する方法を教えてください。
どれが余分なものですか?
また、私のRails env内の 'pg' gemが正しいposgresql dbサーバーを指していることを確認する必要があります。

私の問題についてのどんな考えも巨大になるでしょう。

6
Guided33

人々がインスタレーションによって何を意味するかについて、いくつかの混乱があるかもしれません。

  • /etc/postgresql/フォルダーは、クラスターの構成フォルダーです。
  • /var/lib/postgresql/フォルダーはデータ用です。
  • 各バージョンのプログラムバイナリは、通常/usr/lib/postgresql/の個別のフォルダーにあります。

私は/opt/postgresqlについて本当に知りません。ただし、/optは「オプションの」バイナリ用であるため、/usr/lib/postgresql/ではなく、ここにインストールされている可能性があります。

簡単に言うと、複数の場所にファイルがある1つのインストールだけの可能性があります。

インストールした内容を確認する場合は、次の方法が役立ちます。

postgresqlの構造:

少しわかりやすくするために、postgresは次のように構成されています。

  • バージョンは、文字通り、どのバージョンのpostgresqlプログラムバイナリを参照します。インストールされている各バージョンには、そのバージョンの下にクラスターがインストールされている場合があります。そうでない場合、データや実行中のサーバーが関連付けられていないため、そのバージョンは実質的に休止状態です。

  • 各バージョンの下には、多数のクラスターがあります。クラスターは、実行中のprostgresサーバー(プロセス)と考えることができます。各クラスターには、クライアントが接続するための独自のポート/ソケットファイルが必要です。各クラスターは、単一のバージョンによって管理されます。

  • 各クラスター内には、いくつかのデータベースがあります。クライアントが接続すると、接続先のDBが選択されます。新しいセッションを開かずに、接続先のDBを変更するように要求できますが、接続できるのは1つだけです。

何をインストールしましたか?

インストールされているバージョンを確認するには、dpkgおよびaptを参照してください。 aptおよびdpkgを使用してバージョンをアンインストールできるはずですが、各バージョンの下にあるクラスターを確認する前に、これを行わないように十分注意してください。

使用しているクラスターを確認するには、pg_lsclustersコマンドを使用します。これを呼び出すと、次のような結果になります。

Version Cluster   Port Status Owner      Data directory                     Log file
9.1     main      5432 online <unknown>  /var/lib/postgres/data/9.1/main    /var/log/postgresql/postgresql-9.1-main.log

「ステータス」列に注意してください。クラスターがオンラインでない場合、それはディスク上のデータであり、何も実行していません。オンラインの場合は実行中です。

どのようにクラスターをマージしますか?

pg_dumpallコマンドを使用して1つのクラスターから別のクラスターにコンテンツをコピーし、バックアップを生成し、psqlを使用して、保持するクラスターにインポートできます。開始する前にすべてのバックアップを保持する価値があります。

使用されなくなったクラスターをどのように削除しますか?

  • pg_lsclustersを使用してクラスターに関する詳細を取得し、それらのクラスターのデータディレクトリとログファイルをメモします。

  • pg_ctlcluster <version> <cluster> stopを使用してクラスターを停止します。

  • データフォルダーとオプションでログファイルを削除します。

  • 最後に、データと構成を削除します。データフォルダは/var/lib/postgres/data/<version>/<cluster>である必要がありますが、pg_lsclustersの出力を確認してこれを確認してください。クラスターの構成:すべてのクラスターに独自の構成フォルダーがあります
    /etc/postgresql/<version>/<cluser>/

それらを要求したことがないのに、なぜ複数のクラスターを取得したのですか?

通常、新しいクラスターを取得するには、クラスターの作成を明示的に要求する必要があります。これの唯一の例外は、クラスターをアップグレードする場合、新しいクラスターを効果的に作成し、古いクラスターをそのまま残します。

21
Philip Couling

Dpkg -Sを使用して、特定のディレクトリがどのパッケージに属するかを確認できます。これにより、ディレクトリが異なるパッケージに属しているかどうかを確認できます。

0
Ryan