Обсуждение: PostgreSQL default data location
I am running Trustix 3.0 RC2 and am trying to set the default data location for PostgreSQL as follows: I changed the default PostgreSQL data directory by running initdb -D /vol1/pgsql/data as the postgres user. Next I edited /etc/sysconfig/postgresql to change the PGDATA variable to the new directory. When I try to start postgreSQL it chokes saying the data directory /var/lib/posgresql/data has not been initilized, which is true but it should be trying to use the new data directory! I then also tried editing /etc/sysconfig/postmaster.args to add the -D /vol1/pgsql/data option to it but this also did not work! After looking at the /etc/init.d/postgresql script I put a symbolic link in /etc/sysconfig/postgresql.d to point to the file /etc/sysconfig/postgresql. Now if I use the command 'service postgrsql start' everything works fine...But on reboot the same problem occurs, postgresql tries to use the /var/lib/postgres/data directory still. What seems weird is that the service command works (or '/etc/init.d/postgresql start') but if I try to run the script '/etc/rc3.d/S85postgresql start' it looks for the default data directory and chokes. To make a long story short how do I change the default data diretory for PostgreSQL? What did I do wrong? James Herbers
Found the problem, It is a problem with the /etc/init.d/postgresql script. On line 31 the script grabs the defaults from the /etc/sysconfig/postgresql file which is where they should be. But then on line 41-42 it goes to set these defaults by using the file /etc/sysconfig/postgresql.d/${NAME} which would be the name of the script running, fine if the script is /etc/init.d/postgresql. In the case of going to run level 3 the file name is S85postgresql (a link to /etc/init.d/postgresql)! Well there is no file with defaults named /etc/sysconfig/postgresql.d/S85postgresql !! Lines 40- 42 of this script should match the defaults from line 31 and not reference the the name of the script being run. It should read: # Override defaults from /etc/sysconfig/postgresql if file is present [ -f /etc/sysconfig/postgresql ] && \ . /etc/sysconfig/postgresql NOT as it does: # Override defaults from /etc/sysconfig/postgresql if file is present [ -f /etc/sysconfig/postgresql.d/${NAME} ] && \ . /etc/sysconfig/postgresql.d/${NAME} James Herbers
James Herbers <james@herbers.ca> writes: > It is a problem with the /etc/init.d/postgresql script. > On line 31 the script grabs the defaults from the > /etc/sysconfig/postgresql file which is where they should be. But then > on line 41-42 it goes to set these defaults by using the file > /etc/sysconfig/postgresql.d/${NAME} which would be the name of the > script running, fine if the script is /etc/init.d/postgresql. In the > case of going to run level 3 the file name is S85postgresql (a link to > /etc/init.d/postgresql)! Well there is no file with defaults named > /etc/sysconfig/postgresql.d/S85postgresql !! You need to have a word with your Linux distro vendor, I think. The init scripts shipped by PGDG and Red Hat, at least, have gotten this right for a long time. regards, tom lane