vji:tantor1:start
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
vji:tantor1:start [2025/08/01 07:31] – vji | vji:tantor1:start [2025/08/22 08:26] (текущий) – vji | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Tantor: Базовая архитектура стенда ====== | ====== Tantor: Базовая архитектура стенда ====== | ||
- | |||
===== (Этап 1) Проверка, | ===== (Этап 1) Проверка, | ||
- | ---- | + | > Для инсталляции СУБД Tantor необходимо удостовериться, |
- | + | ||
- | >Для инсталляции СУБД Tantor необходимо удостовериться, | + | |
- | + | ||
- | ---- | + | |
- | >Для практики нам понадобится 6 виртуальных сервера c предустановленной ОС ALSE 1.8 и сетевой связанностью. | + | > Для практики нам понадобится 6 виртуальных сервера c предустановленной ОС ALSE 1.8 и сетевой связанностью. |
> | > | ||
- | > | + | > **tplatform.example** -- сервер для палатформы Tantor (4 cpu / 8гб ram / 40гб HDD) |
- | >**db1 db2 db3** -- сервера для СУБД по (2 cpu / 2гб ram / 20гб HDD) | + | > **db1 db2 db3** -- сервера для СУБД по (2 cpu / 2гб ram / 20гб HDD) |
- | > | + | > **haproxy1 haproxy2** -- для балансировщика по (2 cpu / 2гб ram / 20гб HDD) |
- | ---- | ||
- | >Для платформы Tantor обязательно домен второго уровня, | + | > Для платформы Tantor обязательно домен второго уровня, |
- | ---- | + | > Если планируете проходить практику на своем стенде, |
- | >Если планируете проходить практику на своем стенде, то для создания ВМ платформы Tantor обязательно используем host-passthrough в настройках ВМ гипервизора (прямой доступ к аппаратным ресурсам процессора) с доступам к инструкциям sse и avx. | + | > Иначе не заработает модуль Advanced analytics |
- | > | + | > Как проверить что все хорошо - на вывод команд в CLI на хосте tplatform |
- | + | ||
- | >Как проверить что все хорошо - на вывод команд в CLI на хосте tplatform | + | |
- | + | ||
- | ---- | + | |
Обе инструкции должны выводить ответ: | Обе инструкции должны выводить ответ: | ||
Строка 45: | Строка 35: | ||
Далее с bastion подключаемся на хосты tplatform, db1, db2, db3, haproxy1, haproxy2 | Далее с bastion подключаемся на хосты tplatform, db1, db2, db3, haproxy1, haproxy2 | ||
- | ---- | + | > !!! В рамках практикума подключение без пароля к хостам внутри стенда можно выполнять только с bastion, между узлами недоступно. |
- | + | ||
- | >!!! В рамках практикума подключение без пароля к хостам внутри стенда можно выполнять только с bastion, между узлами недоступно. | + | |
- | ---- | ||
< | < | ||
ssh tplatform | ssh tplatform | ||
Строка 68: | Строка 55: | ||
Обычно он идет в комплекте с графическими окружениями Linux. | Обычно он идет в комплекте с графическими окружениями Linux. | ||
- | > | + | > NetworkManager включен, |
< | < | ||
nmcli device status | nmcli device status | ||
Строка 114: | Строка 101: | ||
source / | source / | ||
</ | </ | ||
- | |||
- | ---- | ||
Проверить синтаксис файла (опционально) без отключения loopback | Проверить синтаксис файла (опционально) без отключения loopback | ||
Строка 162: | Строка 147: | ||
</ | </ | ||
- | ---- | + | > Как правило указаны frozen ветки /uu/* оперативного обновления для того, чтобы не произошло непреднамеренного обновление на самую последнюю версию ОС по ветке, которая может привести к не стабильной работе ПО Tantor. |
+ | > для получения более свежего релиза пакетов достаточно сменить uu/1 на uu/2, сохранить. | ||
+ | > В закрытом сегменте заказчика используются свои репозитории или ISO образы с личного кабинета Астра. | ||
- | >Как правило указаны frozen ветки /uu/* оперативного обновления для того, чтобы не произошло непреднамеренного обновление на самую последнюю версию ОС по ветке, которая может привести к не стабильной работе ПО Tantor. | ||
- | >для получения более свежего релиза пакетов достаточно сменить uu/1 на uu/2, сохранить. | ||
- | >В закрытом сегменте заказчика используются свои репозитории или ISO образы с личного кабинета Астра. | ||
- | |||
- | ---- | ||
< | < | ||
deb https:// | deb https:// | ||
Строка 229: | Строка 211: | ||
</ | </ | ||
- | ---- | + | > Зависимости нужны для Tantor СУБД на хостах db1 db2 db3 |
- | + | ||
- | > | + | |
< | < | ||
sudo apt install libllvm13 libpython3.11 libxsldb1.1 libz3-4 lsof apt-transport-https gnupg -y | sudo apt install libllvm13 libpython3.11 libxsldb1.1 libz3-4 lsof apt-transport-https gnupg -y | ||
</ | </ | ||
- | >При установке пакета СУБД Tantor их сам запросит и установит через сетевой репозиторий. | + | > При установке пакета СУБД Tantor их сам запросит и установит через сетевой репозиторий. |
- | ---- | ||
На хосте tplatform устанавливаем графику и браузер, | На хосте tplatform устанавливаем графику и браузер, | ||
Строка 290: | Строка 269: | ||
iperf -p 5432 -c db3 | iperf -p 5432 -c db3 | ||
</ | </ | ||
- | |||
- | ---- | ||
или через утилиту nmap: | или через утилиту nmap: | ||
- | ---- | + | > -sT |
+ | > -p - номер, проверяемого порта | ||
+ | > <IP адрес> | ||
- | > | ||
- | > | ||
- | ><IP адрес> | ||
- | |||
- | ---- | ||
Пример, | Пример, | ||
Строка 314: | Строка 288: | ||
ss -ntlup | ss -ntlup | ||
</ | </ | ||
- | + | [[vji:tantor2:start|Этап 2 Подготовка]] | |
- | ===== (Этап 2) Подготовка===== | + | |
- | + | ||
- | Скачиваем пакет СУБД Tantor и скрипт инсталятор | + | |
- | [[https:// | + | |
- | + | ||
- | Скачиваем скрипт установки через публичный репозиторий Tantor | + | |
- | Будем работать под root, но можно также и через sudo | + | |
- | < | + | |
- | sudo -i | + | |
- | mkdir distr | + | |
- | cd distr | + | |
- | wget https:// | + | |
- | chmod +x db_installer.sh | + | |
- | </ | + | |
- | + | ||
- | Если закрытый сегмент, | + | |
- | Tantor СУБД нужной версии и скрипт инсталяции предварительно на к себе носитель из: | + | |
- | [[https:// | + | |
- | + | ||
- | be-версия Tantor СУБД для тестового использования можно скачать | + | |
- | [[https:// | + | |
- | + | ||
- | Устанавливаем пакет СУБД Tantor на db1 db2 db3. | + | |
- | [[https:// | + | |
- | + | ||
- | + | ||
- | ==== Установка через доступ интернета be-версия ==== | + | |
- | + | ||
- | Определим репозиторий | + | |
- | < | + | |
- | export NEXUS_URL=" | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | > | + | |
- | > | + | |
- | > | + | |
- | > | + | |
- | > | + | |
- | + | ||
- | ---- | + | |
- | < | + | |
- | ./ | + | |
- | --do-initdb \ | + | |
- | --major-version=16 \ | + | |
- | --edition=be | + | |
- | </ | + | |
- | + | ||
- | Пример установки в фоновом режиме с выводом в лог файл | + | |
- | Конструкция в Linux системах ''" | + | |
- | Работает для любого выполнения команд или скриптов, | + | |
- | рекомендую изучить дополнительно через поиск в интернете работу с Linux CLI | + | |
- | < | + | |
- | nohup ./ | + | |
- | --do-initdb \ | + | |
- | --major-version=16 \ | + | |
- | --edition=be > install_tantor_be_serever.log 2>&1 & | + | |
- | </ | + | |
- | Чтение изменения лога в реальном времени | + | |
- | < | + | |
- | tail -1000f install_tantor_be_serever.log | + | |
- | </ | + | |
- | + | ||
- | ==== Способ установки локально, | + | |
- | + | ||
- | Пример копирования файлов на стенд из практикума | + | |
- | Скачиваем файллы из личного кабинета астры [[https:// | + | |
- | Перейдите в каталог, | + | |
- | < | + | |
- | cd /tmp | + | |
- | </ | + | |
- | Копируем сначала на bastion в /tmp | + | |
- | < | + | |
- | scp -i / | + | |
- | scp -i / | + | |
- | </ | + | |
- | Далее подключившись по ssh на bastion и с него копируем на db1 db2 db3 | + | |
- | < | + | |
- | ssh -i / | + | |
- | cd /tmp | + | |
- | scp tantor-be-server-16_16.8.0_amd64.deb tantor@db1:/ | + | |
- | scp db_installer.sh tantor@db1:/ | + | |
- | scp tantor-be-server-16_16.8.0_amd64.deb tantor@db2:/ | + | |
- | scp db_installer.sh tantor@db2:/ | + | |
- | scp tantor-be-server-16_16.8.0_amd64.deb tantor@db3:/ | + | |
- | scp db_installer.sh tantor@db2:/ | + | |
- | </ | + | |
- | Подключаемся через bastion к хостам db1, db2, db3 | + | |
- | < | + | |
- | ssh db1 | + | |
- | sudo -i | + | |
- | cd /tmp | + | |
- | chmod +x db_installer.sh | + | |
- | </ | + | |
- | Установка пакета через скрипт с инициализацией БД | + | |
- | < | + | |
- | ./ | + | |
- | --from-file=/ | + | |
- | --do-initdb | + | |
- | </ | + | |
- | + | ||
- | ==== После установки пакета СУБД, назначаем права пользователя postgres на структуру каталогов на хостах | + | |
- | < | + | |
- | sudo chown -R postgres: | + | |
- | </ | + | |
- | Сменим пароль на УЗ postgres в операционной системе на хостах | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | > | + | |
- | + | ||
- | ---- | + | |
- | < | + | |
- | sudo passwd postgres | + | |
- | </ | + | |
- | Посмотрим информацию о БД | + | |
- | < | + | |
- | sudo -iu postgres pg_controldata / | + | |
- | </ | + | |
- | посмотреть процесс работы инстанса | + | |
- | < | + | |
- | sudo -iu postgres cat / | + | |
- | sudo -iu postgres psql -c " | + | |
- | </ | + | |
- | + | ||
- | Допускается установка нескольких экземпляра разной версии СУБД на один узел. | + | |
- | При этом название экземпляров, | + | |
- | + | ||
- | ==== Проверка службы и автозагрузка сервиса СУБД Tantor. ==== | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | > | + | |
- | >status - показать запущен (loaded) сервис и его состояние (active) работает | + | |
- | + | ||
- | ---- | + | |
- | < | + | |
- | sudo systemctl enable tantor-be-server-16.service | + | |
- | sudo systemctl status tantor-be-server-16.service | + | |
- | </ | + | |
- | Посмотреть запущенные процессы | + | |
- | < | + | |
- | ps -efH | grep tantor | + | |
- | </ | + | |
- | Проверка запуска сервиса СУБД Tantor по журналам | + | |
- | Проверка осуществляется запуском утилиты journalctl с ключем -u , казывающим наименование сервиса, | + | |
- | < | + | |
- | sudo journalctl -u tantor-be-server-16.service | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | > | + | |
- | >По умолчанию сетевые настройки в файле pg_hba.conf позволяют подключиться только суперпользователю postgres СУБД Tantor непосредственно с сервера через **local unix socket**. | + | |
- | >Для разрешения подключения с других узлов необходимо внести соответствующие строки в файлы **pg_hba.conf** и postgresql.conf. | + | |
- | >В конце листинга есть **FAQ** доп информация: | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== (Этап | + | |
- | + | ||
- | Скачиваем и Распаковываем архив с Платформой Tantor. | + | |
- | [[https:// | + | |
- | + | ||
- | ==== Способ при наличии доступа в интернет ==== | + | |
- | + | ||
- | Загрузим инсталлятор на хост tplatform согласно документации. | + | |
- | Всегда смотрите новую версию по ссылке выше. | + | |
- | < | + | |
- | sudo -i | + | |
- | mkdir distr | + | |
- | cd distr | + | |
- | wget https:// | + | |
- | </ | + | |
- | Распакуем из архива | + | |
- | < | + | |
- | tar -xvf tantor-eco-5.3.0.tar.gz | + | |
- | </ | + | |
- | + | ||
- | ==== Способ, | + | |
- | + | ||
- | Скачиваем файллы из личного кабинета астры [[https:// | + | |
- | < | + | |
- | cd /tmp | + | |
- | wget https:// | + | |
- | </ | + | |
- | Пример копирования файлов на стенд tplatform из практикума | + | |
- | Копируем сначала на bastion в /tmp | + | |
- | < | + | |
- | scp -i / | + | |
- | </ | + | |
- | Далее подключившись по ssh на bastion и с него копируем на tplatform | + | |
- | < | + | |
- | ssh -i / | + | |
- | cd /tmp | + | |
- | scp tantor-eco-5.3.0.tar.gz tantor@tplatform:/ | + | |
- | </ | + | |
- | Далее с bastion хоста подключаемся на хост tplatform | + | |
- | < | + | |
- | ssh tplatform | + | |
- | sudo -i | + | |
- | cd /tmp | + | |
- | </ | + | |
- | Распакуем из архива | + | |
- | < | + | |
- | tar -xvf tantor-eco-5.3.0.tar.gz | + | |
- | </ | + | |
- | + | ||
- | ==== Инсталяция Платформы Tantor. ==== | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | [[https:// | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | Для установки Платформы на Astra Linux версии 1.8.2 необходимо переключить уровень безопасности для docker на astra-sec-level-6 | + | |
- | < | + | |
- | sudo mkdir -p / | + | |
- | sudo nano / | + | |
- | </ | + | |
- | Вставляем и сохраняем | + | |
- | < | + | |
- | { | + | |
- | " | + | |
- | " | + | |
- | } | + | |
- | </ | + | |
- | Перезапускаем службу docker | + | |
- | < | + | |
- | sudo systemctl restart docker | + | |
- | </ | + | |
- | Запуск установки из каталога, | + | |
- | < | + | |
- | sudo ./ | + | |
- | </ | + | |
- | В ходе интерактивной установки будут запрошены данные: | + | |
- | ^ Параметр ^ Значение ^ Описание ^ | + | |
- | | **Tantor Platform administrator email:** | < | + | |
- | | **Tantor Platform administrator name:** | < | + | |
- | | **Tantor Platform domain name:** | < | + | |
- | | **SSL certificates match domain name**: | N | Cертификаты SSL для имени домена Платформы, | + | |
- | | **Сreate the self-signed certificates: | + | |
- | | **set integration with SMTP server:** | N | Настройки сервера почты в рамках практикума пропускаем | | + | |
- | + | ||
- | если бы указывали настройки сервера почты: | + | |
- | ^ Параметр ^ Описание ^ | + | |
- | | **SMTP server domain name:** | доменное имя сервера электронной почты, если имеется, | + | |
- | | **SMTP server domain name port** | порт сервера электронной почты | | + | |
- | | **SMTP server user email** | имя постового ящика на который будут отправляться оповещения от Платформы Tantor | | + | |
- | | **SMTP server user password** | пароль почтового ящика | | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | > | + | |
- | + | ||
- | ---- | + | |
- | ^ Параметр ^ Описание ^ | + | |
- | | **Which platform setup deployment you want to install? (1/2/3):** 3 | выбор конфигурации Платформы Tantor | | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | > | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | + | ||
- | ==== Подключение к Платформе, | + | |
- | + | ||
- | подключаемся по RDP на хост tplatform и выполняем выше указанные действия в браузере. | + | |
- | Доступ по RDP на tplatform < | + | |
- | '' | + | |
- | '' | + | |
- | + | ||
- | * Первое подключение к Платформе с помощью браузера, | + | |
- | * Согласиться с политикой лицензирования и нажать Ок | + | |
- | * Установить новый пароль суперпользователя Платформы | + | |
- | * Зайти в тенант | + | |
- | * Создать новое рабочее пространство New workspace (имя произвольно) | + | |
- | + | ||
- | ==== Проверки успешности установки и запуска сервисов Платформы. | + | |
- | Состояние контейнеров Платформы можно посмотреть командами. ==== | + | |
- | + | ||
- | ## Убедиться, | + | |
- | + | ||
- | docker ps | + | |
- | + | ||
- | ## Если необходимо перезагрузить платформу | + | |
- | + | ||
- | cd / | + | |
- | docker-compose stop | + | |
- | docker-compose start | + | |
- | docker-compose ps | + | |
- | + | ||
- | ## Порты на узле Платформы | + | |
- | + | ||
- | ss -ntlup | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Запуск утилиты диагностики для Платформы sdc-tantor, идет в комплекте архива. | + | |
- | В случае неудачного завершения установки или обновления платформы. | + | |
- | https:// | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | cd distr | + | |
- | + | ||
- | chmod 755 ./ | + | |
- | + | ||
- | ./ | + | |
- | + | ||
- | ## Архив создан и сохранён в: | + | |
- | ## sdc-report_tplatform_20250620_163622.tar.gz | + | |
- | ## Будет выполнен сбор системной конфигурации и диагностической информации | + | |
- | ## в основном о работе докер контейнеров и информации о хосте. | + | |
- | ## Приложите этот файл в созданную в техническую поддержку заявку. | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | (этап 4) | + | |
- | + | ||
- | Для установки агента Tantor и последующем добавлении инстанса СУБД в платформу | + | |
- | необходимо перейти на сервер СУБД и произвести предложенные Платформой действия. | + | |
- | https:// | + | |
- | + | ||
- | !! Установку агента всегда начинаем на лидере в кластере !! | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | 1. Открыть рабочее пространство в Платформе | + | |
- | 2. Добавить новый инстанс (сервер СУБД) Add instance | + | |
- | 3. Выбрать тип инстанса (в наше примере Tantor) | + | |
- | 4. Указать IP адрес, порт и имя БД | + | |
- | 5. Платформа сообщает, | + | |
- | 6. Далее необходимо выполнить ряд предлагаемых Платформой действий на узле сервера СУБД, для исключения ошибки скопировать | + | |
- | каждое действие в буфер можно кликнув на пиктограмму в конце каждой строки. | + | |
- | + | ||
- | ## Узнаем IP адрес нашего сервера СУБД | + | |
- | + | ||
- | ip a | + | |
- | + | ||
- | ## пример вывода: | + | |
- | + | ||
- | inet 10.2.0.11/ | + | |
- | + | ||
- | ## Установка PMA агента Платформы Tantor при условии если везде вход по паролю | + | |
- | ## и через графический интерфейс команда не проходит, | + | |
- | ## читайте оф документацию https:// | + | |
- | ## пример: | + | |
- | + | ||
- | pmaagent configure --config_postgres_patroni -h 10.2.0.11 -p 5432 -d postgres -U postgres -W postgres -P 8008 -D | + | |
- | + | ||
- | ## дополнительно смотрите тех документацию по ссылке выше, | + | |
- | ## а также help агента после его установки | + | |
- | + | ||
- | pmaagent --help | + | |
- | pmaagent instances add --help | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Проверка службы старта агента. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | sudo systemctl daemon-reload | + | |
- | sudo systemctl start pmaagent.service | + | |
- | sudo systemctl status pmaagent.service | + | |
- | + | ||
- | ## Если нет связи с агентом, | + | |
- | + | ||
- | systemctl stop pmaagent.service | + | |
- | systemctl start pmaagent.service | + | |
- | + | ||
- | ## Конфиг агента | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## Лог агента | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Установка дополнительных элементов для взаимодействия Птатформы и СУБД. | + | |
- | (расширений / EXTENSION в СУБД Tantor) | + | |
- | (pg_stat_statements, | + | |
- | https:// | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Для работы Advanced analytics, создание ключей RSA под root на сервере tplatform | + | |
- | + | ||
- | sudo -i | + | |
- | ssh-keygen -t rsa | + | |
- | + | ||
- | ## Скопируйте в нужные директории созданные ключи следующей командой: | + | |
- | + | ||
- | cp / | + | |
- | + | ||
- | ## Скопируйте созданный публичный ключ на сервер базы данных, | + | |
- | + | ||
- | ssh-copy-id -i / | + | |
- | ssh-copy-id -i / | + | |
- | ssh-copy-id -i / | + | |
- | + | ||
- | ## Проверьте возможность зайти на сервер базы данных с помощью добавленного ключа: | + | |
- | + | ||
- | ssh postgres@db1 | + | |
- | ssh postgres@db2 | + | |
- | ssh postgres@db3 | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Настройка параметров и расширений / EXTENSION на наблюдаемой СУБД: | + | |
- | pg_stat_statements, | + | |
- | + | ||
- | Текущий вариант через "alter system set", создаст отдельный файл | + | |
- | / | + | |
- | который будет преобладать в приоритете при запуске СУБД над файлом postgresql.conf, | + | |
- | что очень удобно, | + | |
- | Данный способ работает только в рамках текущего сервера СУБД в standalone. | + | |
- | + | ||
- | В отказоустойчивых кластерах типа Patroni, необходимо использовать единую конфигурацию для всех узлов. | + | |
- | Также данные настройки можно применить с помощью Платформы через модуль Конфигурации. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Подключаемся к одному из серверов, | + | |
- | ## В дальнейшем эти операции нужно выполнить на каждой наблюдаемой БД. | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | + | ||
- | ## Выполняем команды на создание расширений и параметров: | + | |
- | ## Если в параметре shared_preload_libraries уже указаны другие расширения, | + | |
- | ## то добавить pg_stat_statements, | + | |
- | + | ||
- | create EXTENSION pg_stat_statements; | + | |
- | create EXTENSION pg_store_plans; | + | |
- | alter system set shared_preload_libraries = pg_stat_statements, | + | |
- | alter system set logging_collector = on; | + | |
- | alter system set log_line_prefix = '%m [%p:%v] [%d] %r %a '; | + | |
- | alter system set log_lock_waits = on; | + | |
- | alter system set lc_messages = ' | + | |
- | alter system set track_io_timing = on; | + | |
- | alter system set deadlock_timeout = 1000; | + | |
- | alter system set log_min_duration_statement = 1000; | + | |
- | alter system set log_filename = ' | + | |
- | alter system set log_destination = ' | + | |
- | alter system set log_statement = ' | + | |
- | + | ||
- | ## Перезагрузка СУБД и проверка сервиса СУБД, должно быть active (running) | + | |
- | + | ||
- | sudo systemctl restart tantor-be-server-16.service | + | |
- | sudo systemctl status tantor-be-server-16.service | + | |
- | + | ||
- | ## Добавляем параметры auto_explain | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | + | ||
- | alter system set pg_store_plans.min_duration = 1000; | + | |
- | alter system set auto_explain.log_min_duration = 1000; | + | |
- | alter system set auto_explain.log_nested_statements = ' | + | |
- | alter system set auto_explain.log_analyze = on; | + | |
- | alter system set auto_explain.log_buffers = on; | + | |
- | SELECT pg_reload_conf(); | + | |
- | + | ||
- | ## Сколько параметров установлено в файлах параметров конфигурации | + | |
- | + | ||
- | select sourcefile, count(*) from pg_settings group by sourcefile; | + | |
- | + | ||
- | ## Какие параметры из каких файлов конфигурации были считаны и применены при запуске экземпляра | + | |
- | ## Так же через этот вывод можно проверить себя, правильно ли вы задали параметры до перезагрузки СУБД. | + | |
- | + | ||
- | select name, setting, substring(sourcefile, | + | |
- | + | ||
- | ## Для корректной работы модуля Advanced Analytics | + | |
- | ## требуется добавить следующее разрешение в файле pg_hba.conf: | + | |
- | + | ||
- | nano / | + | |
- | + | ||
- | ---------------------------------------------------------------------- | + | |
- | host postgres | + | |
- | ---------------------------------------------------------------------- | + | |
- | + | ||
- | ## Чтобы новые параметры pg_hba.conf применились, | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | ## или restart наблюдаемой СУБД. | + | |
- | sudo systemctl restart tantor-be-server-16.service | + | |
- | + | ||
- | ## Чтобы изменения вступили в силу для Advanced analytics, на сервере tplatform перезапустите контейнер | + | |
- | + | ||
- | docker restart pg_monitor_collector | + | |
- | + | ||
- | ## Посмотрите рузултат в Платформе, | + | |
- | ## Должны появится графики | + | |
- | ## В модуле Advanced analytics инстансом БД также должны появиться данные | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Ротация и очистка логов СУБД Tantor / | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Эти параметры уже заданы, | + | |
- | ## Для просмотра или изменения можно использовать Платформу Tantor | + | |
- | ## или командами в psql: | + | |
- | ## alter system set < | + | |
- | ## show < | + | |
- | + | ||
- | logging_collector = on # Включение сбора логов | + | |
- | log_directory = ' | + | |
- | log_filename = ' | + | |
- | log_rotation_age = 1d # Ротация ежедневно | + | |
- | log_rotation_size = 10MB # Или при достижении размера | + | |
- | + | ||
- | ## Посмотреть логи по примеру, | + | |
- | + | ||
- | less / | + | |
- | + | ||
- | ## Даем привилегии УЗ postgres на использование crontab | + | |
- | + | ||
- | sudo usermod -aG crontab postgres | + | |
- | + | ||
- | ## Логинимся под УЗ postgres | + | |
- | + | ||
- | su - postgres | + | |
- | + | ||
- | ## Создаем скрипт очистки | + | |
- | ## Вставляем строки, | + | |
- | ## Не забудьте указать правильный путь на ваши логи. | + | |
- | + | ||
- | nano cleanup_logs.sh | + | |
- | + | ||
- | ----------------------------------------------------------------------------------------------- | + | |
- | # | + | |
- | find / | + | |
- | find / | + | |
- | ----------------------------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Применяем бит исполнения файла скрипта | + | |
- | + | ||
- | chmod +x cleanup_logs.sh | + | |
- | + | ||
- | ## Вставляем задание на выполнение в cron, сохраняем и проверяем. | + | |
- | + | ||
- | crontab -e | + | |
- | + | ||
- | ------------------------------------------------------------------------------- | + | |
- | 0 0 * * * / | + | |
- | ------------------------------------------------------------------------------- | + | |
- | + | ||
- | ## проверяем, | + | |
- | + | ||
- | crontab -l | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | (этап 5 по желанию) | + | |
- | + | ||
- | Настройка репликации встроенными инструментами СУБД (ручной Failover/ | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | Выполняется на Master db1 10.2.0.11 : | + | |
- | ----------------------------------------------------- | + | |
- | + | ||
- | ## Создадим отдельного пользователя для репликации repl - имя пользователя | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | CREATE ROLE repl WITH REPLICATION LOGIN ENCRYPTED PASSWORD ' | + | |
- | \password | + | |
- | + | ||
- | ## Правим строчку в pg_hba, тут со стороны заказчика нужно указать, | + | |
- | ## Правило подключения, | + | |
- | ## Можно оставить так. | + | |
- | + | ||
- | ## !!! | + | |
- | ## чтобы не мучиться с корректировкой настроек после pg_rewind, для repl можно указать всю подсеть 10.2.0.0/ | + | |
- | + | ||
- | sudo nano / | + | |
- | + | ||
- | --------------------------------------------------------------------------- | + | |
- | host replication | + | |
- | host all | + | |
- | --------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Добавляем параметры, | + | |
- | + | ||
- | nano / | + | |
- | ## или через psql, параметры запишутся в postgresql.auto.conf | + | |
- | sudo -iu postgres psql | + | |
- | + | ||
- | alter system set listen_addresses = ' | + | |
- | alter system set wal_level = replica; | + | |
- | alter system set wal_log_hints = on; | + | |
- | alter system set max_wal_senders = 10; | + | |
- | alter system set fsync = on; | + | |
- | alter system set synchronous_commit = on; | + | |
- | alter system set hot_standby = on; | + | |
- | alter system set hot_standby_feedback = on; | + | |
- | alter system set synchronous_standby_names = '1 (db1, db2)'; -- для async репликации оставьте пустое значение | + | |
- | alter system set max_replication_slots = 10; | + | |
- | alter system set wal_keep_size = ' | + | |
- | + | ||
- | ## После внесение изменений перезапускаем сервис | + | |
- | + | ||
- | sudo systemctl restart tantor-be-server-16.service | + | |
- | + | ||
- | ----------------------------------------------------- | + | |
- | Выполняем на Replica сервере db2 10.2.0.12 : | + | |
- | ----------------------------------------------------- | + | |
- | + | ||
- | systemctl stop tantor-be-server-16.service | + | |
- | su - postgres | + | |
- | cd / | + | |
- | + | ||
- | ## Сохраним архивную копию папки data если потребуется для восстановления или удаляем | + | |
- | + | ||
- | tar -cvzf main_backup-`date +%s`.tgz data | + | |
- | rm -rf data/ | + | |
- | + | ||
- | ## Переносим папку data c Master сервера на Реплику с созданием слота репликации -C -S db2_replica: | + | |
- | + | ||
- | export PGAPPNAME=db2 | + | |
- | pg_basebackup -h db1 -U repl -p 5432 -D data -R -X stream -C -S db2_replica -c fast -P | + | |
- | ## PASSWORD ' | + | |
- | + | ||
- | ## Проверяем, | + | |
- | + | ||
- | ls -la data/ | + | |
- | + | ||
- | ## Исправим на правильный listen_addresses | + | |
- | ## Если указывали listen_addresses = ' | + | |
- | + | ||
- | nano / | + | |
- | ## или | + | |
- | nano / | + | |
- | + | ||
- | listen_addresses = ' | + | |
- | + | ||
- | ## Корректируем правило в pg_hba.conf, | + | |
- | ## db1 смог подключаться к db2. | + | |
- | ## Если указывали 10.2.0.0/ | + | |
- | + | ||
- | nano / | + | |
- | --------------------------------------------------------------------------- | + | |
- | host replication | + | |
- | --------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Запустим сервис | + | |
- | + | ||
- | sudo systemctl start tantor-be-server-16.service | + | |
- | sudo systemctl status tantor-be-server-16.service | + | |
- | + | ||
- | ## На мастере db1 10.2.0.11 проверить реплику | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | + | ||
- | ## На реплике db2 10.2.0.12 , вывод должен быть true | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | SELECT pg_is_in_recovery();" | + | |
- | + | ||
- | ## Проверим репликацию, | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | + | ||
- | ## Проверим на реплике db2 10.2.0.12 | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Смена лидера. (меняем роли местами мастер -> реплику). | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Проверить статус репликации на db2 10.2.0.12 | + | |
- | ## Должно вернуть true (реплика в режиме восстановления) | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | SELECT pg_is_in_recovery(); | + | |
- | + | ||
- | ## Проверить отставание на db2 10.2.0.12 | + | |
- | + | ||
- | SELECT pg_last_wal_receive_lsn(), | + | |
- | + | ||
- | ## смотрим статус синхронизации на мастере db1 10.2.0.11 | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | \x | + | |
- | SELECT * FROM pg_stat_replication; | + | |
- | + | ||
- | ## Перед переключением мастера на реплику, | + | |
- | ## записи СУБД на мастере db1, чтобы избежать потери данных. Это можно сделать с помощью команды: | + | |
- | + | ||
- | ALTER SYSTEM SET default_transaction_read_only = ON; | + | |
- | SELECT pg_reload_conf(); | + | |
- | + | ||
- | ## На реплике выполните db2 10.2.0.12 | + | |
- | ## Относительно видео - скорректировано создание слота репликации db1_replica | + | |
- | + | ||
- | SELECT pg_promote(); | + | |
- | SELECT pg_is_in_recovery(); | + | |
- | SELECT * FROM pg_create_physical_replication_slot(' | + | |
- | SELECT slot_name, slot_type FROM pg_replication_slots; | + | |
- | + | ||
- | ## Остановить сервис tantor на мастере db1 10.2.0.11 | + | |
- | + | ||
- | sudo systemctl stop tantor-be-server-16.service | + | |
- | + | ||
- | ## выполняем догон db1 10.2.0.11 , новой реплики относительно нового мастера. | + | |
- | ## Делаем pg_rewind под УЗ postgres, так как пользователь должен иметь права с доступом к функции pg_read_binary_file. | + | |
- | ## либо при создании УЗ repl дать привилегии, | + | |
- | ## GRANT EXECUTE ON FUNCTION pg_read_binary_file(text, | + | |
- | ## В PostgreSQL доступ к функции pg_read_binary_file ограничен по соображениям безопасности, | + | |
- | ## так как она позволяет читать произвольные файлы на сервере. | + | |
- | ## Обычно только суперпользователи (superuser) имеют к ней доступ. | + | |
- | + | ||
- | su - postgres | + | |
- | pg_rewind --target-pgdata=/ | + | |
- | + | ||
- | ## Создайте файл standby.signal db1 10.2.0.11 | + | |
- | + | ||
- | touch / | + | |
- | rm -f / | + | |
- | + | ||
- | ## Настроить старый мастер db1 10.2.0.11 как новую реплику. | + | |
- | ## Отредактируем строчки в файле | + | |
- | ## primary_slot_name = ' | + | |
- | ## host=db2 , application_name=db1 | + | |
- | + | ||
- | nano / | + | |
- | + | ||
- | -------------------------------------------------------------------------------------------------------- | + | |
- | primary_conninfo = ' | + | |
- | + | ||
- | primary_slot_name = ' | + | |
- | -------------------------------------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Корректируем правило в pg_hba.conf, | + | |
- | ## db2 смог подключаться к db1. | + | |
- | ## Если указывали 10.2.0.0/ | + | |
- | + | ||
- | nano / | + | |
- | + | ||
- | --------------------------------------------------------------------------- | + | |
- | host replication | + | |
- | --------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Запустить сервис tantor на db1 10.2.0.11 | + | |
- | + | ||
- | sudo systemctl start tantor-be-server-16.service | + | |
- | + | ||
- | ## Проверим | + | |
- | ## на новом мастере db2 10.2.0.12: | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | + | ||
- | ## На новой реплике db1 10.2.0.11: | + | |
- | + | ||
- | sudo -iu postgres psql -c " | + | |
- | SELECT pg_is_in_recovery();" | + | |
- | + | ||
- | ## Если мы хотим полностью разделить БД и сделать самостоятельными: | + | |
- | ## synchronous_commit = off делать ненужно, | + | |
- | ## отключает синхронную фиксацию записи данных транзакции на диск, | + | |
- | ## нарушит надежность сохранности данных. | + | |
- | + | ||
- | SELECT pg_promote(); | + | |
- | alter system set synchronous_standby_names = ''; | + | |
- | SELECT pg_reload_conf(); | + | |
- | SELECT | + | |
- | select pg_drop_replication_slot(' | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | (этап 6) | + | |
- | + | ||
- | Вариант сценария проведения нагрузочного тестирования. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | Нагрузочное тестирование предназначено для проверки того, как cистема будет | + | |
- | работать под большим количеством пользователей, | + | |
- | ограниченного периода времени, | + | |
- | Количество моделируемых пользователей аналогично ожидаемому объему нагрузки | + | |
- | пользователей в реальной жизни. Проверяется время отклика Системы, | + | |
- | обнаруживаются узкие места и различные ошибки, | + | |
- | как проблемы с кодом и утечки памяти. | + | |
- | Тестирование позволяет определить какое количество пользователей может | + | |
- | обработать Система, | + | |
- | + | ||
- | TPC-B , TPC-C (OLTP-систем (онлайн-транзакционная обработка)) | + | |
- | -- эталонный тест, используется для стресс-тестирования пиковой | + | |
- | пропускной способности базы данных, | + | |
- | состоящую из нескольких пользовательских сеансов, | + | |
- | со значительной активностью дискового ввода-вывода, | + | |
- | любых сетевых и интерактивных операций, | + | |
- | измерение пропускной способности; | + | |
- | + | ||
- | TPC-H (OLAP-систем (онлайн-аналитическая обработка)) | + | |
- | -- эталонный тест, эмулирующий работу приложений бизнес-аналитики, | + | |
- | состоит из набора бизнес-ориентированных специальных запросов и | + | |
- | одновременных модификаций данных, | + | |
- | выполняют запросы высокой степени сложности. | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | + | ||
- | 1. pgbench -- программа для запуска эталонных тестов на PostgreSQL, | + | |
- | выполняет последовательность команд SQL, вычисляет среднюю | + | |
- | скорость транзакций (транзакций в секунду), | + | |
- | основанный на TPC-B, включающий пять команд SELECT, UPDATE и INSERTна транзакцию, | + | |
- | также ПО позволяет протестировать собственный сценарий транзакций; | + | |
- | + | ||
- | 2. go-tpc -- набор инструментов тестирования рабочих нагрузок на основе | + | |
- | тестов TPC для СУБД PostgreSQL, выполняющий тест TPC-H. | + | |
- | https:// | + | |
- | + | ||
- | 3. sysbench -- это универсальный инструмент для стресс-тестирования | + | |
- | + | ||
- | 4. HammerDB -- поддерживающее TPC-C, TPC-H и другие сценарии. для само изучения | + | |
- | более профессиональный инструмент | + | |
- | https:// | + | |
- | https:// | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Пример использования pgbench. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | su - postgres | + | |
- | + | ||
- | pgbench --help | + | |
- | + | ||
- | ## Создаем пустую БД для тестирования | + | |
- | + | ||
- | psql -c " | + | |
- | + | ||
- | ## Размер БД может быть изменен согласно запросу Заказчика до необходимого значения, | + | |
- | ## Наполняем данными 1 гб (по требованию заказчика) | + | |
- | ## -i – опция инициализации; | + | |
- | ## необходимые таблицы и загрузит тестовыми данными базу данных. | + | |
- | ## -s 68 – параметр scale factor, определяет объём данных. | + | |
- | ## 100 000 ? 68 = 6 800 000 строк. | + | |
- | + | ||
- | pgbench -h localhost -d tesdb2 -U postgres -i -s 68 | + | |
- | + | ||
- | ## Проверяем размер создавшейся БД | + | |
- | ## Можно посмотреть результат в Платформе Tantor. | + | |
- | + | ||
- | psql -c "\l+ tesdb2" | + | |
- | + | ||
- | ## Выполняем эмуляцию нагрузки | + | |
- | + | ||
- | pgbench -h localhost -p 5432 -c 90 -j 2 -t 100 tesdb2 ## 90 пользователей, | + | |
- | + | ||
- | pgbench -c 90 -j 25 -P 60 -T 200 tesdb2 | + | |
- | pgbench -n -c 90 -j 25 -T 200 tesdb2 -b select-only | + | |
- | + | ||
- | ## -c — количество конкурентных подключений | + | |
- | ## -P — вывод информации каждые * сек | + | |
- | ## -T — длительность теста в сек | + | |
- | ## -j — число потоков | + | |
- | ## -n — не запускать VACUUM перед тестом. | + | |
- | + | ||
- | TPS #могут варьироваться в зависимости от конфигурации системы, | + | |
- | + | ||
- | Latency # | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Пример использования sysbench. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Установка | + | |
- | + | ||
- | sudo apt install sysbench | + | |
- | sysbench --help | + | |
- | + | ||
- | ## Создание тестовой БД | + | |
- | + | ||
- | sudo -iu postgres createdb testdb2 | + | |
- | + | ||
- | ## Инициализация данных в СУБД через локальное соединение: | + | |
- | + | ||
- | sysbench oltp_common --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 prepare | + | |
- | + | ||
- | ## Проведение теста: | + | |
- | ## Сценарии oltp_read_write, | + | |
- | ## --threads – число параллельных потоков (клиентов). | + | |
- | ## --time – общее время теста в секундах. | + | |
- | + | ||
- | sysbench oltp_read_write --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 --threads=10 --time=300 run | + | |
- | + | ||
- | ## Очистка: | + | |
- | + | ||
- | sysbench oltp_common --db-driver=pgsql --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=testdb2 --tables=10 --table-size=100000 cleanup | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Пример использования go-tpc. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Установка https:// | + | |
- | ## Подготовка БД для модели аналитических запросов | + | |
- | + | ||
- | go-tpc tpch prepare -d postgres -U postgres -p ' | + | |
- | + | ||
- | ## Запуск эмуляции аналитического запроса | + | |
- | + | ||
- | go-tpc tpch run -d postgres -U postgres -p ' | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | FAQ доп информация, | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Для удобства отображения в psql редактируем содержание файла подсказки .psqlrc (~/ | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Рекомендуется также настроить подсказку командного интерпретатора СУБД | + | |
- | ## и вывести информацию по серверу, | + | |
- | ## Настраиваем вид подсказки в файле .psqlrc в домашнем каталоге пользователя postgres при подключении к СУБД. | + | |
- | ## переходим под пользователя postgres | + | |
- | + | ||
- | sudo su - postgres | + | |
- | + | ||
- | ## Редактируем конфигурационный файл | + | |
- | + | ||
- | nano ~/.psqlrc | + | |
- | + | ||
- | ## Добавляем в файл .psqlrc строку | + | |
- | ## пример цветной промпт | + | |
- | + | ||
- | \set PROMPT1 ' | + | |
- | \set PROMPT2 ' | + | |
- | + | ||
- | ## Сохраняем и вызываем psql для провеки | + | |
- | + | ||
- | psql | + | |
- | + | ||
- | ## если мы работаем из под другого пользователя в системе с правами sudo, | + | |
- | ## то можно подключиться к БД по локальному соединению так | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | + | ||
- | ## Пояснение для подсказки ' | + | |
- | ## \set PROMPT1 ' | + | |
- | + | ||
- | %M имя хоста сервера баз данных отображается «[local]», | + | |
- | %> прослушиваемый порт | + | |
- | %n имя пользователя сеанса | + | |
- | %/ текущая база данных | + | |
- | %R находитесь ли вы в однострочном режиме (^) или отключены (!), но обычно = | + | |
- | %# являетесь ли вы суперпользователем (#) или обычным пользователем (>) | + | |
- | %x статус транзакции - обычно пусто, если только не в блоке транзакции (*) | + | |
- | + | ||
- | ## Пример вывода командной строки с подсказкой для сервера СУБД с IP 10.2.0.11, | + | |
- | ## работающем на порту 5432, для пользователя postgres и БД test | + | |
- | + | ||
- | 10.2.0.11: | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Cписок команд psql которые часто используются. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | \l ## список БД | + | |
- | \dt ## список таблиц | + | |
- | \du ## список пользователей | + | |
- | \db ## список табличных пространств | + | |
- | \dn ## список схемы | + | |
- | + | ||
- | \dx ## список установленных расширений | + | |
- | \dx+ pg_stat_statements | + | |
- | SELECT * FROM pg_available_extensions; | + | |
- | + | ||
- | \d table_name | + | |
- | \c db_name | + | |
- | \password user ## смена пароля УЗ в БД | + | |
- | \d+ pg_stat_wal_receiver | + | |
- | \x ## задать параметр вывода следующим select таблицы по вертикали в читаемом виде, чтобы отключить также \x | + | |
- | select tantor_version(); | + | |
- | + | ||
- | ## эти переменные также можно указать в .psqlrc | + | |
- | + | ||
- | \pset pager on ## вкл постраничный пейджер, | + | |
- | \pset pager off ## выкл постраничный пейджер | + | |
- | \pset pager ## статус постраничный пейджер | + | |
- | \pset linestyle unicode | + | |
- | \pset border 2 | + | |
- | export PAGER=' | + | |
- | + | ||
- | Остальное само изучение или курсы по DBA1, DBA2 | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Доп утилиты в ОС для работы с postgres, которые начинаются на pg* | + | |
- | https:// | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | sudo su - postgres | + | |
- | + | ||
- | psql | + | |
- | pg_ctl | + | |
- | pg_basebackup --help | + | |
- | pg_dumpall | + | |
- | pg_dump | + | |
- | pg_upgrade | + | |
- | pg_isready | + | |
- | + | ||
- | vacuumlo | + | |
- | (вычистки) осиротевших больших объектов из баз данных кластера. Автоматизировать удаление осиротевших больших | + | |
- | | + | |
- | | + | |
- | + | ||
- | pg_config --sharedir ## директория с файлами расширения | + | |
- | ls -la / | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Если psql не запускается под пользователем postgres (bash: psql: команда не найдена), | + | |
- | значит в переменной окружения path отсутствует путь до / | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## редактируем переменную окружения | + | |
- | + | ||
- | nano ~/.bashrc | + | |
- | + | ||
- | ## добавляем и сохраняем | + | |
- | + | ||
- | export PATH=/ | + | |
- | + | ||
- | ## Перезапускаем оболочку | + | |
- | + | ||
- | exec bash | + | |
- | + | ||
- | ## Проверяем подключение, | + | |
- | + | ||
- | psql -p 5432 -h localhost -U postgres | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | !!! При необходимости, | + | |
- | Настройки правил подключения к БД. | + | |
- | Документация по настройке pg_hba.conf: | + | |
- | https:// | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | sudo nano / | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | !!! При необходимости, | + | |
- | По умолчанию в параметрах конфигурации в файле postgresql.conf сервера СУБД | + | |
- | не настроен вывод системных журналов СУБД в отдельных каталог и нет прямой ссылки на каталог данных. | + | |
- | Рекомендуется включить возможность вывода системных журналов отдельный каталог | + | |
- | и указать прямую ссылку на каталог данных. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | sudo nano / | + | |
- | + | ||
- | ## Укажем путь сохранения log файлов | + | |
- | + | ||
- | logging_collector = on; | + | |
- | log_directory = '/ | + | |
- | + | ||
- | ## Применение параметров без перезагрузки сервера СУБД с проверкой | + | |
- | + | ||
- | sudo -iu postgres psql | + | |
- | SELECT pg_reload_conf(); | + | |
- | SHOW logging_collector; | + | |
- | + | ||
- | ## посмотреть лог БД, пример: | + | |
- | + | ||
- | less / | + | |
- | + | ||
- | ## !!! не забудьте скорректировать скрипт Ротация логов. | + | |
- | + | ||
- | ## При проверке системных журналов ОС | + | |
- | + | ||
- | sudo journalctl -u tantor-be-server-16.service | + | |
- | + | ||
- | ## Утилита сообщает, | + | |
- | ## каталога с данными БД. Далее, в нашем примере, | + | |
- | ## Можно посмотреть в каталоге / | + | |
- | ## самого нового файла postgresql-< | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Сетевые настройки слушателя и порта инстанса СУБД. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | sudo nano / | + | |
- | + | ||
- | ## ищем и выставляем параметры | + | |
- | + | ||
- | listen_addresses = ' | + | |
- | ## или можно указать прямо через запятую несколько IP сетевых интерфейсов на одном хосте. | + | |
- | listen_addresses = ' | + | |
- | + | ||
- | port = 5433 | + | |
- | + | ||
- | ## перезагружаем и проверяем | + | |
- | + | ||
- | sudo systemctl restart tantor-be-server-16 | + | |
- | sudo ss -tulnp | grep postgres | + | |
- | + | ||
- | ## подключаемся к СУБД по новому порту | + | |
- | + | ||
- | sudo -iu postgres psql -p 5433 -h 10.2.0.11 -U postgres | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | !!! При необходимости, | + | |
- | Можно перенести каталог с данными экземпларя СУБД на отдельный другой католог | + | |
- | или точку монтирования (диск) в ОС | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Останавливаем службу СУБД | + | |
- | + | ||
- | sudo -i | + | |
- | systemctl stop tantor-be-server-16.service | + | |
- | + | ||
- | ## Редактируем в postgresql.conf ссылку на новый каталог данных | + | |
- | + | ||
- | nano / | + | |
- | + | ||
- | ## Прямая ссылка на новый каталог данных, | + | |
- | + | ||
- | data_directory = '/ | + | |
- | + | ||
- | ## Переносим data каталог через команду mv или копируем через cp -R в новый каталог | + | |
- | + | ||
- | cp -R / | + | |
- | + | ||
- | ## Назначаем права на новый каталог | + | |
- | + | ||
- | sudo chown -R postgres: | + | |
- | + | ||
- | ## Меняем путь в службе | + | |
- | + | ||
- | sudo nano / | + | |
- | + | ||
- | Environment=PGDATA=/ | + | |
- | + | ||
- | ## Запускаем экземпляр | + | |
- | + | ||
- | sudo systemctl daemon-reload | + | |
- | sudo systemctl start tantor-be-server-16.service | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Пакеты в ОС можно устанавливать через команды sudo dpkg -i **.deb | + | |
- | Нужно будет также установить все зависимости руками. | + | |
- | При этом инициализация инстанса СУБД не будет производиться автоматически. | + | |
- | Если нужно создать инстанс СУБД или пересоздать чистую конфигурацию в другой каталог, | + | |
- | инициализация СУБД Tantor производится под пользователем postgres следующим образом: | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## Переходим в УЗ postgres | + | |
- | + | ||
- | sudo su - postgres | + | |
- | + | ||
- | ## Инициализация нового экземпляра, | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## Правим порт, например 5433, если нужно, смотри комментарий ниже. | + | |
- | + | ||
- | nano / | + | |
- | + | ||
- | ## !!! Если планируется запускать параллельно несколько экземпляров, | + | |
- | ## то порты конфигурации СУБД в postgresql.conf должны быть разные, | + | |
- | ## В продуктивных системах это не рекомендуется, | + | |
- | ## между процессами может делиться неравномерно, | + | |
- | + | ||
- | ## Для параллельного запуска экземпляров одной и той же версии сборки СУБД | + | |
- | ## создадим отдельный новый файл службы под root. | + | |
- | + | ||
- | sudo -i | + | |
- | cp / | + | |
- | nano / | + | |
- | + | ||
- | ## Редактируем новый файл службы, | + | |
- | + | ||
- | Environment=PGDATA=/ | + | |
- | + | ||
- | ## Запустим новую службу | + | |
- | + | ||
- | systemctl daemon-reload | + | |
- | systemctl enable --now tantor-be-server-16-data2 | + | |
- | systemctl status tantor-be-server-16-data2.service | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Ручной запуск инстанса СУБД без службы. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | sudo su - postgres | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## Останавливаем | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## посмотреть все возможности pg_ctl | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## !!! Если планируется установка нескольких версий сборок пакетов СУБД | + | |
- | ## Например Tantor 15, Tantor 16 версий, | + | |
- | ## Службы для разных версий СУБД после установки пакетов будут разные, | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Обновление СУБД tantor по мажорной версии на, пример с 15 на 16. | + | |
- | ======================================================================================================== | + | |
- | Вариант 1 Возможен только между одинаковыми сборками СУБД. | + | |
- | se15 -> se16 | + | |
- | be15 -> be16 | + | |
- | se1c 15 -> se1c 16 | + | |
- | + | ||
- | В противном случае при проверке будут ошибки, | + | |
- | обновление СУБД можно выполнить только через восстановление из бекапа pg_dumpall. | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## делаем логический бекап БД, pg_basebackup сюда не подойдет, | + | |
- | ## pg_basebackup создаёт полную копию каталога данных. | + | |
- | + | ||
- | pg_dumpall -U postgres > backup.sql | + | |
- | + | ||
- | ## Установите пакет новой версии PostgreSQL c инициализацией новой БД | + | |
- | ## процесс описан в начале файла. | + | |
- | ## инициализацию можно выполнить руками если вы просто установили пакет. | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## обновите права на подкаталоги | + | |
- | + | ||
- | chown -R postgres: | + | |
- | + | ||
- | ## останавливаем все СУБД (рекомендуется для больших баз) | + | |
- | + | ||
- | systemctl stop tantor-* | + | |
- | + | ||
- | ## Проверьте совместимость кластеров | + | |
- | + | ||
- | su - postgres | + | |
- | + | ||
- | / | + | |
- | --old-datadir / | + | |
- | --new-datadir / | + | |
- | --old-bindir / | + | |
- | --new-bindir / | + | |
- | --check | + | |
- | + | ||
- | --------------------------------------------------------------------------------- | + | |
- | Вариант 1 Обновление СУБД через утилиту pg_upgrade. | + | |
- | --------------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Процесс скопирует данные из старого кластера в новый и настроит его для работы | + | |
- | + | ||
- | / | + | |
- | --old-datadir / | + | |
- | --new-datadir / | + | |
- | --old-bindir / | + | |
- | --new-bindir / | + | |
- | + | ||
- | ## Если обновление успешно, | + | |
- | ## Не забудьте проверить postgresql.auto.conf, | + | |
- | ## на новой инсталяции, | + | |
- | + | ||
- | Обновление завершено | + | |
- | ----------------------------------------------------------- | + | |
- | Статистика оптимизатора утилитой pg_upgrade не переносится. | + | |
- | Запустив новый сервер, | + | |
- | / | + | |
- | При запуске этого скрипта будут удалены файлы данных старого кластера: | + | |
- | ./ | + | |
- | + | ||
- | ## Перенесите настройки из старого postgresql.conf и pg_hba.conf в новый кластер, | + | |
- | + | ||
- | ## запускаем кластер | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## обновляем статистику | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## подключаемся к бд и проверяем | + | |
- | psql | + | |
- | select tantor_version(); | + | |
- | SELECT version(); | + | |
- | \l | + | |
- | \q | + | |
- | + | ||
- | ## удаляем старый кластер | + | |
- | + | ||
- | ./ | + | |
- | ## или вручную | + | |
- | rm -rf / | + | |
- | + | ||
- | ## удаляем старые пакеты | + | |
- | + | ||
- | apt remove tantor-< | + | |
- | + | ||
- | -------------------------------------------------------------------------------------- | + | |
- | Вариант 2: pg_dump + pg_restore (если pg_upgrade недоступен из-за ошибо совместимости) | + | |
- | -------------------------------------------------------------------------------------- | + | |
- | + | ||
- | ## Перенесите настройки из старого postgresql.conf и pg_hba.conf в новый кластер | + | |
- | ## пример: | + | |
- | + | ||
- | cd / | + | |
- | cp postgresql.conf postgresql.auto.conf pg_hba.conf / | + | |
- | + | ||
- | ## Запустите кластер новую версию СУБД | + | |
- | + | ||
- | / | + | |
- | + | ||
- | ## Восстановите данные: | + | |
- | ## Если в бэкапе есть ошибки (например, | + | |
- | ## добавьте флаг --no-sync для игнорирования мелких проблем. | + | |
- | + | ||
- | psql -U postgres -f backup.sql | + | |
- | + | ||
- | ## проверяем что все базы на месте, подключаемся к бд и проверяем | + | |
- | + | ||
- | psql | + | |
- | select tantor_version(); | + | |
- | SELECT version(); | + | |
- | \l | + | |
- | \q | + | |
- | + | ||
- | ## Если обновление успешно, | + | |
- | + | ||
- | apt remove tantor-< | + | |
- | rm -rf / | + | |
- | + | ||
- | ======================================================================================================== | + | |
- | Если нужно перенастроить переменные платформы / | + | |
- | например: | + | |
- | ======================================================================================================== | + | |
- | + | ||
- | ## переходим в каталог | + | |
- | + | ||
- | cd / | + | |
- | + | ||
- | ## останавливаем докеры | + | |
- | + | ||
- | sudo docker-compose --env-file=platform.env down | + | |
- | + | ||
- | ## правим файл c переменными и сохраняем | + | |
- | + | ||
- | nano platform.env | + | |
- | EMAIL_PORT= | + | |
- | EMAIL_USERNAME= | + | |
- | EMAIL_HOST= | + | |
- | EMAIL_PASSWORD= | + | |
- | + | ||
- | ## поднимаем контейнеры с новыми параметрами | + | |
- | + | ||
- | docker-compose --env-file platform.env up -d | + | |
- | + | ||
- | ## проверяем платформу через браузер. | + | |
- | + | ||
- | ======================================================================== | + | |
- | ----------------- удаление платформы ----------------- | + | |
- | ======================================================================== | + | |
- | + | ||
- | sudo docker stop $(docker ps -aq) | + | |
- | sudo docker rm $(docker ps -aq) | + | |
- | sudo docker container prune | + | |
- | docker system prune -a | + | |
- | sudo docker rmi $(docker images -q) | + | |
- | sudo rm -rf / | + | |
- | + | ||
- | ======================================================================== | + | |
- | ----------------- удаление СУБД и агента ----------------- | + | |
- | ======================================================================== | + | |
- | + | ||
- | sudo apt purge tantor-be-server-16 | + | |
- | sudo rm -rf / | + | |
- | sudo rm -rf / | + | |
- | + | ||
- | sudo apt purge pmaagent | + | |
- | sudo rm -rf / | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
vji/tantor1/start.1754033490.txt.gz · Последнее изменение: 2025/08/01 07:31 — vji