Сервер: сервер Ubuntu 14 lts + PostgreSQL 9.2 Я хочу создать базу данных кластера с помощью drbd, но я не могу установить PGDATA без инициализации кластера. Мне просто нужно сказать, что pgsql использует данные с диска drbd. Как я могу это сделать?PostgreSQL set PGDATA variable
Пример 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 я не могу изменить PGDATA в /etc/init.d/postgresql, мне нужно найти другой файл и установить PGDATA, но, сюрприз, он ничего не делает.
Пример 2: PGDATA - указывает каталог, в котором должен храниться кластер базы данных; можно переопределить с помощью опции -D.
Итак, давайте начнем: --pgdata = directory Да, это работает! но теперь у нас есть postgresql-xc и ошибка, как «postgresql не знает этого пользователя - postgresql». drbd начать репликацию данных из кластера, но postgresql запустить его тоже.
UPD 1:
root: initdb --pgdata=/home/username/dir
~initdb not install~bla-bla-bla~use apt-get install postgres-xc
UPD2:
$: /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 без инициализации кластера * ", что не имеет смысла. 'PGDATA' - это переменная ** environment **. Для этого не требуется ничего. Просто определите его в своем '.profile' или через команду' set'. –
http://www.postgresql.org/docs/9.2/static/app-initdb.html <= в psql 9.2 вы можете установить pgdata только с помощью initdb, после чего pgsql будет управлять postgresql-xc. если вы хотите, чтобы в pgdata был установлен текстовый редактор, вы ничего не получите ... – 2014-09-24 10:16:29
Опять же: PGDATA - это переменная *** ***. Если вы не имеете в виду 'PGDATA', а фактический * каталог данных *. Это две разные вещи (переменная 'PGDATA' обычно _points_ в каталог данных, который должен использоваться Postgres). Также: если вы используете Postgres-XC, вы должны были упомянуть об этом с самого начала. Postgres-XC и PostgreSQL - это две разные вещи. –