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 – запит пароля для суперкористувача бази даних.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/initialize-postgres-database.png?resize=823%2C474&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/initialize-postgres-database.png?resize=823%2C474&ssl=1)
Для отримання додаткової інформації та опцій ми можемо звернутися до initdb –help.
9. Після ініціалізації бази даних, запуску кластера бази даних, або якщо вам потрібно змінити порт або адресу для прослуховування сервера, відредагуйте файл /pgdatabase/data/postgresql.conf у каталозі data сервера бази даних.
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/configure-postgresql-port.png?resize=707%2C287&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/configure-postgresql-port.png?resize=707%2C287&ssl=1)
$ pg_ctl -D /pgdatabase/data/ start
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/start-postgres-database.png?resize=846%2C220&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/start-postgres-database.png?resize=846%2C220&ssl=1)
10. Після запуску бази даних перевірте стан процесу сервера postgres за допомогою таких команд ps і netstat.
$ ps -ef |grep -i postgres
$ netstat -apn |grep -i 51751
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/verify-postgresql-database.png?resize=831%2C286&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/verify-postgresql-database.png?resize=831%2C286&ssl=1)
Ми бачимо, що кластер бази даних працює нормально, а журнали запуску можна знайти в місці, зазначеному з опцією -l під час запуску кластера бази даних.
11. Тепер підключіться до кластера баз даних і створіть базу даних за допомогою таких команд.
$ psql -p 51751
postgres=# create database test;
postgres=# \l to list all databases in cluster
postgres=# \q to quit form postgres console
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/connect-postgresql-database.png?resize=705%2C321&ssl=1)
![](https://i0.wp.com/linuxthebest.net/wp-content/uploads/2023/05/connect-postgresql-database.png?resize=705%2C321&ssl=1)