Установка СУБД-КС (Docker)

1. Установка СУБД-КС

Загрузим необходимые файлы для установки СУБД-КС в соответствии со своей версией Linux:

cd /opt
wget https://keysystems.ru/files/users/gary/pgsqlks/dks-pgsqlks-16.1_d11.tar.gz --no-check-certificate
chmod +x dks-pgsqlks-16.1_d11.tar.gz
tar -C /opt/ -xvf dks-pgsqlks-16.1_d11.tar.gz

Узнать дополнительные параметры установки можно перейдя в каталог /opt/dks-pgsqlks-16.1/ и выполнив команду:

cd /opt/dks-pgsqlks-16.1
./install.sh --help

1721203728077-481

Установим «СУБД-КС Docker» порт 5432 с паролем «123» на пользователя dbo и postgres в Docker. Сначала определим установленные локали. Для этого выполним команду:

locale -a | grep ru

1721203517730-245

Установка локали ru_RU.utf8 и СУБД:

/opt/dks-pgsqlks-16.1/install.sh -p 5432 -pwd 123 -cs docker -l ru_RU.utf8

Возможные проблемы (следующие действия необходимо выполнить перед началом установки «СУБД-КС Docker»).

Ошибка на этапе построения конечного образа:

OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:297: applying cgroup configuration for process caused \"open /sys/fs/cgroup/docker/a128d2d4e788b100547e0fe2c85f363ea109007b5fb15a9b8f8324a0fdc1d9f8/cpuset.cpus.effective: no such file or directory\"": unknown

Решение: (RedOS MUROM 7.3) Внимание, последняя команда перегрузит хост:
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
reboot

Для изменения пароля учетной записи "dbo" на "123456" (или любой другой) в «СУБД-КС Docker» версии 16.1, работающего на порту 5432 используйте в консоли команду:

bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "ALTER ROLE dbo WITH PASSWORD '123';"

2. Создание БД кэша в докере.

Для создания БД кэша "web_cache" и учетной записи "wc_user" пароль "123" для работы с ней в «СУБД-КС Docker» версии 16.1 работающего на порту 5432 выполним в консоли команду:

bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "create database web_cache;"
bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "CREATE USER wc_user WITH PASSWORD '123';"
bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "GRANT ALL PRIVILEGES ON DATABASE web_cache TO wc_user;"
bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "GRANT ALL ON SCHEMA public TO wc_user;"

Просмотреть информацию о базе web_cache можно так:

bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "SELECT datname As Имя, pg_size_pretty(pg_database_size(pg_database.datname)) As Размер, datacl As Права_доступа FROM pg_database WHERE datname='web_cache' ORDER BY datname asc;"

1721204200528-165

Узнать размер БД кэша "web_cache" в «СУБД-КС Docker» версии 16.1, работающего на порту 5432:

bash /opt/pgsqlks-16.1/utility/5432/psql.sh -h 127.0.0.1 -c "SELECT pg_size_pretty( pg_database_size( 'web_cache' ) );"

3. Команды для управления СУБД-КС Docker.

Просмотр процессов и состояния в контейнере выполняется через запуск скрипта с указание порта как параметра:
bash /opt/dks-pgsqlks-16.1/info.sh -p <порт>
Если параметр не указан, то выводится общая информация по всем существующим контейнерам.
Перезапуск контейнера с инстансом СУБД:

systemctl restart pgsqlks-16.1_5432

Статус контейнера с инстансом СУБД:

systemctl status pgsqlks-16.1_5432

Остановка контейнера с инстансом СУБД:

systemctl stop pgsqlks-16.1_5432.service

Запуск контейнера с инстансом СУБД:

systemctl start pgsqlks-16.1_5432.service

Удаление инстанса СУБД, установленного по порту, выполняется через команду:

bash /opt/dks-pgsqlks-16.1/uninstall.sh –p 5432

4. Администрирование СУБД-КС.

Скрипт pgsqlks_utils.sh позволяет выполнять следующие действия с "СУБД-КС" локально на Linux-сервере:

  • создать backup БД,
  • восстановить БД из backup,
  • выполнить скрипт из SQL-файла (файл должен располагаться в одном каталоге с pgsqlks_utils.sh),
  • удалить БД,
  • переименовать БД (сессии должны быть закрыты),
  • создать копию БД на основе выбранного,
  • получить информацию о СУБД,
  • провести обслуживание БД (дефрагментация, обновление статистики, переиндексация, сжатие, проверка БД),
  • установить Extended Stored Procedures (0999),
  • создать и удалить БД кэша,
  • провести pgbench-ом тест производительности СУБД (https://postgrespro.ru/docs/postgrespro/10/pgbench).
    Некоторые действия выполняются продолжительное время, поэтому используйте менеджер терминалов Tmux (ти-макс). На момент написания статьи Tmux имеется в репозиториях AstraLinux 1.7, AlterOS 7.5, ALT Server 10.1, Debian 11, RedOS 7.2, RedOS 7.3.2, ROSA Enterprise Linux Server 7.3. Установите tmux используя пакетные менеджеры yum, dnf, apt, apt-get.
    В некоторых ОС (замечено в AstraLinux 1.7) tmux-сессия рвется при разрыве соединения. Поэтому следует выполнить следующее:

Создайте и отредактируйте файл /etc/systemd/nano /etc/systemd/logind.conf:
nano /etc/systemd/logind.conf

Исправьте параметр:
KillUserProcesses=no

Перезапустите systemd-logind.service:
systemctl restart systemd-logind

Перед запуском скрипта pgsqlks_utils.sh создайте/присоединитесь к сессии с именем KS. После разрыва соединения к сессии можно снова соединиться той же командой. Дополнительные команды:

tmux ls #получить список сессий
exit #закрыть сессию
tmux kill-session -t KS #закрыть сессию из хоста

Скрипт можно скачать с помощью:

sudo su
wget -O /opt/pgsqlks_utils.sh https://keysystems.ru/files/web/Scripts/PG/pgsqlks_utils.sh --no-check-certificate
chown root:root /opt/pgsqlks_utils.sh
chmod 770 /opt/pgsqlks_utils.sh

Для запуска скрипта можно использовать:

bash /opt/pgsqlks_utils.sh

1721204776046-347