init
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# Default migration target: cnpg | selectel
|
||||
# Override per run: TARGET=selectel ./migrate-one.sh …
|
||||
# Or per list line: yc-loop-1 loopxxx selectel
|
||||
TARGET="${TARGET:-cnpg}"
|
||||
|
||||
# CNPG target (pooler NodePort; use a node that runs a pooler pod)
|
||||
CNPG_HOST="${CNPG_HOST:-95.143.178.247}"
|
||||
CNPG_PORT="${CNPG_PORT:-31574}"
|
||||
CNPG_SSLMODE="${CNPG_SSLMODE:-disable}"
|
||||
# 1 = always use CNPG_HOST (public VIP); 0 = try pooler pod hostIP first
|
||||
CNPG_PREFER_CONFIG_HOST="${CNPG_PREFER_CONFIG_HOST:-0}"
|
||||
CNPG_POOLER_RW="${CNPG_POOLER_RW:-pooler-cnpg-wilix-rw}"
|
||||
|
||||
# Admin role for CREATE ROLE / CREATE DATABASE (kubectl --context local)
|
||||
CNPG_KUBE_CONTEXT="${CNPG_KUBE_CONTEXT:-local}"
|
||||
CNPG_NAMESPACE="${CNPG_NAMESPACE:-cnpg-loop-wilix}"
|
||||
CNPG_CLUSTER="${CNPG_CLUSTER:-loop-cnpg-wilix-1}"
|
||||
CNPG_ADMIN_SECRET="${CNPG_ADMIN_SECRET:-cnpg-vizor-admin-role-secret}"
|
||||
|
||||
# Selectel Managed PostgreSQL (create user/pass/db in UI = same as MM pod secret)
|
||||
SELECTEL_HOST="${SELECTEL_HOST:-}"
|
||||
SELECTEL_PORT="${SELECTEL_PORT:-5432}"
|
||||
SELECTEL_SSLMODE="${SELECTEL_SSLMODE:-require}"
|
||||
# Source (YC MDB) SSL for pg_dump inside transfer Job
|
||||
SRC_SSLMODE="${SRC_SSLMODE:-disable}"
|
||||
|
||||
# Source Mattermost installs
|
||||
SOURCE_NS="${SOURCE_NS:-loop}"
|
||||
JOB_NS="${JOB_NS:-loop}"
|
||||
# Pin minor to avoid pg_dump/psql \\restrict mismatches across floating :15 tags
|
||||
PG_IMAGE="${PG_IMAGE:-postgres:15.8}"
|
||||
JOB_TTL_SECONDS="${JOB_TTL_SECONDS:-86400}"
|
||||
# pgxfer Job resources (cluster often tight on memory)
|
||||
XFER_CPU_REQUEST="${XFER_CPU_REQUEST:-200m}"
|
||||
XFER_CPU_LIMIT="${XFER_CPU_LIMIT:-2}"
|
||||
XFER_MEMORY_REQUEST="${XFER_MEMORY_REQUEST:-512Mi}"
|
||||
XFER_MEMORY_LIMIT="${XFER_MEMORY_LIMIT:-2Gi}"
|
||||
|
||||
# migrate-list parallelism
|
||||
PARALLELISM="${PARALLELISM:-1}"
|
||||
|
||||
# migrate-one local wait for Job (seconds). 0 = wait forever (manual monitoring).
|
||||
MIGRATE_JOB_TIMEOUT="${MIGRATE_JOB_TIMEOUT:-86400}"
|
||||
# On wait timeout while Job still Running: keep Job (do not delete / mark failed)
|
||||
MIGRATE_KEEP_JOB_ON_TIMEOUT="${MIGRATE_KEEP_JOB_ON_TIMEOUT:-1}"
|
||||
|
||||
# Inside transfer Job: retry full dump|restore after short network blips (still restarts copy).
|
||||
TRANSFER_MAX_ATTEMPTS="${TRANSFER_MAX_ATTEMPTS:-30}"
|
||||
TRANSFER_RETRY_SLEEP_SEC="${TRANSFER_RETRY_SLEEP_SEC:-60}"
|
||||
# libpq TCP keepalives (seconds) — reduces silent idle drops on long COPY/INDEX
|
||||
PG_KEEPALIVES_IDLE="${PG_KEEPALIVES_IDLE:-30}"
|
||||
PG_KEEPALIVES_INTERVAL="${PG_KEEPALIVES_INTERVAL:-10}"
|
||||
PG_KEEPALIVES_COUNT="${PG_KEEPALIVES_COUNT:-9}"
|
||||
|
||||
# Transfer mode:
|
||||
# stream — pg_dump | psql (default; retry = full re-dump from MDB)
|
||||
# file — pg_dump | tee >(zstd>PVC) | psql; on blip re-restore from file (no MDB re-dump)
|
||||
TRANSFER_MODE="${TRANSFER_MODE:-stream}"
|
||||
# file-mode volume: pvc | emptydir (emptydir = node disk; survives blips inside same pod only)
|
||||
DUMP_VOLUME="${DUMP_VOLUME:-pvc}"
|
||||
DUMP_PVC_SIZE="${DUMP_PVC_SIZE:-80Gi}"
|
||||
DUMP_STORAGE_CLASS="${DUMP_STORAGE_CLASS:-yc-network-ssd}"
|
||||
DUMP_EMPTYDIR_SIZE_LIMIT="${DUMP_EMPTYDIR_SIZE_LIMIT:-50Gi}"
|
||||
# zstd | gzip | none (postgres:15.8 image already has zstd + gzip)
|
||||
DUMP_COMPRESS="${DUMP_COMPRESS:-zstd}"
|
||||
DUMP_COMPRESS_LEVEL="${DUMP_COMPRESS_LEVEL:-3}"
|
||||
# Keep PVC + dump after success (1) so you can re-restore manually
|
||||
DUMP_KEEP_PVC="${DUMP_KEEP_PVC:-1}"
|
||||
|
||||
# cutover-one: MM needs long plugin sync after DB switch
|
||||
CUTOVER_LIVENESS_INITIAL_DELAY="${CUTOVER_LIVENESS_INITIAL_DELAY:-600}"
|
||||
CUTOVER_LIVENESS_FAILURE_THRESHOLD="${CUTOVER_LIVENESS_FAILURE_THRESHOLD:-60}"
|
||||
CUTOVER_READINESS_INITIAL_DELAY="${CUTOVER_READINESS_INITIAL_DELAY:-120}"
|
||||
CUTOVER_READINESS_FAILURE_THRESHOLD="${CUTOVER_READINESS_FAILURE_THRESHOLD:-60}"
|
||||
CUTOVER_MEMORY_LIMIT="${CUTOVER_MEMORY_LIMIT:-4Gi}"
|
||||
CUTOVER_MEMORY_REQUEST="${CUTOVER_MEMORY_REQUEST:-512Mi}"
|
||||
CUTOVER_CPU_REQUEST="${CUTOVER_CPU_REQUEST:-200m}"
|
||||
# wait loop: attempts * sleep (default ~30 min)
|
||||
CUTOVER_WAIT_ATTEMPTS="${CUTOVER_WAIT_ATTEMPTS:-180}"
|
||||
CUTOVER_WAIT_SLEEP_SEC="${CUTOVER_WAIT_SLEEP_SEC:-10}"
|
||||
# kill idle CNPG backends left by crashed MM/session-pooler clients
|
||||
CUTOVER_STALE_IDLE_MINUTES="${CUTOVER_STALE_IDLE_MINUTES:-5}"
|
||||
|
||||
# Files relative to this directory
|
||||
TRANSFER_LIST="${TRANSFER_LIST:-transfer-list.txt}"
|
||||
DONE_FILE="${DONE_FILE:-done.txt}"
|
||||
FAILED_FILE="${FAILED_FILE:-failed.txt}"
|
||||
# Unified migration table (source of truth for status / sizes / batches)
|
||||
REGISTRY_FILE="${REGISTRY_FILE:-registry.tsv}"
|
||||
LOG_DIR="${LOG_DIR:-logs}"
|
||||
Reference in New Issue
Block a user