mirror of
https://github.com/wowlikon/LiB.git
synced 2026-02-04 04:31:09 +00:00
Исправление репликации
This commit is contained in:
+28
-4
@@ -36,6 +36,20 @@ BEGIN
|
|||||||
END \$\$;
|
END \$\$;
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
echo "Проверяем/создаем публикацию..."
|
||||||
|
|
||||||
|
PUB_EXISTS=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h db -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -tAc "SELECT COUNT(*) FROM pg_publication WHERE pubname = 'all_tables_pub';")
|
||||||
|
|
||||||
|
if [ "$PUB_EXISTS" -gt 0 ]; then
|
||||||
|
echo "Публикация уже существует"
|
||||||
|
else
|
||||||
|
echo "Создаем публикацию..."
|
||||||
|
PGPASSWORD="${POSTGRES_PASSWORD}" psql -h db -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" <<EOF
|
||||||
|
CREATE PUBLICATION all_tables_pub FOR ALL TABLES;
|
||||||
|
EOF
|
||||||
|
echo "Публикация создана!"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Ждем удаленный хост ${REMOTE_HOST}:${REMOTE_PORT}..."
|
echo "Ждем удаленный хост ${REMOTE_HOST}:${REMOTE_PORT}..."
|
||||||
TIMEOUT=300
|
TIMEOUT=300
|
||||||
ELAPSED=0
|
ELAPSED=0
|
||||||
@@ -44,8 +58,9 @@ while ! PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${REMOTE_HOST}" -p ${REMOTE_P
|
|||||||
sleep 5
|
sleep 5
|
||||||
ELAPSED=$((ELAPSED + 5))
|
ELAPSED=$((ELAPSED + 5))
|
||||||
if [ $ELAPSED -ge $TIMEOUT ]; then
|
if [ $ELAPSED -ge $TIMEOUT ]; then
|
||||||
echo "Таймаут ожидания удаленного хоста. Репликация НЕ настроена."
|
echo "Таймаут ожидания удаленного хоста. Подписка НЕ настроена."
|
||||||
echo "Вы можете запустить этот скрипт вручную позже:"
|
echo "Публикация создана - удаленный хост сможет подписаться на нас."
|
||||||
|
echo "Для создания подписки запустите позже:"
|
||||||
echo "docker compose restart replication-setup"
|
echo "docker compose restart replication-setup"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@@ -53,6 +68,14 @@ while ! PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${REMOTE_HOST}" -p ${REMOTE_P
|
|||||||
done
|
done
|
||||||
echo "Удаленный хост доступен"
|
echo "Удаленный хост доступен"
|
||||||
|
|
||||||
|
REMOTE_PUB=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h "${REMOTE_HOST}" -p ${REMOTE_PORT} -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -tAc "SELECT COUNT(*) FROM pg_publication WHERE pubname = 'all_tables_pub';" 2>/dev/null || echo "0")
|
||||||
|
|
||||||
|
if [ "$REMOTE_PUB" -eq 0 ]; then
|
||||||
|
echo "ВНИМАНИЕ: На удалённом хосте нет публикации 'all_tables_pub'!"
|
||||||
|
echo "Подписка не будет создана. Сначала запустите скрипт на удалённом хосте."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
EXISTING=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h db -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -tAc "SELECT COUNT(*) FROM pg_subscription WHERE subname = 'sub_from_remote';")
|
EXISTING=$(PGPASSWORD="${POSTGRES_PASSWORD}" psql -h db -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" -tAc "SELECT COUNT(*) FROM pg_subscription WHERE subname = 'sub_from_remote';")
|
||||||
|
|
||||||
if [ "$EXISTING" -gt 0 ]; then
|
if [ "$EXISTING" -gt 0 ]; then
|
||||||
@@ -73,5 +96,6 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Репликация настроена!"
|
echo "=== Репликация настроена! ==="
|
||||||
echo "Этот узел (${NODE_ID}) теперь синхронизирован с ${REMOTE_HOST}"
|
echo "Публикация: all_tables_pub (другие могут подписаться на нас)"
|
||||||
|
echo "Подписка: sub_from_remote (мы получаем данные от ${REMOTE_HOST})"
|
||||||
|
|||||||
Reference in New Issue
Block a user