5.8 KiB
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 | 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!!
유용한 명령어
모든 컨테이너 상태 확인
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
리눅스 서버 배포
리눅스 서버에 배포할 때:
- 모든 스크립트에 실행 권한 부여:
chmod +x *.sh
-
Docker와 Docker Compose 설치 확인
-
프라이빗 레지스트리 접근 확인:
docker login localhost:8787
- 전체 시작:
./start-all-db.sh
이제 모든 데이터베이스가 통합 환경에서 실행됩니다!