web-dev-qa-db-ja.com

Linux上のPostgreSQL "initdb"(データベースの初期化)

Linuxシステム(CentOS-RedHat-Fedora)で動作するPostgreSQL 9.xでデータベースクラスター(単一データベース)を作成しています。正しいPostgreSQLパッケージ(サーバーとクライアント)をインストールしましたが、データベースを作成できず、何らかのタイプの初期化依存関係エラーが発生します:バスエラー/終了コード135 。ユーザーを「su postgres」で「postgres」に変更し、「initdb」でデータベースを初期化しようとしました(これが問題である可能性があります)

Installed: postgresql-libs-9.2.13-1.el7_1.x86_64
Installed: postgresql-9.2.13-1.el7_1.x86_64
Installed: postgresql-server-9.2.13-1.el7_1.x86_64

$ initdb -D /usr/local/pgsql/data

http://www.postgresql.org/docs/9.2/interactive/creating-cluster.html

エラー:

$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... sh: line 1: 12616 Bus error               (core dumped) "/usr/bin/postgres" --single -F -O -c search_path=pg_catalog -c exit_on_error=true template1 > /dev/null
child process exited with exit code 135

何か案は?

5
Asher

PostgreSQL(サーバーおよびクライアントツール)をインストールした後、次のコマンドをROOT( "su")として実行する必要があります。重要なステップは、「service postgresql initdb」を開始し、PostgreSQLデータベースを初期化させることです。

エラーがある場合は、空のインストール「データ」ディレクトリを削除し、すべてのログファイルを注意深く読む必要があります。

# service postgresql initdb
# systemctl enable postgresql
# systemctl start postgresql

上記を実行した後、postgresが/ var/lib/pgsqlにあり、実行中のプロセスが "ps -ef | grep postgres"(ポート5432にある)であることを確認します。

他の問題が発生した場合は、postgresユーザー/パスワードを作成または変更するか、postgresデータディレクトリを削除する必要があります。

6
Asher

パッケージからインストールした場合は、パッケージを提供するメソッドを使用してDBを作成する必要があります。 README.rpm-distに記載されているPDGD RPM( http://yum.postgresql.org/ から)の場合:

/usr/pgsql-9.4/bin/postgresql94-setup initdb

ただし、実際に発生しているエラーは発生しません。ハードウェアの非互換性、または互換性のないCライブラリのような低レベルの問題を示唆しています。おそらく、別のOSまたはバージョンからRPMを強制インストールしましたか?

更新

Cライブラリの非互換性である可能性が非常に高いようです。おそらくRHELとCentOSの間の問題ですか?またはバージョン関連?これは、ダイナミックリンカの障害です。 dl-lookup.cglibc/elf/dl-lookup.cになり、シンボル検索中にクラッシュするようです。ですから、バイナリのシンボルハッシュテーブルが壊れている、バイナリと使用されているダイナミックリンカとの間に互換性がないなど、ここには本当に奇妙な問題があります。または、メモリ障害、ディスク障害、CPUキャッシュの問題、またはその他のハードウェアエラー。

再起動すると消える場合は、ハードウェアに非常に疑わしいと思います。そうでない場合は、サードパーティ製のパッケージ化されていないインストーラーが元のCライブラリ/ダイナミックリンカーを上書きするなど、奇妙なことのように、システムに本当に不安定なものがある可能性があります。

1
Craig Ringer