Установка Postgres Pro из репозитория в системе CentOS 7

Postgres Pro -  Российская СУБД, разработанная компанией Postgres Professional на основе свободно-распространяемой СУБД PostgreSQL. Давайте поглядим, какая система postgresql доступна нам из стандартного репозитория:

 

[root@ssl ~]# yum info postgresql-server
Загружены модули: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.h1host.ru
 * extras: mirror.yandex.ru
 * updates: mirror.yandex.ru
Доступные пакеты
Название: postgresql-server
Архитектура: x86_64
Версия: 9.2.18
Выпуск: 1.el7
Объем: 3.8 M
Источник: base/7/x86_64
Аннотация: The programs needed to create and run a PostgreSQL server
Ссылка: http://www.postgresql.org/
Лицензия: PostgreSQL
Описание: PostgreSQL is an advanced Object-Relational database management system (DBMS).
        : The postgresql-server package contains the programs needed to create
        : and run a PostgreSQL server, which will in turn allow you to create
        : and maintain PostgreSQL databases.
--

 

Как видно выше, доступен нам релиз 9.2, что вполне нормально и для многих вещей достаточно.

Установка репозитория в систему от компании Postgres Pro

yum install http://repo.postgrespro.ru/pgpro-9.6/keys/postgrespro-9.6.centos.pro.yum-1.0-1.noarch.rpm -y

После установки пакета, давайте снова поглядим доступные нам версии Postgresql:

[root@ssl ~]# yum search postgres | sed -n '/^postgres/p'
postgrespro-9.6.centos.pro.yum.noarch : PostgreSQL 9.6 Postgres Pro RPMs for
postgrespro96.x86_64 : PostgreSQL client programs and libraries
postgrespro96-contrib.x86_64 : Contributed source and binaries distributed with
postgrespro96-debuginfo.x86_64 : Debug information for package postgrespro96
postgrespro96-devel.x86_64 : PostgreSQL development header files and libraries
postgrespro96-docs.x86_64 : Extra documentation for PostgreSQL
postgrespro96-docs-ru.x86_64 : Russian documentation for PostgreSQL
postgrespro96-libs.x86_64 : The shared libraries required for any PostgreSQL
postgrespro96-pg_probackup.x86_64 : Backup and recovery manager for PostgreSQL
postgrespro96-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgrespro96-plpython.x86_64 : The Python procedural language for PostgreSQL
postgrespro96-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgrespro96-server.x86_64 : The programs needed to create and run a PostgreSQL
postgrespro96-test.x86_64 : The test suite distributed with PostgreSQL
postgresql.i686 : PostgreSQL client programs
postgresql.x86_64 : PostgreSQL client programs
postgresql-contrib.x86_64 : Extension modules distributed with PostgreSQL
postgresql-devel.i686 : PostgreSQL development header files and libraries
postgresql-devel.x86_64 : PostgreSQL development header files and libraries
postgresql-docs.x86_64 : Extra documentation for PostgreSQL
postgresql-jdbc.noarch : JDBC driver for PostgreSQL
postgresql-jdbc-javadoc.noarch : API docs for postgresql-jdbc
postgresql-libs.i686 : The shared libraries required for any PostgreSQL clients
postgresql-libs.x86_64 : The shared libraries required for any PostgreSQL
postgresql-odbc.x86_64 : PostgreSQL ODBC driver
postgresql-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql-plpython.x86_64 : The Python2 procedural language for PostgreSQL
postgresql-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql-server.x86_64 : The programs needed to create and run a PostgreSQL
postgresql-test.x86_64 : The test suite distributed with PostgreSQL
postgresql-upgrade.x86_64 : Support for upgrading from the previous major

Установка сервера Postgres Pro и клиента

yum install postgrespro96 postgrespro96-server -y

.. не помешает еще доставить:
yum install postgrespro96-libs postgrespro96-contrib postgrespro96-devel -y

После установки в системе появится новый пользователь -  postgres, а также каталог для баз данных

/var/lib/pgpro/9.6/data

владельцем которого будет этот же пользователь.

Инициализация кластера базы данных

Под таким громким названием понимается подготовка области хранения базы данных на диске. Также будут созданы первичные базы по-умолчанию (template0, template1 и postgres).

Стоит отметить, что при инициализации кластер создается с локалью аналогичной локали пользователя postgres. Давайте сейчас выясним какие локали у наших пользователей в системе (их пока двое - root и postgres):

[root@ssl ~]# localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: n/a
[root@ssl ~]# su - postgres

-bash-4.2$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: n/a

 

Поменяем локаль. У пользователя postgres, во время смены локали, будет запрошен пароль root-а.

localectl set-locale LANG=ru_RU.UTF-8
-bash-4.2$ localectl set-locale LANG=ru_RU.UTF-8
==== AUTHENTICATING FOR org.freedesktop.locale1.set-locale ===
Authentication is required to set the system locale.
Authenticating as: root
Password: 
==== AUTHENTICATION COMPLETE ===

 

Смотрим снова локаль:

-bash-4.2$ localectl status
   System Locale: LANG=ru_RU.UTF-8
       VC Keymap: us
      X11 Layout: n/a

 

Теперь переходим к инициализации. Делаем все под root:

[root@ssl ~]# /usr/pgpro-9.6/bin/pg-setup initdb
Initializing database ... OK

Настройка и работа

Поставим сервис в автозагрузку:

systemctl enable postgrespro-9.6
 или используя старый синтаксис:
chkconfig postgrespro-9.6 on

Старт сервиса:

systemctl start postgrespro-9.6 
или 
service postgrespro-9.6 start

 

Посмотрим какой у пользователя postgres домашний каталог и назначим ему владельца postgres.

[root@ssl ~]# su - postgres
Последний вход в систему:Сб фев 25 15:31:22 MSK 2017на pts/0
-bash-4.2$ echo $HOME
/var/lib/pgsql
[root@ssl ~]# ll /var/lib/ |grep pgsql
drwxr-xr-x 2 root root       69 фев 25 15:32 pgsql

Так, надо менять владельца!

[root@ssl ~]# chown -R postgres.postgres /var/lib/pgsql

[root@ssl ~]# ll /var/lib/ |grep pgsql
drwxr-xr-x 2 postgres postgres   69 фев 25 15:32 pgsql

 

Далее, пока под пользователем postgres, уже можно запустить консольный клиент psql и начать работу!

-bash-4.2$ psql
psql (9.6.2)
Введите "help", чтобы получить справку.

postgres=#

--

postgres=# select version();
                                                 version                                                  
----------------------------------------------------------------------------------------------------------
 PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11), 64-bit
(1 строка)
postgres=# \l
                                  Список баз данных
    Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа     
-----------+----------+-----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | 
 template0 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
(3 строки)

--

postgres=# \q

Информация

Журнал сообщений сервера находится по адресу:

... по дням недели
/var/lib/pgpro/9.6/data/pg_log/postgresql-Sun.log
/var/lib/pgpro/9.6/data/pg_log/postgresql-Mon.log
..
/var/lib/pgpro/9.6/data/pg_log/postgresql-Sat.log

 

Файлы базы данных находятся по умолчанию:

/var/lib/pgpro/9.6/data/base

--

  • /var/lib/pgpro/9.6/data/postgresql.conf - основной конфигурационный файл, содержащий параметры сервера баз данных.
  • /var/lib/pgpro/9.6/data/pg_hba.conf - файл, определяющий настройки доступа к серверу баз данных.

 

Автор: Александр