Введение.
В семейство управления базами данных входит PostgreSQL — рекомендованный для установки и эксплуатации Единым реестром Российских программ для ЭВМ и баз данных.
Этой публикацией, PostgreSQL часть 1, открывается цикл статей посвящённых теоретическим основам и практическим рекомендациям по вопросам установки, запуску и эксплуатации экземпляра сервера PostgreSQL в среде Linux.
Все статьи посвящённые PostgreSQL см.
тэг БД или поиск postgres
Подготовка PostgreSQL.
- Стенд:
- Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
- Simply Linux, имя: lin-sl, IP=10.0.2.30
- Пользователь, имя: trt
Определение.
- В различных источниках можно встретить:
- PostgreSQL
- PL/pgSQL — процедурное расширение языка SQL
- PgSQL
Архитектура и терминология.
- PostgreSQL выполняет архитектуру клиент-сервер, включающий:
- главный серверный процесс-имя
postgres
- клиентские запросы — графика, текст, вэб страница …
- главный серверный процесс-имя
Главный процесс , postgres
, порождает множество подпроцессов, для каждого подключаемого клиента, обеспечивая этим многопоточность.
Сервер PostgreSQL, согласно терминологии, является — экземпляром сервера.
Данные сервера хранятся в базах, один экземпляр PostgreSQL может работать с несколькими базами определяемые, как кластер БД.
Развёртывание PostgreSQL.
Для установки пакетов используйте графический менеджер — synaptic.
# apt-get update
# apt-get install synaptic
# synaptic
- Для установки PqSQL необходимо:
- проверить службу времени NTP.
- проверить кодировку
locale -a|grep ru_RU
ru_RU
ru_RU.cp1251
ru_RU.ibm866
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
- выбрать необходимую версию сервера PqSQL
# apt-cache show postgresql
Виртуальный пакет postgresql предоставляется следующими пакетами:
....
You should explicitly select one to show.
E: Package postgresql is a virtual package with multiple providers.
- установить выбранный пакет сервера
# apt-get install postgresqlXX-server
XX — версия выбранного сервера PqSQL
- После установки создаются каталоги:
- /var/lib/pgsql — папки кластера БД
- /usr/share/pgsql — пакеты PostgreSQL
Формирование кластера PostgreSQL часть1.
Кластер — область хранения баз данных на диске
При установке сервера PqSQL создаётся пользователь postgres.
$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)
Пользователь postgres осуществляет начальное управление сервером, обладая ролью суперпользователя. По умолчанию пароль для postgres не установлен — метод аутентификации из «коробки» trust.
Используя роль postgres, создадим кластер сервера. Для выполнения необходимо, что бы учётная запись осуществляющая действия с пользователем postgres была членом группы whell.
Проверим / установим утилиту sudo.
# apt-get install sudo
Открываем доступ группе wheel, для выполнения команд sudo.
# visudo … WHEEL_USERS ALL=(ALL) ALL … :wq
Проверяем каким группам принадлежит пользователь trt.
$ id -Gn trt
trt wheel uucp proc cdrom floppy cdwriter audio radio users vboxusers scanner xgrp camera
Используя роль postgres создадим кластер сервера PqSQL.
$ sudo su - postgres -s /bin/bash
[sudo] password for trt:********
-bash-x.x$ initdb -k
Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.
Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8".
Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8".
Выбрана конфигурация текстового поиска по умолчанию "russian".
Контроль целостности страниц данных включён.
исправление прав для существующего каталога /var/lib/pgsql/data... ок
создание подкаталогов... ок
выбирается значение max_connections... 100
выбирается значение shared_buffers... 128MB
выбор реализации динамической разделяемой памяти... posix
создание конфигурационных файлов... ок
выполняется подготовительный скрипт... ок
выполняется заключительная инициализация... ок
сохранение данных на диске... ок
ПРЕДУПРЕЖДЕНИЕ: используется проверка подлинности "trust" для локальных подключений.
Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A,
--auth-local или --auth-host при следующем выполнении initdb.
Success. You can now start the database server using:
service postgresql start
or
pg_ctl -D /var/lib/pgsql/data -l файл_журнала start
-bash-x.x$ exit
- sudo su — выполнить команду от имени пользователя входящего в группу администраторов
- s — запуск команд в оболочке BASH
-bash-x.x— текущая версия bash
Команды для запуска PqSQL часть1.
- Запуск PqSQL включают два варианта:
- консольной командой
# systemctl start|status|stop|restart| postgresql
- утилитой pg_ctl из инструментария PqSQL
$ sudo su - postgres -s /bin/bash
-bash-x.x$ pg_ctl start | stop | restart| reload| status
Вид1. Листинг запуска сервера командой pg_ctl start
$ sudo su - postgres -s /bin/bash
-bash-x.x$ pg_ctl start
ожидание запуска сервера.... [1337] СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "127.0.0.1" открыт порт 5432
... [1337] СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432
... [1337] СООБЩЕНИЕ: для приёма подключений открыт Unix-сокет "/tmp/.s.PGSQL.5432"
... [1337] СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов
... [1337] ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "log".
готово
сервер запущен
При запуске postgresql, может возникнуть сообщение, Вид2, это нормально.
стартовый PID автозагрузки запустил кластер
все команды pg_ctl, кроме start доступны
Вид2. Листинг сообщения о ошибке при старте PqSQL.
-bash-3.2$ pg_ctl start
pg_ctl: возможно, уже работает другой сервер; всё же пробуем запустить этот сервер
ожидание запуска сервера....ВАЖНО: файл блокировки "postmaster.pid" уже существует
ПОДСКАЗКА: Другой экземпляр postmaster (PID 1118) работает с каталогом данных "/var/lib/pgsql/data"?
прекращение ожидания
pg_ctl: не удалось запустить сервер
Управление автозагрузкой PqSQL.
# systemctl enable postgresql
# systemctl is-enabled postgresql
enabled
Проверка работы сервера.
Убедится в том, что наш сервер запущен и готов к работе, можно консольной командой, которая выводит время и текущею дату.
$ psql -U postgres -c 'select now()'
Пароль пользователя postgres:
now
-------------------------------
2023-03-21 13:05:28.538569+03
(1 строка)
Пользователь postgres имеет, из коробки, аутентификацию trust — без пароля
Подробно о ролях PgSQL, читай в третьей части.
Заключение.
Сервер PqSQL зарекомендовал себя, как надёжный, устойчивый при длительной эксплуатации СУБД. Встроенные возможности PqSQL, позволяют конкурировать с Microsoft SQL и Oracle. Конечно, те кто вложился деньгами и знаниями в изучение и эксплуатацию MS SQL и Oracle, желания переходить или мигрировать на PqSQL не испытывают. Слишком высоки риски, да и годами устоявшиеся система управления вполне устраивает. Но жизнь и время требует новых подходов и решений. Создать с нуля БД и запустить в эксплуатацию это одно, а подготовить и выполнить план по миграции другое. Здесь требуется проведение предварительных действий. Начинать надо с обучения и развёртывания стенда, что бы на практике получать навыки и опыт работы с PostgreSQL.
Если для организации стоит вопрос перехода на PostgreSQL, то прежде всего, надо решить вопрос оборудования и коннектора для миграции. По оборудованию можно обратиться к официальной документации. Миграционный коннектор, под конкретную прикладную программу надо искать, их достаточно, платных и бесплатных, условие одно — тестирование на стенде предприятия. Есть ещё одно решение по миграции, заказать услугу по переходу на PostgreSQL и его сопровождение. Но это прежде всего финансовый вопрос, придут специалисты проведут миграцию, а может и нет в любом случае это время, оборудование и деньги.
В качестве «живого» примера установки и работы PqSQL,читайте статью.
Продолжение смотри во второй части…
Полезные ссылки.
- Сайт PostgreSQL
- Форум PostgreSQL
- Документация PostgreSQL