PostgreSQL также называется Postgres — это мощная объектно-реляционная система баз данных с открытым исходным кодом. Это база данных корпоративного уровня с такими функциями, как ведение журнала с опережением записи для обеспечения отказоустойчивости, асинхронная репликация, многоверсионный контроль параллелизма (MVCC), резервное копирование онлайн/горячее резервное копирование, восстановление по точкам, планировщик/оптимизатор запросов, табличные пространства, вложенные транзакции (точки сохранения) и т.д.
Последняя версия Postgres 15.2 была выпущена 9 февраля 2023 года глобальной группой разработчиков PostgreSQL.
Особенности PostgreSQL
Особенности новой версии следующие:
- Логическая репликация: Эта функция позволяет реплицировать отдельные объекты базы данных (будь то строки, таблицы или выборочные базы данных) на резервных серверах. Она обеспечивает больший контроль над репликацией данных. Реализуется с помощью модели издатель-подписчик.
- Quorum Commit для синхронной репликации: В этой функции dba теперь может указать количество резервных серверов, которые подтверждают, что изменения в базе данных были сделаны, так что данные можно считать безопасно записанными.
- Аутентификация SCRAM-SHA-256: Улучшена безопасность по сравнению с существующей аутентификацией и хранением паролей на основе MD5.
- Улучшенное параллельное выполнение запросов.
- Декларативное разбиение таблиц.
- Поддержка полнотекстового поиска для JSON и JSONB.
В этой статье мы расскажем, как установить PostgreSQL 15 с помощью установки из исходных кодов в системах Linux. Те, кто ищет простую установку из менеджера пакетов дистрибутива, мы рассматривали установку PostgreSQL 15 на Rocky Linux и AlmaLinux:
Установка PostgreSQL из исходного кода
Поскольку postgres является базой данных с открытым исходным кодом, она может быть собрана из исходных текстов в соответствии со своими потребностями. Мы можем настроить процесс сборки и установки, добавив один или несколько параметров командной строки для различных дополнительных функций.
Основным преимуществом использования установки из исходного кода является то, что ее можно в значительной степени настроить в процессе установки.
1. Сначала установите необходимые предварительные компоненты, такие как gcc, readline-devel и zlib-devel, используя менеджер пакетов, как показано на рисунке.
# yum install gcc zlib-devel readline-devel [On RHEL/CentOS]
# apt install gcc zlib1g-dev libreadline6-dev [On Debian/Ubuntu]
2. Загрузите tar-файл исходного кода с официального сайта postgres с помощью следующей команды wget непосредственно в системе.
# wget https://ftp.postgresql.org/pub/source/v15.2/postgresql-15.2.tar.bz2
3. Используйте команду tar для извлечения загруженного файла tarball. Будет создан новый каталог с именем postgresql-15.2.
# tar -xvf postgresql-15.2.tar.bz2
# cd postgresql-15.2
# ls -l
Образец вывода
total 780
-rw-r--r-- 1 1107 1107 397 Feb 6 16:39 aclocal.m4
drwxrwxrwx 2 1107 1107 4096 Feb 6 16:50 config
-rwxr-xr-x 1 1107 1107 601519 Feb 6 16:39 configure
-rw-r--r-- 1 1107 1107 89258 Feb 6 16:39 configure.ac
drwxrwxrwx 61 1107 1107 4096 Feb 6 16:50 contrib
-rw-r--r-- 1 1107 1107 1192 Feb 6 16:39 COPYRIGHT
drwxrwxrwx 3 1107 1107 87 Feb 6 16:50 doc
-rw-r--r-- 1 1107 1107 4264 Feb 6 16:39 GNUmakefile.in
-rw-r--r-- 1 1107 1107 277 Feb 6 16:39 HISTORY
-rw-r--r-- 1 1107 1107 63842 Feb 6 16:51 INSTALL
-rw-r--r-- 1 1107 1107 1875 Feb 6 16:39 Makefile
-rw-r--r-- 1 1107 1107 1213 Feb 6 16:39 README
drwxrwxrwx 16 1107 1107 4096 Feb 6 16:51 src
4. Следующим шагом процедуры установки является конфигурирование загруженного исходного кода путем выбора опций в соответствии с вашими потребностями. Используйте ./configure —help для получения справки по различным опциям.
# ./configure --help
`configure' configures PostgreSQL 15.2 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them asVAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local/pgsql]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
....
5. Теперь создайте каталог, в который вы хотите установить файлы postgres, и используйте опцию prefix в configure.
# mkdir /opt/PostgreSQL# ./configure --prefix=/opt/PostgreSQL
Образец вывода
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking which template to use... linux
checking whether NLS is wanted... no
checking for default port number... 5432
checking for block size... 8kB
checking for segment size... 1GB
checking for WAL block size... 8kB
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for gcc option to accept ISO C99... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for gawk... gawk
checking whether gcc supports -Wdeclaration-after-statement, for CFLAGS... yes
checking whether gcc supports -Werror=vla, for CFLAGS... yes
checking whether gcc supports -Werror=unguarded-availability-new, for CFLAGS... no....
Создание PostgreSQL из исходных текстов
6. После настройки мы приступим к сборке PostgreSQL с помощью следующей команды make.
# make
После завершения процесса сборки установите postgresql с помощью следующей команды.
# make install
Postgresql 15 был установлен в каталог /opt/PostgreSQL.
Создание пользователя Postgres
7. Теперь создайте пользователя postgres и каталог, который будет использоваться в качестве каталога данных для инициализации кластера баз данных. Владельцем этого каталога данных должен быть пользователь postgres, права доступа должны быть 700, а также задайте путь для двоичных файлов postgresql для нашего удобства.
# useradd postgres
# passwd postgres
# mkdir -p /pgdatabase/data
# chown -R postgres. /pgdatabase/data
# echo 'export PATH=$PATH:/opt/PostgreSQL/bin' > /etc/profile.d/postgres.sh
# source /etc/profile.d/postgres.sh
Инициализация базы данных Postgres
8. Теперь инициализируйте базу данных с помощью следующей команды в качестве пользователя postgres, прежде чем использовать любые команды postgres.
# su postgres
$ initdb -D /pgdatabase/data/ -U postgres -W
Где -D — это местоположение кластера базы данных или, можно сказать, это каталог данных, в котором мы хотим инициализировать кластер базы данных, -U — имя суперпользователя базы данных и -W — запрос пароля для суперпользователя базы данных.
Для получения дополнительной информации и опций мы можем обратиться к initdb —help.
9. После инициализации базы данных, запуска кластера базы данных, или если вам нужно изменить порт или адрес для прослушивания сервера, отредактируйте файл /pgdatabase/data/postgresql.conf в каталоге data сервера базы данных.
$ pg_ctl -D /pgdatabase/data/ start
10. После запуска базы данных проверьте состояние процесса сервера postgres с помощью следующих команд ps и netstat.
$ ps -ef |grep -i postgres
$ netstat -apn |grep -i 51751
Мы видим, что кластер базы данных работает нормально, а журналы запуска можно найти в месте, указанном с опцией -l при запуске кластера базы данных.
11. Теперь подключитесь к кластеру баз данных и создайте базу данных с помощью следующих команд.
$ psql -p 51751
postgres=# create database test;
postgres=# l to list all databases in cluster
postgres=# q to quit form postgres console