Обслуживание баз кэша списков в СУБД-КС
Скрипт поддерживает СУБД-КС выше версии 13.1.
Если bash-скрипт прервали и при этом заблокировано подключение БД, то для разблокировки используйте:
bash /opt/pgsqlks-15.8/utility/5432/psql.sh -h 127.0.0.1 -c "ALTER DATABASE mydb CONNECTION LIMIT -1;"
Параметр | Описание |
---|---|
15.8 | Версия СУБД-КС. |
5432 | Порт. |
mydb | Имя базы данных, к которой заблокировано подключение. |
1. Скачайте актуальную версию bash-скрипта :
1. Получите root-права.
sudo su
2. Скачайте скрипт Администрирование СУБД-КС.
wget -O /opt/pgsqlks_cache.sh https://keysystems.ru/files/web/Scripts/PG/pgsqlks_cache.sh --no-check-certificate
3. Измените владельца файла и дайте ему права на выполнение.
chown root:root /opt/pgsqlks_cache.sh
chmod 770 /opt/pgsqlks_cache.sh
2. Отредактируйте и сохраните bash-скрипт в редакторе nano.
В ОС из РРПО чаще предустановлена более удобная mcedit.
nano /opt/pgsqlks_cache.sh
а именно, укажите следующие параметры:
pgsqlks_cache.sh
# ========================= Параметры скрипта =========================
pgsqlks_ver="pgsqlks-15.8" # версия pgsqlks
pgsqlks_port="5432" # порт pgsqlks
DbNames="web_cache01:web_cache02" # имена баз через знак ":"
repmgr_is="No" # Yes/No, входит ли сервер в отказоустойчивый кластер
#======================================================================
Если repmgr_is="Yes"
и сервер standby в кластере, то запущенный на нем скрипт не выполняется.
3. Настройте расписание запуска скрипта через Cron.
Задача должна выполняться от имени root.
В данном примере Cron будет выполнять запуск bash-скрипта /opt/pgsqlks_cache.sh
каждый день в 01:00/
pgsqlks_cache.sh
# Измените редактор по умолчанию при необходимости (mcedit либо nano)
export EDITOR=mcedit #редактор mcedit
export EDITOR=nano #редактор nano
crontab -e
#минута час день месяц день_недели root /путь/к/исполняемому/файлу
00 01 * * * bash /opt/pgsqlks_cache.sh
Детальный лог работы скрипта создается в одном каталоге со скриптом и имеет имя вида pgsqlks_cache.sh.log
, предусмотрена ротация лога.
=================================================================
Скрипт "pgsqlks_cache.sh" запущен: 20.03.2025 08:39:42
=================================================================
* СУБД-КС "pgsqlks-15.8_5434" запущен под пользователем "ks-postgres"
* Удаление устаревших сессий СУБД запущено...
DO
[ OK ] : Docker_sql_command_completed
=> БД "web_cache01"
* 20.03.2025 08:39:45: Запрещаем подключения к "web_cache01" ...
ALTER DATABASE
[ OK ] : Docker_sql_command_completed
* 20.03.2025 08:39:46: Удаляем таблицы списков в "web_cache01" ...
[ OK ] : Docker_sql_command_completed
* 20.03.2025 08:39:57: Vacuum full analyze на "web_cache01" запущен ...
VACUUM
[ OK ] : Docker_sql_command_completed
* 20.03.2025 08:40:00: Разрешаем подключения к "web_cache01" .
ALTER DATABASE
[ OK ] : Docker_sql_command_completed
=> БД "web cache02"
* 20.03.2025 08:40:01: Запрещаем подключения к "web_cache02"
ALTER DATABASE
[ OK ] : Docker_sql_command_completed
* 20.03.2025 08:40:02: Удаляем таблицы списков в "web_cache02" ...
[ OK ]: Docker_sql_command_completed
* 20.03.2025 08:40:03: Vacuum full analyze на "web_cache02" запущен ...
VACUUM
[ OK ] : Docker_sql_command_completed
* 20.03.2025 08:40:05: Разрешаем подключения к "web_cache02" .
ALTER DATABASE
[ OK ] : Docker_sql_command_completed
* 20.03.2025 08:40:06: Выполнение скрипта завершено.