/
tsargrad
/
postgresql-cluster
Обзор
Документация
Войти
/
tsargrad
/
postgresql-cluster
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
start.sh
87 строк
3 KB
tsargrad
upload files
26 дек 2025, 13:04
26 дек 2025, 13:04
bf6d6be
Код
Авторство
О чём код?
#!/bin/bash echo "=== ЗАПУСК ОТКАЗОУСТОЙЧИВОГО КЛАСТЕРА POSTGRESQL ===" echo "" echo "0. Создание директорий..." mkdir -p sql scripts logs/pg-node-1 logs/pg-node-2 logs/pg-node-3 logs/haproxy chmod 777 logs/* 2>/dev/null || true echo "1. Останавливаем старые контейнеры..." docker-compose down echo "2. Собираем образы..." docker-compose build echo "3. Запускаем etcd кластер..." docker-compose up -d etcd-1 etcd-2 etcd-3 echo " Ждем готовности etcd..." sleep 10 echo "4. Проверяем etcd кластер..." docker exec etcd-1 etcdctl member list echo "5. Запускаем PostgreSQL узлы с Patroni..." docker-compose up -d pg-node-1 pg-node-2 pg-node-3 echo " Ждем инициализации Patroni (это может занять 2-3 минуты)..." sleep 120 echo "6. Проверка состояния кластера..." echo " Даем дополнительное время для инициализации..." sleep 30 CLUSTER_READY=0 for i in {1..10}; do echo " Проверка #$i..." if curl -s http://localhost:8008/patroni 2>/dev/null | grep -q '"state": "running"'; then echo " Patroni API сообщает, что кластер работает" CLUSTER_READY=1 break fi if docker-compose exec pg-node-1 bash -c "pg_isready -U postgres -h localhost -p 5432 2>/dev/null | grep -q 'accepting connections'"; then echo " PostgreSQL принимает подключения" CLUSTER_READY=1 break fi sleep 10 done if [ $CLUSTER_READY -eq 0 ]; then echo " Кластер не готов после длительного ожидания" echo " Проверьте логи: docker-compose logs pg-node-1" fi echo "7. Запускаем HAProxy..." docker-compose up -d haproxy sleep 5 echo "8. Статус контейнеров:" docker-compose ps echo "" echo "=== СИСТЕМА ЗАПУЩЕНА ===" echo "" echo "ДЛЯ ПРОВЕРКИ:" echo "" echo "1. Проверьте статус кластера:" echo " curl http://localhost:8008/cluster" echo "" echo "2. HAProxy статистика:" echo " http://localhost:8404/stats" echo "" echo "3. Подключение к базе данных:" echo " docker-compose exec pg-node-1 psql -U postgres -c 'SELECT 1;'" echo "" echo "4. Инициализация pgBackRest:" echo " ./init-pgbackrest.sh" echo "" echo "КОМАНДЫ ДЛЯ ОСТАНОВКИ:" echo " docker-compose stop - остановить" echo " docker-compose down - остановить и удалить контейнеры" echo " docker-compose down -v - остановить и удалить все данные"