PostgreSQL データベースクラスタの格納先が変更できない

このQ&Aのポイント
  • PostgreSQL データベースクラスタの格納先を変更する方法がわかりません。
  • CentOS5.2でPostgreSQLをrpmでインストールした後、データベースクラスタの格納先を変更しようとしていますが、うまくいきません。
  • ディレクトリを変更する方法についてご教示いただけないでしょうか。
回答を見る
  • ベストアンサー

PostgreSQL データベースクラスタの格納先が変更できません

OSはCentOS5.2を使用しております。 データベースクラスタの格納先を変更したく PostgreSQLをrpmでインストールした後に #su postgers $vi ~/.bash_profile でPGDATAを編集後、環境変数へ反映。 $/usr/bin/initdb -D /usr/local/pgsql で初期化処理を実施後 /etc/rc.d/init.d/postgresql start と起動したところ、イニシャル処理も実施され デフォルトの/var/lib/pgsql/dataが作成されて しまいこちらの領域を使用して起動します。 どうすれば、ディレクトリを変更できるのでしょうか。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada59
  • ベストアンサー率74% (29/39)
回答No.1

CentOSの環境が手元にないのであくまで推測になります。 おそらく起動スクリプト内でpostgresユーザの環境変数が参照されていないことが原因だと思います。まず、/etc/rc.d/init.d/postgresqlの内容を確認してPGDATAの値に何が指定されているかを確認してみてください。多分、以下のような行が含まれていると思います。 PGDATA=/var/lib/pgsql/data ファイルを直接編集してPGDATAを変更してもいいですが、PGDG (PostgreSQL Global Development Group: PostgreSQLの開発元)が配布するパッケージ、もしくはそれをベースにしているパッケージであれば、/etc/sysconfig/pgsql/postgresqlというファイルを作成し、ファイル内に以下のような行を追加するとデータベースクラスタの位置を変更できるはずです。 PGDATA=/usr/local/pgsql あと、日本語のデータを格納するのであればinitdbの実行時に--no-localeオプションを指定したほうがいいでしょう。

mlc56724
質問者

お礼

回答ありがとうございました。 今は、デフォルトで構築してしまったのですが /etc/rc.d/init.d/postgresql作成し、当初の 目的の場所に変更しようと思います。

関連するQ&A

  • データベースクラスタの変更

    Debian etch (Linux Debian 2.6.25.1-kuroboxHG) な環境に aptitude install postgresql8 として、 PostgreSQL バージョン 8.1.11 を使っています。 インストールした直後のデフォルトのデータベースクラスタは /var/lib/postgresql/8.1/main でしたが、 # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 2063504 718136 1240548 37% / tmpfs 63504 0 63504 0% /lib/init/rw tmpfs 63504 0 63504 0% /dev/shm /dev/hda3 116413420 3093484 113319936 3% /mnt のような環境ですので、データベースクラスタを /mnt/share/pgsql に作ろうと思い /usr/lib/postgresql/8.1/bin/initdb -D /mnt/share/pgsql としました。 Success. You can now start the database server using: /usr/lib/postgresql/8.1/bin/postmaster -D /mnt/share/pgsql or /usr/lib/postgresql/8.1/bin/pg_ctl -D /mnt/share/pgsql -l logfile start となったので /usr/lib/postgresql/8.1/bin/pg_ctl -D /mnt/share/pgsql -l logfile start したところ server.crt がないと怒られたので /var/lib/postgresql/8.1/main に有ったシンボリックリンクを作成 この時に同じフォルダにある二つも作成 root.crt -> /etc/postgresql-common/root.crt server.crt -> /etc/ssl/certs/ssl-cert-snakeoil.pem server.key -> /etc/ssl/private/ssl-cert-snakeoil.key としたのですが 再起動してもPostgreSQLがもとのまま /var/lib/postgresql/8.1/main を使って起動しています。 どこを見直すのかご享受ください。 よろしくお願いします。

  • postgreSQLのinitdb

    postgreSQL7.2.3のインストールを行いました。 % tar vxfz postgresql-7.2.3.tar.gz % cd postgresql-7.2.3 % ./configure --enable-locale --enable-multibyte=EUC_JP |& tee Configure.out % make | & tee Make.out % su # tcsh % make install | &tee Make_install.out % chown -R postgres:postgres /usr/local/pgsql ここまでは何も問題なく終わったのですが、 次に initdb を実行したところ以下エラーが出ます。 % su postgres % /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data ld.so.1: /usr/local/pgsql/bin/pg_encoding: 重大なエラー: libgcc_s.so.1: open に 失敗しました: ファイルもディレクトリもありません。 initdb: pg_encoding failed Perhaps you did not configure PostgreSQL for multibyte support or the program was not successfully installed. ↑ここまで 「マルチバイトサポートしていません」 「インストールに失敗しています」というような内容なのですが、 何がダメだったのでしょうか? ちなみにOSは Solaris9/02です。

  • PostgreSqlインストールで

    Linux環境にPostgreSqlをインストールしたいのですが以下のエラーがでて困ってます; 手順としては 1, ./configure 2, gmake 3, su 4, gmake install 5, mkdir /usr/local/pgsql/data 6, chown postgres /usr/local/pgsql/data 7, su - postgres 8, /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data 9, /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 & 10, /usr/local/pgsql/bin/createdb test 11, /usr/local/pgsql/bin/psql test まず手順8で以下のエラーが出ます database "postgres" does not exist その後、手順9を実行すると以下のエラーがでます createdb: could not connect to database template1: could not connect to server: そのようなファイルやディレクトリはありません Is the server runnning locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 解決策等ご存知でしたら教えて頂けないでしょうか? よろしくお願い致します。

  • PostgreSQLをCentOS5にインストールしました。

    閲覧有難うございます。 質問内容なのですが、Postgresqlをインストールしたのですがpostgresql.confとpg_hba.confが見つかりません。 OSはCentOS5です。 インストール方法は以下の手順で行いました。 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install また、 [root@ ~]# su - postgres -bash:  LD_LIBRARY_PATH=/usr/local/pgsql/lib: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found [postgres@ ~]$ のようなエラーがはかれるようになりました。 どうか皆様のお力をお貸しください。

  • RedHat9にPostgreSQL構築できるが、再起動すると消滅

    WindowsXP内のVMWareに仮想マシンRedHat9を構築して便利に使っています。今回この中ににPostgreSQL構築しpostgresql-8.1.3.tar.gzを/usr/local/srcにダウンロード #useradd postgres #mkdir /usr/local/pgsql #mkdir /usr/local/pgsql/data #cd /usr/lcal/src #tar zxfv postgres-8.1.3.tar.gz #chown postgres.postgres /usr/locl/pgsql #chown -R postgres.postgres postgresql.1.3 #su - postgres $cd /usr/local/src/postgresql-8.1.3 $./configure $gmake $gmake install 以上で無事postgreSQLデータベースが完成 引き続きユーザpostgresで $/usr/local/pgsql/bin/initdb -D /usr/local/pogsql/data $/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data $/usr/local/pgsql/bin/createdb TestDB $/usr/local/pgsql/bin/psql TestDB で作成したTestDBに接続でき、テーブルも作りました。 ところがRedHat9をいったん再起動するとできている筈のTestDBに接続できなくなります。どこかにどこかに設定ミスがありますか。何かヒントをいただければうれしいです。 $/usr/local/

  • PostgreSQLはインストールされている?

    $ /usr/local/pgsql/bin/postmaster -D PGDATA を実行すると、 database system is ready と表示されますが、 # rpm -qa|grep postgres を実行すると、何も表示されません。PostgreSQL7.2.3はインストールされているといえるのでしょうか?

  • PostgreSQL-initdb

    某書籍「WindowsユーザーのためのPostgre…」の手順の通りに実施してるのですが、 PostgreSQLのインストール・環境変数の設定後、データベースの初期化コマンド(initdb)を実行すると、"command not found"となってしまいます。 /usr/local/pgsql/bin内に、initdbファイル(拡張子なし)は存在しています。initdb.exeは存在してません。 手順等で欠落している(しそうな)こと、対応方法を教えてください。

  • 【SuSE】PostgreSQLの自動起動が出来ない

    見ていただいてありがとうございます! SuSE LinuxでpostgreSQLの自動起動が設定できず 困っております。 ヒントでもかまいませんので、 ご教授いただきたく思っております。 postgreSQLのインストールはソースから行いました。 ログイン後なら、以下のコマンドを実行することで 起動することは可能な状態です。 #su - postgres #/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data> logfile 2>&1 & ■自動起動させるために行ったこと 1.自動起動スクリプトファイル "/usr/local/src/postgresql-8.3.3/cntrib/start-script/linux" をディレクトリ"/etc/init.d/"にコピーしました。 2.自動起動スクリプトファイルを 「postgresql」にリネームし、 全員に実行権限を付与しました。 3."/etc/init.d/rc*.d"に以下の名前で シンボリックリンクを作成しました。  ・rc0.d、rc1.d、rc2.dに「K02postgresql」  ・rc3.d、rc5.dに「S98postgresql」 現在、上記の操作をした状態となっておりますが、 rootでログインしてコマンド #pr -e を実行しても 「postmaster」の行があらわれません。 ちなみに、コマンド #chkconfig -list を実行すると postgresqlの行の 3 と 5 がONになっています。 現在Linuxのことを勉強中ですので、 質問に情報不足などあるかもしれません。 ご指摘いただければ、至急追加情報を提示いたします。 よろしくお願いいたします!

  • POSTGRES8.2を自動起動したい

    POSTGRES8.2をシェルで自動起動したく、下記のとおり挑戦しています。 cd /etc/init.d/ vi pgsql #!/bin/sh # # chkconfig: 35 86 15 # description: PostgreSQL auto start PGACCOUNT="user1" PG_CTL="/usr/local/pgsql/bin/pg_ctl" . /etc/rc.d/init.d/functions echo "PostgresSQL start:" su - $PGACCOUNT -c "$PG_CTL start -o \"-i\"" そして下記の順番で設定・確認 chmod 755 ./pgsql chkconfig --add pgsql chkconfig pgsql on chkconfig --list pgsql pgsql 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ ここで、 su -l service pgsql とやるとPOSTGRESは起動します。 しかし、再起動してもPOSTGRESが起動してくれないのです。 問題解決の為にご協力をお願いします。

  • postgreSQLが初期化できないのです。

    初めまして。vine Linux にPostgreSQLをインストールしたのですが、 初期化の initdb が成功しません。 his user will own all the data files and must also own the server process. Creating database system directory /usr/local/pgsql/data Creating database system directory /usr/local/pgsql/data/base Creating database XLOG directory /usr/local/pgsql/data/pg_xlog Creating template database in /usr/local/pgsql/data/base/template1 021109.20:31:19.898 [14757] ERROR: Error: unknown type 'oid8'. 021109.20:31:19.898 [14757] ERROR: Error: unknown type 'oid8'. Creating global relations in /usr/local/pgsql/data/base Adding template1 database to pg_database initdb failed. Removing /usr/local/pgsql/data. Removing temp file /tmp/initdb.14730. のように、 unknown type 'oid8' と言われてしまいます。 この対処の方法をどなたか、教えてください。 お願いします。