Files
wace_plm/init-db.sh

90 lines
3.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# 데이터베이스 초기화 스크립트
# 사용법: ./init-db.sh [환경] [DB_HOST] [DB_PORT] [DB_NAME] [DB_USER] [DB_PASSWORD]
set -e
# 기본값 설정
ENV=${1:-"dev"}
DB_HOST=${2:-"211.115.91.141"}
DB_PORT=${3:-"11132"}
DB_NAME=${4:-"waceplm"}
DB_USER=${5:-"postgres"}
DB_PASSWORD=${6:-"waceplm0909!!"}
echo "=== WACE PLM 데이터베이스 초기화 ==="
echo "환경: $ENV"
echo "DB 호스트: $DB_HOST"
echo "DB 포트: $DB_PORT"
echo "DB 이름: $DB_NAME"
echo "DB 사용자: $DB_USER"
echo "=================================="
# PostgreSQL 클라이언트 설치 확인
if ! command -v psql &> /dev/null; then
echo "PostgreSQL 클라이언트가 설치되어 있지 않습니다."
echo "Ubuntu/Debian: sudo apt-get install postgresql-client"
echo "CentOS/RHEL: sudo yum install postgresql"
exit 1
fi
# 데이터베이스 연결 테스트
echo "데이터베이스 연결 테스트 중..."
export PGPASSWORD=$DB_PASSWORD
if ! psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "SELECT 1;" > /dev/null 2>&1; then
echo "데이터베이스 연결에 실패했습니다."
echo "연결 정보를 확인해주세요."
exit 1
fi
echo "데이터베이스 연결 성공!"
# 백업 생성 (기존 데이터가 있는 경우)
BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql"
echo "기존 데이터 백업 생성 중: $BACKUP_FILE"
pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME > $BACKUP_FILE 2>/dev/null || echo "백업 생성 실패 (기존 데이터가 없을 수 있습니다)"
# 역할 생성
echo "데이터베이스 역할 생성 중..."
if [ -f "db/00-create-roles.sh" ]; then
psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "CREATE ROLE IF NOT EXISTS pro_search; CREATE ROLE IF NOT EXISTS search_user;" || echo "역할 생성 실패 (이미 존재할 수 있습니다)"
fi
# 데이터베이스 임포트
echo "데이터베이스 임포트 시작..."
if [ -f "db/dbexport.pgsql" ]; then
echo "dbexport.pgsql 파일을 임포트합니다..."
echo "파일 크기: $(du -h db/dbexport.pgsql | cut -f1)"
# 대용량 파일 처리를 위한 설정
psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -v ON_ERROR_STOP=1 < db/dbexport.pgsql
if [ $? -eq 0 ]; then
echo "데이터베이스 임포트 완료!"
else
echo "데이터베이스 임포트 실패!"
echo "백업 파일을 사용하여 복원할 수 있습니다: $BACKUP_FILE"
exit 1
fi
else
echo "db/dbexport.pgsql 파일을 찾을 수 없습니다."
exit 1
fi
# 임포트 검증
echo "임포트 검증 중..."
TABLE_COUNT=$(psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -t -c "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public';" | tr -d ' ')
echo "생성된 테이블 수: $TABLE_COUNT"
if [ "$TABLE_COUNT" -gt 0 ]; then
echo "데이터베이스 초기화가 성공적으로 완료되었습니다!"
echo "백업 파일: $BACKUP_FILE"
else
echo "데이터베이스 초기화에 문제가 있을 수 있습니다."
echo "테이블이 생성되지 않았습니다."
fi
unset PGPASSWORD
echo "=== 초기화 완료 ==="