23 lines
991 B
Bash
Executable File
23 lines
991 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/_common.sh"
|
|
|
|
if [ -f "${PGLOGICAL_INIT_FILE}" ]; then
|
|
echo ">>> 初始化 pglogical schema (REPLICATION_MODE=pglogical)"
|
|
if PGPASSWORD="${DB_ADMIN_PASS}" psql -h "${DB_HOST}" -U "${DB_ADMIN_USER}" -d "${DB_NAME}" \
|
|
-Atc "SELECT rolsuper FROM pg_roles WHERE rolname = current_user" 2>/dev/null | grep -qx 't'; then
|
|
PGPASSWORD="${DB_ADMIN_PASS}" psql -h "${DB_HOST}" -U "${DB_ADMIN_USER}" -d "${DB_NAME}" \
|
|
-v ON_ERROR_STOP=1 -f "${PGLOGICAL_INIT_FILE}"
|
|
elif psql "${DB_URL}" -Atc "SELECT rolsuper FROM pg_roles WHERE rolname = current_user" | grep -qx 't'; then
|
|
psql "${DB_URL}" -v ON_ERROR_STOP=1 -f "${PGLOGICAL_INIT_FILE}"
|
|
else
|
|
echo "⚠️ 当前用户非超级用户,跳过 pglogical 初始化"
|
|
fi
|
|
fi
|
|
|
|
if [ -f "${PGLOGICAL_PATCH_FILE}" ]; then
|
|
echo ">>> 应用 pglogical 默认值补丁"
|
|
psql "${DB_URL}" -v ON_ERROR_STOP=1 -f "${PGLOGICAL_PATCH_FILE}"
|
|
fi
|