- Создаем каталоги хранилищ данных
su root -c 'mkdir -p /db2/pgdata-master /db2/pgdata-backup'
su root -c 'chown postgres:postgres /db2/pgdata-master /db2/pgdata-backup'
- Инициализируем хранилища данных
/usr/local/pgsql/bin/initdb -D /db2/pgdata-master
/usr/local/pgsql/bin/initdb -D /db2/pgdata-backup
- В /db2/pgdata-master кладем файл postgresql.conf следующего содержания:
listen_addresses = 'localhost'
port = 5501
max_connections = 5
ssl = on
shared_buffers = 100
#archive_command = ''
log_destination = 'stderr'
redirect_stderr = true
log_directory = '/var/log/pgsql'
log_filename = 'pgsql.log.%d.%m.%Y'
log_rotation_age = 1440
log_rotation_size = 0
log_min_error_statement = error
log_line_prefix = '%t %p %d %u '
lc_messages = 'C'
lc_monetary = 'C'
lc_numeric = 'C'
lc_time = 'C'
Такой же файл кладем в /db2/pgdata-backup, изменив лишь параметр port
...
port = 5502
...
- В /db2/pgdata-master кладем файл pg_hba.conf следующего содержания:
local all all trust
host all all 127.0.0.1/32 trust
После чего копируем этот файл в /db2/pgdata-backup:
cp /db2/pgdata-master/pg_hba.conf /db2/pgdata-backup/pg_hba.conf
- Для создания самоподписанного сертификата в каталоге /db2/pgdata-master выполняем следующие действия:
openssl req -new -text -out server.req (запоминаем passphrase)
openssl rsa -in privkey.pem -out server.key (больше нам passphrase не потребуется)
rm privkey.pem
openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod 0600 server.key server.crt
Копируем файлы server.key и server.crt в каталог /db2/pgdata-backup:
cp /db2/pgdata-master/server.key /db2/pgdata-backup/server.key
cp /db2/pgdata-master/server.crt /db2/pgdata-backup/server.crt
- Запускаем postgres командами
/usr/local/pgsql/bin/pg_ctl -D /db2/pgdata-master start
/usr/local/pgsql/bin/pg_ctl -D /db2/pgdata-backup start
На ругань насчет файла root.crt особого внимания не обращаем - проверка клиентских сертификатов нас не интересует - Проверяем, что сервер master БД запущен:
/usr/local/pgsql/bin/psql -h localhost -p 5501 -l
Результат вывода должен быть примерно следующим:
List of databases
Name | Owner | Encoding
----------------+----------+----------
template0 | postgres | ASCII
template1 | postgres | ASCII
(2 rows)
То же самое проделываем для backup БД: /usr/local/pgsql/bin/psql -h localhost -p 5502 -l
- Создаем файл cluster.schema такого содержания:
CREATE TABLE organizations (
org_id int4 not null,
name text,
PRIMARY KEY(org_id)
);
CREATE TABLE users (
user_id int4 not null,
name text,
org_id int4 not null,
PRIMARY KEY(user_id),
FOREIGN KEY(org_id) REFERENCES organizations(org_id) DEFERRABLE INITIALLY DEFERRED
);
- Создаем 2 базы данных ( master и slave ):
/usr/local/pgsql/bin/createdb -h localhost -p 5501 cluster
/usr/local/pgsql/bin/createdb -h localhost -p 5502 cluster
- Инициализируем все базы данных:
/usr/local/pgsql/bin/psql -h localhost -p 5501 -f cluster.schema cluster
/usr/local/pgsql/bin/psql -h localhost -p 5502 -f cluster.schema cluster