服务器:Ubuntu服务器14 LTS + PostgreSQL 9.2 我想使用drbd创建集群数据库,但是我无法在未初始化集群的情况下设置PGDATA。我只需要告诉pgsql使用来自drbd磁盘的数据即可。我该如何做?
示例1:
mkdir /cluster/var/lib/pgsql -p
chown postgres:postgres /cluster/var/lib/pgsql -R
cp -R /var/lib/pgsql /cluster/var/lib/pgsql
edit /etc/init.d/postgresql :
PGDATA=/cluster/var/lib/pgsql/data
...
PGLOG=/cluster/var/lib/pgsql/pgstartup.log
/etc/init.d/postgresql start
在postgresql 8.3中可以工作,但在9.2中我无法更改/etc/init.d/postgresql中的pgdata,我需要找到另一个文件并设置pgdata,但是,令人惊讶的是,它没有起作用。
例如2: PGDATA - 指定存储数据库集群的目录;可以使用-D选项覆盖。
好的,让我们开始: --pgdata=directory 是的,它有效了!但现在我们有了postgresql-xc和错误,如“postgresql不认识这个用户-postgresql”。 drbd开始复制集群中的数据,但postgresql也启动了它。
更新1:
root: initdb --pgdata=/home/username/dir
~initdb not install~bla-bla-bla~use apt-get install postgres-xc
UPD2: 更新2:
$: /usr/lib/postgresql/9.3/bin/initdb --pgdata=/whateveryouwant
#now you can run postgresql only one way:
$: /usr/lib/postgresql/9.3/bin/postgres -D /see_up
#then:
LOG: database system was shut down at 2014-09-26 15:56:33 YEKT
LOG: database system is ready to accept connections
LOG: autovacuum launcher started
#aaaaaaaaaaand...nothing. just empty console, ^C stopping postgres
#another SSH connect:
$: ps-ela
S 1000 5995 5217 0 80 0 - 62202 poll_s pts/0 00:00:00 postgres
1 S 1000 5997 5995 0 80 0 - 62202 poll_s ? 00:00:00 postgres
1 S 1000 5998 5995 0 80 0 - 62202 poll_s ? 00:00:00 postgres
1 S 1000 5999 5995 0 80 0 - 62202 poll_s ? 00:00:00 postgres
1 S 1000 6000 5995 0 80 0 - 62415 poll_s ? 00:00:00 postgres
1 S 1000 6001 5995 0 80 0 - 26121 poll_s ? 00:00:00 postgres
#is it ok? because...
$: /etc/init.d/postgresql status
9.3/main (port 5432): down
PGDATA
是一个环境变量,不需要任何东西来设置它。只需在您的.profile
文件中定义它或通过set
命令设置即可。 - user330315PGDATA
而是实际的数据目录。这两个东西是不同的(变量PGDATA
通常指向Postgres应该使用的数据目录)。另外,如果你正在使用Postgres-XC,你应该从一开始就提到它。Postgres-XC和PostgreSQL是两个不同的东西。 - user330315