database/README-ALL-DB.md

5.8 KiB

통합 데이터베이스 Docker 환경 가이드

이 프로젝트는 PostgreSQL, MariaDB, MSSQL, Oracle 데이터베이스를 Docker로 통합 관리할 수 있도록 구성되었습니다.

프로젝트 구조

workspace_db/
├── PostgreSQL (기존 실행 중)
├── MariaDB/
│   ├── docker-compose-mariadb.yml
│   ├── mariadb.env
│   ├── mariadb-init/
│   ├── mariadb-config/
│   ├── start-mariadb.sh
│   └── stop-mariadb.sh
├── MSSQL/
│   ├── docker-compose-mssql.yml
│   ├── mssql.env
│   ├── mssql-init/
│   ├── mssql-backup/
│   ├── start-mssql.sh
│   └── stop-mssql.sh
├── Oracle/
│   ├── docker-compose-oracle.yml
│   ├── oracle.env
│   ├── oracle-init/
│   ├── oracle-backup/
│   ├── start-oracle.sh
│   └── stop-oracle.sh
├── start-all-db.sh      # 모든 DB 시작
├── stop-all-db.sh       # 모든 DB 중지
└── README-ALL-DB.md     # 이 파일

통합 연결 정보

모든 데이터베이스는 동일한 사용자 정보로 설정되어 있습니다:

  • 데이터베이스명: wace
  • 사용자명: wace
  • 비밀번호: wace0909!!

포트 정보

데이터베이스 포트 관리 도구 관리 도구 포트
PostgreSQL 5432 (기존 설정) (기존 설정)
MariaDB 3306 phpMyAdmin 8080
MSSQL 1433 Adminer 8081
Oracle 1521 Adminer 8082

빠른 시작

모든 데이터베이스 시작

chmod +x start-all-db.sh
./start-all-db.sh

모든 데이터베이스 중지

chmod +x stop-all-db.sh
./stop-all-db.sh

개별 데이터베이스 관리

# MariaDB
./start-mariadb.sh
./stop-mariadb.sh

# MSSQL
./start-mssql.sh
./stop-mssql.sh

# Oracle
./start-oracle.sh
./stop-oracle.sh

데이터베이스별 상세 정보

1. PostgreSQL (기존)

  • 포트: 5432
  • 상태: 이미 실행 중
  • 관리: 기존 방식 사용

2. MariaDB

  • 이미지: localhost:8787/mariadb:10.11.linux
  • 포트: 3306
  • 관리 도구: phpMyAdmin (http://localhost:8080)
  • 특징: UTF8MB4 문자셋, 한글 완벽 지원

3. MSSQL

  • 이미지: localhost:8787/server:2022-latest
  • 포트: 1433
  • 관리 도구: Adminer (http://localhost:8081)
  • 특징: Express 에디션, Korean_Wansung_CI_AS 콜레이션

4. Oracle

  • 이미지: localhost:8787/oracle:latest
  • 포트: 1521 (DB), 5500 (EM)
  • 관리 도구: Adminer (http://localhost:8082)
  • SID: ORCL
  • PDB: ORCLPDB1
  • 특징: Enterprise Manager 포함

연결 문자열 예시

MariaDB

mysql -h localhost -P 3306 -u wace -p wace

MSSQL

sqlcmd -S localhost,1433 -U wace -P wace0909!! -d wace

Oracle

sqlplus wace/"wace0909!!"@//localhost:1521/ORCLPDB1

JDBC 연결 문자열

# MariaDB
jdbc:mariadb://localhost:3306/wace

# MSSQL
jdbc:sqlserver://localhost:1433;databaseName=wace

# Oracle
jdbc:oracle:thin:@localhost:1521:ORCL

초기 데이터

모든 데이터베이스에는 동일한 샘플 데이터가 생성됩니다:

users 테이블

id username email password_hash
1 admin admin@example.com (해시)
2 testuser test@example.com (해시)

user_profiles 테이블

id user_id first_name last_name phone
1 1 관리자 시스템 010-1234-5678
2 2 테스트 사용자 010-9876-5432

관리 도구 접속

phpMyAdmin (MariaDB)

Adminer (MSSQL)

  • URL: http://localhost:8081
  • 시스템: MS SQL (beta)
  • 서버: mssql
  • 사용자명: wace 또는 sa
  • 비밀번호: wace0909!!
  • 데이터베이스: wace

Adminer (Oracle)

  • URL: http://localhost:8082
  • 시스템: Oracle
  • 서버: oracle:1521
  • 사용자명: wace
  • 비밀번호: wace0909!!
  • 데이터베이스: ORCLPDB1

Oracle Enterprise Manager

유용한 명령어

모든 컨테이너 상태 확인

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

개별 로그 확인

docker logs mariadb-server
docker logs mssql-server
docker logs oracle-server

데이터 백업

# MariaDB
docker exec mariadb-server mysqldump -u wace -p wace > mariadb-backup.sql

# MSSQL
docker exec mssql-server /opt/mssql-tools/bin/sqlcmd -S localhost -U wace -P wace0909!! -Q "BACKUP DATABASE wace TO DISK = '/var/opt/mssql/backup/wace.bak'"

# Oracle
docker exec oracle-server expdp wace/wace0909!!@ORCLPDB1 directory=backup_dir dumpfile=wace.dmp

문제 해결

포트 충돌

각 데이터베이스는 서로 다른 포트를 사용하므로 충돌이 없어야 합니다. 만약 충돌이 발생하면 docker-compose 파일에서 포트를 변경하세요.

메모리 부족

Oracle은 많은 메모리를 사용합니다. 시스템 리소스가 부족한 경우 개별적으로 실행하는 것을 권장합니다.

초기화 시간

  • MariaDB: 즉시 사용 가능
  • MSSQL: 1-2분 소요
  • Oracle: 5-10분 소요 (첫 실행 시)

권한 문제 (Linux)

chmod +x *.sh

리눅스 서버 배포

리눅스 서버에 배포할 때:

  1. 모든 스크립트에 실행 권한 부여:
chmod +x *.sh
  1. Docker와 Docker Compose 설치 확인

  2. 프라이빗 레지스트리 접근 확인:

docker login localhost:8787
  1. 전체 시작:
./start-all-db.sh

이제 모든 데이터베이스가 통합 환경에서 실행됩니다!