Meta DB Backup Guide(KR) - cloud-barista/cb-spider GitHub Wiki
- CB-Spiderλ λͺ¨λ κ΄λ¦¬ λ©νλ°μ΄ν°(CSP μ°κ²° μ€μ , μμ IID λ±)λ₯Ό λ¨μΌ SQLite3 λ°μ΄ν°λ² μ΄μ€ νμΌ(
meta_db/cb-spider.db)μ μ μ₯νλ€. - μ΄ νμΌμ΄ νΌμλκ±°λ μ€μλ‘ μμ λλ©΄, Spiderκ° μ¬λ¬ CSP λ° Regionμμ κ΄λ¦¬ μ€μΈ μμμ μλ³ λ° κ΄λ¦¬κ° λ§€μ° μ΄λ €μμ§λ€.
- μ΄λ¬ν μνμ μννκΈ° μν΄ CB-Spiderλ SQLite3μ
VACUUM INTOλ₯Ό νμ©ν μλ λ°±κ·ΈλΌμ΄λ λ°±μ κΈ°λ₯μ μ 곡νλ€.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CB-Spider Meta DB Backup β
β β
β meta_db/ β
β βββ cb-spider.db β μ΄μ Meta DB β
β βββ backups/ β λ°±μ
λλ ν 리 β
β βββ cb-spider_backup_20260305_060000.db β
β βββ cb-spider_backup_20260305_120000.db β
β βββ cb-spider_backup_20260305_180000.db β
β βββ ... (MaxCountκΉμ§ μ μ§, μ€λλ κ²λΆν° λ‘ν
μ΄μ
) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- SQLite3μ
VACUUM INTOλͺ λ Ήμ μ¬μ©νμ¬ λ°±μ μ μννλ€. - μμ ν μ¨λΌμΈ μμ μΌλ‘, λ°±μ μ€μλ Meta DBμ λν μ½κΈ°/μ°κΈ°κ° μ μμ μΌλ‘ κ³μλλ€.
- λ°±μ νμΌμ μ€ν μμ μ λ°μ΄ν°λ² μ΄μ€μ λν μ΅μ νλ μΌκ΄μ± μλ μ€λ μ·μ΄λ€.
| νλͺ© | κΈ°λ³Έκ° | μ€λͺ |
|---|---|---|
| μμ μ λ°±μ | νμ | Spider μλ² μμ μ μ¦μ λ°±μ μν |
| μ£ΌκΈ°μ λ°±μ | λ§€ 6μκ° | μ€μ λ κ°κ²©μΌλ‘ λ°±κ·ΈλΌμ΄λ μ€μΌμ€λ¬ μ€ν |
| μ΅μ κ°κ²© | 1λΆ | 1λΆ λ―Έλ§ κ°μ μλμΌλ‘ 1λΆμΌλ‘ μ‘°μ |
-
μ΅λ λ³΄κ΄ κ°μ(
MaxCount)λ§ μ μ©λλ€. - λ°±μ
νμΌ μκ°
MaxCountλ₯Ό μ΄κ³Όνλ©΄ κ°μ₯ μ€λλ νμΌλΆν° μμ λλ€. - μκ° κΈ°λ° λ§λ£λ μμΌλ©°, μμνκ² κ°μ κΈ°λ°μΌλ‘ 보κ΄νλ€.
| νλͺ© | κΈ°λ³Έκ° | μ€λͺ |
|---|---|---|
| μ΅λ λ³΄κ΄ κ°μ | 10 | μ μ§ν λ°±μ νμΌ μ |
cb-spider_backup_YYYYMMDD_HHMMSS.db
- μμ:
cb-spider_backup_20260305_180000.db - νμΌλͺ (νμμ€ν¬ν)μμΌλ‘ μ λ ¬λμ΄ λ‘ν μ΄μ λλ€.
λͺ¨λ λ°±μ
μ€μ μ setup.envμ νκ²½λ³μλ‘ μ€μ νλ€.
λͺ¨λ μ€μ μ μ νμ¬νμ΄λ€. μ€μ νμ§ μμΌλ©΄ μ€λ₯ μμ΄ κΈ°λ³Έκ°μ΄ μ μ©λλ€.
| νκ²½λ³μ | κΈ°λ³Έκ° | μ€λͺ |
|---|---|---|
SPIDER_BACKUP_ENABLED |
true |
λ°±μ
νμ±ν/λΉνμ±ν (true, false, on, off, 1, 0) |
SPIDER_BACKUP_INTERVAL |
6h |
λ°±μ
μ£ΌκΈ°, Go duration νμ (1h, 30m, 24h λ±) |
SPIDER_BACKUP_DIR |
$CBSPIDER_ROOT/meta_db/backups |
λ°±μ νμΌ μ μ₯ λλ ν 리 |
SPIDER_BACKUP_MAX_COUNT |
10 |
μ΅λ λ³΄κ΄ λ°±μ νμΌ μ |
κΈ°λ³Έ μ€μ (λ³λ μ€μ λΆνμ)
# λͺ¨λ κΈ°λ³Έκ° μ μ©: νμ±ν, 6μκ° κ°κ²©, 10κ° λ³΄κ΄
# νκ²½λ³μ μ€μ μμ΄ μ¬μ© κ°λ₯κ³ λΉλ λ°±μ
export SPIDER_BACKUP_INTERVAL=1h
export SPIDER_BACKUP_MAX_COUNT=24μΌ 1ν λ°±μ
export SPIDER_BACKUP_INTERVAL=24h
export SPIDER_BACKUP_MAX_COUNT=7λ°±μ λΉνμ±ν
export SPIDER_BACKUP_ENABLED=falseMeta DB(cb-spider.db)κ° νΌμλκ±°λ μμ λ κ²½μ°, κ°μ₯ μ΅μ λ°±μ
μΌλ‘ 볡μνλ€:
Step 1. CB-Spider μλ²λ₯Ό μ€μ§νλ€.
Step 2. (μ ν) νΌμλ DB νμΌμ μ΄λ λλ μ΄λ¦ λ³κ²½νλ€:
$ mv meta_db/cb-spider.db meta_db/cb-spider.db.corrupted
Step 3. μ΅μ λ°±μ
νμΌμ μ΄μ DBλ‘ λ³΅μ¬νλ€:
$ cp meta_db/backups/cb-spider_backup_20260305_180000.db meta_db/cb-spider.db
Step 4. CB-Spider μλ²λ₯Ό μ¬μμνλ€.
μ€μ: SQLiteκ° νμΌ μμ€ μ κΈμ μ¬μ©νλ―λ‘, DB νμΌ κ΅μ²΄ μ μ λ°λμ μλ²λ₯Ό μ€μ§ν΄μΌ νλ€.
# μκ°μμΌλ‘ λ°±μ
λͺ©λ‘ νμΈ (μ΅μ μ΄ λ§μ§λ§)
$ ls -lt meta_db/backups/νμΌλͺ μ ν¬ν¨λ νμμ€ν¬νκ° κ°μ₯ μ΅κ·ΌμΈ νμΌμ΄ μ΅μ λ°±μ μ΄λ€.
λͺ¨λ λ°±μ
μμ
μ cb-logλ₯Ό ν΅ν΄ [MSB] (Meta Store Backup) μ λμ΄λ‘ λ‘κ·Έλ₯Ό κΈ°λ‘νλ€:
| λ‘κ·Έ λ 벨 | λ©μμ§ | μ€λͺ |
|---|---|---|
| INFO | [MSB] Meta DB Backup Scheduler started. |
μ€μΌμ€λ¬ μ΄κΈ°ν |
| INFO | [MSB] Starting meta DB backup... |
λ°±μ μ£ΌκΈ° μμ |
| INFO | [MSB] Meta DB backup completed: <κ²½λ‘> (took <μμμκ°>) |
λ°±μ μ±κ³΅ |
| INFO | [MSB] Deleted old backup: <νμΌλͺ
> |
λ‘ν μ΄μ μ 리 |
| WARN | [MSB] Meta DB file not found: <κ²½λ‘>. Skipping backup. |
μλ³Έ DB μμ |
| ERROR | [MSB] Meta DB backup failed: <μλ¬> |
λ°±μ μ€ν¨ |
| ERROR | [MSB] Backup rotation failed: <μλ¬> |
λ‘ν μ΄μ μ€ν¨ |
apiserver.go (main)
β
βββ LoadBackupConfig() β νκ²½λ³μ μ½κΈ° (backup_config.go)
β
βββ StartBackupScheduler() β λ°±κ·ΈλΌμ΄λ goroutine μμ (backup_scheduler.go)
β
βββ μλ² μμ μ μ¦μ λ°±μ
β
βββ μ£ΌκΈ°μ λ°λ³΅ (time.Ticker)
β
βββ BackupMetaDB() β VACUUM INTO (backup.go)
β
βββ RotateBackups() β MaxCount μ΄κ³Ό μ μ€λλ κ² μμ (backup.go)
| μμ€ νμΌ | μ€λͺ |
|---|---|
info-store/backup_config.go |
μμ ν κΈ°λ³Έκ°μ κ°μ§ μ€μ νμ± |
info-store/backup.go |
ν΅μ¬ λ°±μ λ‘μ§ (VACUUM INTO) λ° λ‘ν μ΄μ |
info-store/backup_scheduler.go |
Graceful shutdownμ μ§μνλ λ°±κ·ΈλΌμ΄λ μ€μΌμ€λ¬ |