#!/bin/sh set -e # 红动未来 - PostgreSQL 主从复制初始化 # 在 Host1(主库)上执行一次,为从库复制做准备 # 用法:sh deploy/scripts/setup-replication.sh POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-postgres}" echo "=== 1. 添加 pg_hba 复制规则 ===" docker exec "$POSTGRES_CONTAINER" sh -c 'echo "host replication all 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.conf' echo "=== 2. 重载 PostgreSQL 配置 ===" docker exec "$POSTGRES_CONTAINER" psql -U postgres -c "SELECT pg_reload_conf();" echo "=== 3. 创建物理复制槽 ===" docker exec "$POSTGRES_CONTAINER" psql -U postgres -c "SELECT pg_create_physical_replication_slot('replication_slot_slave') WHERE NOT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'replication_slot_slave');" echo "=== 完成 ===" echo "现在可以在从库(Host2)上启动 PostgreSQL 从库:" echo " docker compose -f deploy/docker-compose-infra-slave.yml up -d postgres-standby"