# 통합 데이터베이스 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 | ## 빠른 시작 ### 모든 데이터베이스 시작 ```bash chmod +x start-all-db.sh ./start-all-db.sh ``` ### 모든 데이터베이스 중지 ```bash chmod +x stop-all-db.sh ./stop-all-db.sh ``` ### 개별 데이터베이스 관리 ```bash # 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 ```bash mysql -h localhost -P 3306 -u wace -p wace ``` ### MSSQL ```bash sqlcmd -S localhost,1433 -U wace -P wace0909!! -d wace ``` ### Oracle ```bash sqlplus wace/"wace0909!!"@//localhost:1521/ORCLPDB1 ``` ### JDBC 연결 문자열 ```properties # 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) - URL: http://localhost:8080 - 서버: mariadb - 사용자: wace 또는 root - 비밀번호: wace0909!! ### 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 - URL: http://localhost:5500/em - 사용자: sys (as sysdba) - 비밀번호: wace0909!! ## 유용한 명령어 ### 모든 컨테이너 상태 확인 ```bash docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" ``` ### 개별 로그 확인 ```bash docker logs mariadb-server docker logs mssql-server docker logs oracle-server ``` ### 데이터 백업 ```bash # 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) ```bash chmod +x *.sh ``` ## 리눅스 서버 배포 리눅스 서버에 배포할 때: 1. 모든 스크립트에 실행 권한 부여: ```bash chmod +x *.sh ``` 2. Docker와 Docker Compose 설치 확인 3. 프라이빗 레지스트리 접근 확인: ```bash docker login localhost:8787 ``` 4. 전체 시작: ```bash ./start-all-db.sh ``` 이제 모든 데이터베이스가 통합 환경에서 실행됩니다!