docs: [database] codebridge 분리 문서 최종 상태 업데이트
- 운영서버 revert 사유 및 교훈 기록 - 로컬 samdb 58개 삭제, 로컬/개발 265개 동기화 반영 - DevTools 테이블 실제 이름(admin_ prefix) 수정 - 운영서버 적용 절차 5단계로 개정 (DB 선행 필수)
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# codebridge DB 분리
|
||||
|
||||
> **작성일**: 2026-03-07
|
||||
> **상태**: 로컬/개발 서버 적용 완료, 운영 서버 미적용
|
||||
> **최종 수정**: 2026-03-09 — API 사용 테이블 점검 완료, codebridge 이동 대상 100개 → 59개로 축소, 개발 서버 samdb에서 59개 테이블 삭제 완료
|
||||
> **상태**: 로컬/개발 서버 적용 완료, **운영 서버 코드 revert 상태 — DB 선행 작업 필요**
|
||||
> **최종 수정**: 2026-03-09 — API 사용 테이블 점검, 로컬/개발 samdb 삭제 완료, 운영 코드 revert
|
||||
|
||||
---
|
||||
|
||||
@@ -58,11 +58,11 @@ SAM 프로젝트의 DB를 **서비스용**과 **내부 관리용**으로 분리
|
||||
|
||||
| 테이블 | 설명 | 비고 |
|
||||
|--------|------|------|
|
||||
| `admin_api_bookmarks` | API 북마크 | 문서 기존명 `api_bookmarks` → 실제 테이블명 |
|
||||
| `api_deprecations` | API 지원종료 관리 | |
|
||||
| `api_environments` | API 환경 설정 | |
|
||||
| `api_histories` | API 호출 이력 | |
|
||||
| `api_templates` | API 템플릿 | |
|
||||
| `admin_api_bookmarks` | API 북마크 | 기존명 `api_bookmarks` |
|
||||
| `admin_api_deprecations` | API 지원종료 관리 | 기존명 `api_deprecations` |
|
||||
| `admin_api_environments` | API 환경 설정 | 기존명 `api_environments` |
|
||||
| `admin_api_histories` | API 호출 이력 | 기존명 `api_histories` |
|
||||
| `admin_api_templates` | API 템플릿 | 기존명 `api_templates` |
|
||||
|
||||
### Sales (17)
|
||||
|
||||
@@ -220,24 +220,32 @@ SAM 프로젝트의 DB를 **서비스용**과 **내부 관리용**으로 분리
|
||||
|
||||
### 4.1 환경별 상태
|
||||
|
||||
| 환경 | codebridge DB | 테이블 복사 | samdb 삭제 | .env 설정 | MNG 모델 적용 | 상태 |
|
||||
| 환경 | codebridge DB | 테이블 복사 | samdb 삭제 | .env 설정 | MNG 코드 | 상태 |
|
||||
|------|:---:|:---:|:---:|:---:|:---:|------|
|
||||
| **로컬 Docker** | O | 59개 | 미수행 | O | O (develop) | 정상 작동 |
|
||||
| **개발 서버** | O | 59개 | **59개 삭제 완료** | O | O (develop) | 정상 작동 |
|
||||
| **운영 서버** | X | X | X | X | X (revert) | 미적용 (기존 samdb 사용) |
|
||||
| **로컬 Docker** | O | 100개 | **58개 삭제** | O | O (develop) | ✅ 정상 작동, samdb 265개 |
|
||||
| **개발 서버** | O | 101개 | **63개 삭제** | O | O (develop) | ✅ 정상 작동, samdb 265개 |
|
||||
| **운영 서버** | **X** | **X** | **X** | **X** | **revert됨** | ⚠️ DB 선행 작업 후 코드 재배포 필요 |
|
||||
|
||||
> **2026-03-09 작업 내역**:
|
||||
> - API 사용 테이블 22개: codebridge 이동 대상에서 제외 → samdb 유지
|
||||
> - `finance_*` 17개 + `barobill_companies` 1개: codebridge에 없는 유령 테이블 → samdb에서만 삭제
|
||||
> - Equipment 하위 4개 테이블: FK 의존성으로 codebridge 이동 대상에 추가 (55→59개)
|
||||
> - **개발 서버 samdb에서 59개 테이블 DROP 완료** (FOREIGN_KEY_CHECKS=0 사용)
|
||||
> - **개발 서버 samdb에서 63개 테이블 DROP 완료** (59개 + DevTools 실제 테이블명 4개 추가분)
|
||||
> - **로컬 samdb에서 58개 테이블 DROP 완료** → 로컬/개발 265개로 동기화
|
||||
> - 로컬에 `quality_documents` 등 4개 테이블 구조 동기화 (개발서버에서 복사)
|
||||
> - 백업: `/home/pro/backup/sam_backup_20260309.sql.gz` (6.3MB)
|
||||
> - 개발 서버 상태: samdb 276개 테이블, codebridge 101개 테이블
|
||||
>
|
||||
> **테이블명 불일치 발견 (수정 완료)**:
|
||||
> - `api_bookmarks` → 실제: `admin_api_bookmarks`
|
||||
> - `meeting_logs` → 실제: `admin_meeting_logs`
|
||||
> - `biz_certs` → 실제: `biz_cert` (단수형)
|
||||
> - DevTools 4개: `api_deprecations` → `admin_api_deprecations`, `api_environments` → `admin_api_environments`, `api_histories` → `admin_api_histories`, `api_templates` → `admin_api_templates`
|
||||
>
|
||||
> **운영 서버 revert 사유 (2026-03-09)**:
|
||||
> - MNG main에 codebridge 코드 2건 cherry-pick → Jenkins 배포됨 (빌드 #456, #457)
|
||||
> - 운영 서버에 codebridge DB가 없는 상태에서 코드 배포 → **59개 모델 사용 페이지 오류 발생 위험**
|
||||
> - kent가 main에서 revert 2건 push → 운영 서버 정상 복구
|
||||
> - **교훈: 운영 서버는 반드시 DB 선행 작업(1~2단계) 완료 후 코드 배포(3단계)**
|
||||
|
||||
### 4.2 코드 변경 사항
|
||||
|
||||
@@ -298,11 +306,20 @@ SET FOREIGN_KEY_CHECKS = 1;
|
||||
## 5. 운영 서버 적용 절차 (미완료)
|
||||
|
||||
> **전제**: 운영 서버 SSH 접근 + DB root 권한 필요
|
||||
> **코드는 이미 main에 배포 완료** — 운영 서버에 codebridge DB만 생성하면 즉시 적용됨
|
||||
> **현재 상태**: 운영 서버 main 코드는 revert 상태 (codebridge 코드 없음). DB 작업 완료 후 코드 재배포 필요.
|
||||
> **⚠️ 교훈**: 2026-03-09에 DB 없이 코드만 배포하여 장애 위험 발생 → **반드시 DB 선행 후 코드 배포**
|
||||
|
||||
### 순서 (반드시 1 → 2 → 3 → 4 순서로)
|
||||
### 순서 (반드시 1 → 2 → 3 → 4 → 5 순서로)
|
||||
|
||||
**1단계: codebridge DB 생성 + 테이블 복사**
|
||||
**1단계: 운영 sam DB 백업**
|
||||
|
||||
```bash
|
||||
# 운영 서버 접속 후
|
||||
mysqldump -u codebridge -p'[운영PW]' sam --single-transaction > ~/backup/sam_backup_$(date +%Y%m%d).sql
|
||||
gzip ~/backup/sam_backup_$(date +%Y%m%d).sql
|
||||
```
|
||||
|
||||
**2단계: codebridge DB 생성 + 59개 테이블 복사**
|
||||
|
||||
```bash
|
||||
# DB 생성
|
||||
@@ -311,33 +328,80 @@ mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS codebridge CHARACTER SET utf8
|
||||
# DB 계정 권한 부여
|
||||
mysql -u root -p -e "GRANT ALL PRIVILEGES ON codebridge.* TO 'codebridge'@'localhost'; FLUSH PRIVILEGES;"
|
||||
|
||||
# sam에서 59개 테이블 구조+데이터 복사 (mysqldump → import)
|
||||
mysqldump -u codebridge -p sam [테이블목록] | mysql -u codebridge -p codebridge
|
||||
# sam에서 59개 테이블 구조+데이터 복사
|
||||
mysqldump -u codebridge -p sam \
|
||||
admin_api_flows admin_api_flow_runs \
|
||||
admin_pm_daily_logs admin_pm_daily_log_entries admin_pm_issues admin_pm_projects admin_pm_tasks \
|
||||
admin_roadmap_milestones admin_roadmap_plans \
|
||||
admin_api_bookmarks admin_api_deprecations admin_api_environments admin_api_histories admin_api_templates \
|
||||
sales_partners sales_managers sales_manager_documents sales_commissions sales_commission_details \
|
||||
sales_consultations sales_contract_products sales_products sales_product_categories \
|
||||
sales_prospects sales_prospect_consultations sales_prospect_products sales_prospect_scenarios \
|
||||
sales_records sales_scenario_checklists sales_tenant_managements tenant_prospects \
|
||||
condolence_expenses consulting_fees corporate_cards corporate_card_prepayments \
|
||||
customer_settlements daily_fund_memos daily_fund_transactions incomes vat_records \
|
||||
esign_field_templates esign_field_template_items \
|
||||
equipments equipment_process equipment_inspections equipment_inspection_details \
|
||||
equipment_inspection_templates equipment_repairs \
|
||||
business_income_payments ai_configs \
|
||||
biz_cert cm_songs construction_site_photos construction_site_photo_rows \
|
||||
admin_meeting_logs meeting_minutes meeting_minute_segments \
|
||||
interview_knowledge \
|
||||
| mysql -u codebridge -p codebridge
|
||||
```
|
||||
|
||||
**2단계: .env 설정**
|
||||
**3단계: .env 설정**
|
||||
|
||||
```bash
|
||||
echo 'CODEBRIDGE_DB_DATABASE=codebridge' >> /home/webservice/mng/.env
|
||||
cd /home/webservice/mng && php artisan config:clear
|
||||
```
|
||||
|
||||
**3단계: MNG 웹 동작 확인**
|
||||
**4단계: MNG 코드 재배포 (main cherry-pick)**
|
||||
|
||||
codebridge connection이 활성화되므로 MNG 관리자 페이지에서 영업관리, 설비, 재무 등 주요 메뉴 동작 확인.
|
||||
> develop에 codebridge 코드가 있으므로, revert 커밋 이후 develop의 최신 커밋을 cherry-pick.
|
||||
> 또는 develop의 해당 커밋을 다시 cherry-pick하여 main에 push.
|
||||
|
||||
**4단계: samdb에서 59개 테이블 삭제 (선택)**
|
||||
```bash
|
||||
# 로컬에서 실행
|
||||
cd /home/aweso/sam/mng
|
||||
git checkout main && git pull origin main
|
||||
git cherry-pick <develop의 codebridge 커밋 해시>
|
||||
git push origin main
|
||||
git checkout develop
|
||||
```
|
||||
|
||||
개발 서버에서 검증 완료 후, 운영 서버에서도 삭제하여 실질적 분리 완성.
|
||||
**5단계: 동작 확인 + samdb 테이블 삭제 (선택)**
|
||||
|
||||
MNG 관리자 페이지에서 영업관리, 설비, 재무 등 주요 메뉴 동작 확인 후, 문제없으면 sam DB에서 59개 테이블 삭제.
|
||||
|
||||
```sql
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
DROP TABLE IF EXISTS [59개 테이블 목록];
|
||||
DROP TABLE IF EXISTS
|
||||
admin_api_flows, admin_api_flow_runs,
|
||||
admin_pm_daily_logs, admin_pm_daily_log_entries, admin_pm_issues, admin_pm_projects, admin_pm_tasks,
|
||||
admin_roadmap_milestones, admin_roadmap_plans,
|
||||
admin_api_bookmarks, admin_api_deprecations, admin_api_environments, admin_api_histories, admin_api_templates,
|
||||
sales_partners, sales_managers, sales_manager_documents, sales_commissions, sales_commission_details,
|
||||
sales_consultations, sales_contract_products, sales_products, sales_product_categories,
|
||||
sales_prospects, sales_prospect_consultations, sales_prospect_products, sales_prospect_scenarios,
|
||||
sales_records, sales_scenario_checklists, sales_tenant_managements, tenant_prospects,
|
||||
condolence_expenses, consulting_fees, corporate_cards, corporate_card_prepayments,
|
||||
customer_settlements, daily_fund_memos, daily_fund_transactions, incomes, vat_records,
|
||||
esign_field_templates, esign_field_template_items,
|
||||
equipments, equipment_process, equipment_inspections, equipment_inspection_details,
|
||||
equipment_inspection_templates, equipment_repairs,
|
||||
business_income_payments, ai_configs,
|
||||
biz_cert, cm_songs, construction_site_photos, construction_site_photo_rows,
|
||||
admin_meeting_logs, meeting_minutes, meeting_minute_segments,
|
||||
interview_knowledge;
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
```
|
||||
|
||||
> **주의**: 2단계 전에 1단계가 완료되어야 한다. DB가 없는 상태에서 .env를 설정하면 MNG 페이지 접속 불가.
|
||||
> **코드 배포**: 이미 main에 59개 모델의 `$connection = 'codebridge'` 코드가 반영됨. .env에 `CODEBRIDGE_DB_DATABASE`가 없으면 기본값 'codebridge'가 사용되므로, DB가 존재하지 않으면 에러 발생. 반드시 1단계 먼저 완료할 것.
|
||||
> **⚠️ 핵심 주의사항**:
|
||||
> - 반드시 **1→2→3→4** 순서 (DB 먼저, 코드 나중)
|
||||
> - 4단계(코드 배포) 전에 3단계(.env)까지 완료되어야 함
|
||||
> - 5단계(samdb 삭제)는 4단계 동작 확인 후 선택적 수행
|
||||
|
||||
---
|
||||
|
||||
@@ -376,4 +440,4 @@ SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
---
|
||||
|
||||
**최종 업데이트**: 2026-03-09
|
||||
**최종 업데이트**: 2026-03-09 (운영 revert 반영, 적용 절차 5단계로 개정)
|
||||
|
||||
Reference in New Issue
Block a user